36 lines
823 B
TypeScript
36 lines
823 B
TypeScript
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);
|
|
}
|
|
}
|
|
}
|