From 17ff5ddc396e57d318b1d3b8daf047684c5c765c Mon Sep 17 00:00:00 2001 From: "Sebastian Benjamin (aider)" Date: Tue, 3 Jun 2025 18:46:46 -0700 Subject: [PATCH] refactor: Separate collision check and death timer logic in player state --- server/game-modes/battle-royale/game-loop.go | 2 ++ server/game-modes/battle-royale/player-stage.go | 5 ++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/server/game-modes/battle-royale/game-loop.go b/server/game-modes/battle-royale/game-loop.go index ede4b95..10cbb6e 100644 --- a/server/game-modes/battle-royale/game-loop.go +++ b/server/game-modes/battle-royale/game-loop.go @@ -105,6 +105,8 @@ func BroadcastToPresences(tick int64, lobbyState *MatchState, logger *runtime.Lo } } + v.stageState.UpdateDeathTimer(tick) + var tickData = v.stageState.MakeServerTick(tick, newBulletsToBroadcast) data, err := json.Marshal(tickData) diff --git a/server/game-modes/battle-royale/player-stage.go b/server/game-modes/battle-royale/player-stage.go index 31f7197..e8b8d25 100644 --- a/server/game-modes/battle-royale/player-stage.go +++ b/server/game-modes/battle-royale/player-stage.go @@ -75,9 +75,8 @@ func (s *PlayerStageState) UpdateDeathTimer() { s.grazeCol.UpdatePos(STAGE_WIDTH*0.5, STAGE_HEIGHT-STAGE_HEIGHT*0.1) s.updatePlayerPos = true } else if s.deathTimer == PLAYER_ALIVE { - if slices.ContainsFunc(s.bullets, func(b *ffi.Bullet) bool { - return b.CollidesWith(s.hitCol, tick) - }) { + // Use CheckCollisionState to determine if the player should be dead + if s.CheckCollisionState(tick) == PLAYER_DEAD { s.deathTimer = PLAYER_DEATH_TIMER_MAX } }