feat(02-03): add debounced canvas resize handler

- Add resizeTimeout field for debounce timer
- Add handleResize() method with 150ms debounce
- Add window resize event listener
- Recalculate canvas size on resize
- Trigger renderer.render() after resize

Implements Task 3 of plan 02-03


🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-03-11 02:56:33 +00:00
co-authored by Claude
parent 86f968e5ad
commit 80a9e2b95c
+14
View File
@@ -18,6 +18,7 @@ export class Game {
readonly events: TypedEventEmitter<GameEvents>;
readonly gridManager: GridManager;
readonly renderer: Renderer;
private resizeTimeout: number | undefined;
constructor() {
// Get canvas element
@@ -125,6 +126,7 @@ export class Game {
public setupInputListeners(): void {
this.canvas.addEventListener('click', this.handleClick);
this.canvas.addEventListener('touchstart', this.handleTouch, { passive: true });
window.addEventListener('resize', this.handleResize);
}
/**
@@ -175,4 +177,16 @@ export class Game {
this.gridManager.selectTile(tile);
}
}
/**
* Handle window resize events with debouncing
* Recalculates canvas size and re-renders after debounce delay
*/
private handleResize = (): void => {
clearTimeout(this.resizeTimeout);
this.resizeTimeout = window.setTimeout(() => {
this.setupCanvas();
this.renderer.render();
}, 150); // 150ms debounce per RESEARCH.md
};
}