From 3e985efb371da5983f626932a285e5a2fa1c8e67 Mon Sep 17 00:00:00 2001 From: Andre Padez Date: Tue, 4 Nov 2025 18:37:03 +0000 Subject: [PATCH] Fix ship explosion rendering issue - Fixed ship state check to use parameter directly instead of ref - Properly handle explosion time fallback when undefined - Ship explosion now correctly renders when collision occurs --- src/useBoard/useBoard.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/useBoard/useBoard.ts b/src/useBoard/useBoard.ts index 840c26f..adb6813 100644 --- a/src/useBoard/useBoard.ts +++ b/src/useBoard/useBoard.ts @@ -75,6 +75,7 @@ export function useBoard() { }, []); const renderBoard = (playerPosition: PlayerPosition, letters: any = [], shipState: ShipState = "normal", shipExplosionTime?: number, gameMode: GameMode = 'letters', lasers: Laser[] = []) => { + // Always update ship explosion time, even if it's 0 if (shipExplosionTime !== undefined) { shipExplosionTimeRef.current = shipExplosionTime; } @@ -93,9 +94,10 @@ export function useBoard() { const spaceshipX = playerPosition.x; const spaceshipY = SPACESHIP_Y; - if (shipStateRef.current === 'exploding') { + if (shipState === 'exploding') { // Enhanced explosion animation - const elapsed = performance.now() - shipExplosionTimeRef.current; + const explosionTime = shipExplosionTime || shipExplosionTimeRef.current || 0; + const elapsed = explosionTime > 0 ? performance.now() - explosionTime : 0; const progress = Math.min(elapsed / 500, 1); // Longer explosion (500ms) ctx.save();