/
difight
/
ruEngine
Обзор
Документация
Войти
/
difight
/
ruEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
client/src/game/scene/MenuScene.ts
54 строки
2 KB
Andrey Bashkirev
Немного переделал архитектуру
05 авг 2025, 17:15
05 авг 2025, 17:15
144f0db
Код
Авторство
О чём код?
import { Scene } from "../../engine/core/scenes/Scene"; import { UIManager } from "../../engine/core/ui/UIManager"; import { Button } from "../../engine/core/ui/Button"; import { Logger } from "../../engine/utils/Logger"; import { InputManager } from "../../engine/utils/InputManager"; import { KeyboardEvents } from "../../engine/utils/KeyboardEvents"; export class MenuScene extends Scene { private readonly startButton: Button; constructor() { super(UIManager.getInstance()); this.startButton = new Button(300, 250, 200, 60, "Start"); this.startButton.setOnClick(() => { Logger.info("Start button clicked!"); if (typeof window !== 'undefined' && (window as any).engine) { (window as any).engine.changeState('PLAYING'); } else { Logger.error('GameEngine instance not found!'); } }); UIManager.getInstance().registerElement(this.startButton); InputManager.getInstance().registerInteractable(this.startButton); KeyboardEvents.on("keydown:Enter", () => { this.startButton.onClick(); }); } public init(): void { Logger.info('init menu scene'); } public update(deltaTime: number): void { Logger.info('update menu scene:', deltaTime); } public render(): void { Logger.info("render menu scene"); const uiManager = UIManager.getInstance(); if (!uiManager.getContext()) { Logger.error("Canvas context is null in UIManager!"); return; } // Очистка экрана перед рендером this.clearScreen(uiManager.getContext()); // Рендер элементов UI uiManager.render(); } private clearScreen(ctx: CanvasRenderingContext2D): void { ctx.fillStyle = "#000"; ctx.fillRect(0, 0, 800, 600); } }