fix game
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 6m49s
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 6m49s
This commit is contained in:
@@ -32,10 +32,13 @@ type ServerPlayer struct {
|
||||
IsSpectator bool
|
||||
|
||||
// Powerups
|
||||
HasDoubleJump bool // Doppelsprung aktiv?
|
||||
DoubleJumpUsed bool // Wurde zweiter Sprung schon benutzt?
|
||||
HasGodMode bool // Godmode aktiv?
|
||||
GodModeEndTime time.Time // Wann endet Godmode?
|
||||
HasDoubleJump bool // Doppelsprung aktiv?
|
||||
DoubleJumpUsed bool // Wurde zweiter Sprung schon benutzt?
|
||||
DoubleJumpEndTime time.Time // Wann endet Double Jump?
|
||||
HasGodMode bool // Godmode aktiv?
|
||||
GodModeEndTime time.Time // Wann endet Godmode?
|
||||
HasMagnet bool // Magnet aktiv?
|
||||
MagnetEndTime time.Time // Wann endet Magnet?
|
||||
}
|
||||
|
||||
type MovingPlatform struct {
|
||||
@@ -525,11 +528,29 @@ func (r *Room) Update() {
|
||||
// Powerup Kollision prüfen
|
||||
r.CheckPowerupCollision(p)
|
||||
|
||||
// Double Jump Timeout prüfen
|
||||
if p.HasDoubleJump && time.Now().After(p.DoubleJumpEndTime) {
|
||||
p.HasDoubleJump = false
|
||||
p.DoubleJumpUsed = false
|
||||
log.Printf("⚡ Double Jump von %s ist abgelaufen", p.Name)
|
||||
}
|
||||
|
||||
// Godmode Timeout prüfen
|
||||
if p.HasGodMode && time.Now().After(p.GodModeEndTime) {
|
||||
p.HasGodMode = false
|
||||
log.Printf("🛡️ Godmode von %s ist abgelaufen", p.Name)
|
||||
}
|
||||
|
||||
// Magnet Timeout prüfen
|
||||
if p.HasMagnet && time.Now().After(p.MagnetEndTime) {
|
||||
p.HasMagnet = false
|
||||
log.Printf("🧲 Magnet von %s ist abgelaufen", p.Name)
|
||||
}
|
||||
|
||||
// Magnet: Coins im Umkreis automatisch einsammeln
|
||||
if p.HasMagnet {
|
||||
r.ApplyMagnetEffect(p)
|
||||
}
|
||||
}
|
||||
|
||||
// 2b. Distanz-Score updaten
|
||||
@@ -838,22 +859,49 @@ func (r *Room) Broadcast() {
|
||||
DifficultyFactor: r.DifficultyFactor,
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
for id, p := range r.Players {
|
||||
djRemaining := 0.0
|
||||
if p.HasDoubleJump {
|
||||
djRemaining = p.DoubleJumpEndTime.Sub(now).Seconds()
|
||||
if djRemaining < 0 {
|
||||
djRemaining = 0
|
||||
}
|
||||
}
|
||||
godRemaining := 0.0
|
||||
if p.HasGodMode {
|
||||
godRemaining = p.GodModeEndTime.Sub(now).Seconds()
|
||||
if godRemaining < 0 {
|
||||
godRemaining = 0
|
||||
}
|
||||
}
|
||||
magnetRemaining := 0.0
|
||||
if p.HasMagnet {
|
||||
magnetRemaining = p.MagnetEndTime.Sub(now).Seconds()
|
||||
if magnetRemaining < 0 {
|
||||
magnetRemaining = 0
|
||||
}
|
||||
}
|
||||
state.Players[id] = game.PlayerState{
|
||||
ID: id,
|
||||
Name: p.Name,
|
||||
X: p.X,
|
||||
Y: p.Y,
|
||||
VX: p.VX,
|
||||
VY: p.VY,
|
||||
OnGround: p.OnGround,
|
||||
OnWall: p.OnWall,
|
||||
LastInputSeq: p.LastInputSeq,
|
||||
Score: p.Score,
|
||||
IsAlive: p.IsAlive,
|
||||
IsSpectator: p.IsSpectator,
|
||||
HasDoubleJump: p.HasDoubleJump,
|
||||
HasGodMode: p.HasGodMode,
|
||||
ID: id,
|
||||
Name: p.Name,
|
||||
X: p.X,
|
||||
Y: p.Y,
|
||||
VX: p.VX,
|
||||
VY: p.VY,
|
||||
OnGround: p.OnGround,
|
||||
OnWall: p.OnWall,
|
||||
LastInputSeq: p.LastInputSeq,
|
||||
Score: p.Score,
|
||||
IsAlive: p.IsAlive,
|
||||
IsSpectator: p.IsSpectator,
|
||||
HasDoubleJump: p.HasDoubleJump,
|
||||
DoubleJumpUsed: p.DoubleJumpUsed,
|
||||
DoubleJumpRemainingSeconds: djRemaining,
|
||||
HasGodMode: p.HasGodMode,
|
||||
GodModeRemainingSeconds: godRemaining,
|
||||
HasMagnet: p.HasMagnet,
|
||||
MagnetRemainingSeconds: magnetRemaining,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user