mirror of
https://github.com/tiennm99/try-superpowers.git
synced 2026-08-09 00:26:45 +00:00
fix: use Phaser shutdown event for listener cleanup
Phaser's game.destroy() calls shutdown() on scenes, not destroy(). The old destroy() override was never called, causing stale event listeners to persist and throw errors in React StrictMode. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -41,6 +41,15 @@ export class GameScene extends Phaser.Scene {
|
||||
this.shuffleHandler = () => this.handleShuffle();
|
||||
this.stateManager.on("hint", this.hintHandler);
|
||||
this.stateManager.on("shuffle", this.shuffleHandler);
|
||||
|
||||
// Clean up listeners on scene shutdown (called by game.destroy)
|
||||
this.events.on("shutdown", () => {
|
||||
if (this.timerEvent) {
|
||||
this.timerEvent.destroy();
|
||||
}
|
||||
this.stateManager.off("hint", this.hintHandler);
|
||||
this.stateManager.off("shuffle", this.shuffleHandler);
|
||||
});
|
||||
}
|
||||
|
||||
private renderBoard(): void {
|
||||
@@ -313,9 +322,10 @@ export class GameScene extends Phaser.Scene {
|
||||
this.renderBoard();
|
||||
}
|
||||
|
||||
destroy(): void {
|
||||
shutdown(): void {
|
||||
if (this.timerEvent) {
|
||||
this.timerEvent.destroy();
|
||||
this.timerEvent = null;
|
||||
}
|
||||
if (this.stateManager) {
|
||||
this.stateManager.off("hint", this.hintHandler);
|
||||
|
||||
Reference in New Issue
Block a user