import type { Screen, ScreenContext } from "./screen"; export class ScreenManager { private currentScreen: Screen; private context: ScreenContext; constructor(initialScreen: Screen) { this.currentScreen = initialScreen; this.context = { navigate: (screen: Screen) => { this.currentScreen = screen; }, }; } renderTop(ctx: CanvasRenderingContext2D) { ctx.clearRect(0, 0, 256, 192); ctx.save(); this.currentScreen.renderTop(ctx); ctx.restore(); } renderBottom(ctx: CanvasRenderingContext2D) { ctx.clearRect(0, 0, 256, 192); ctx.save(); this.currentScreen.renderBottom(ctx); ctx.restore(); } handleTouch(x: number, y: number) { if (this.currentScreen.handleTouch) { this.currentScreen.handleTouch(x, y, this.context); } } }