/
difight
/
ruEngine
Обзор
Документация
Войти
/
difight
/
ruEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
client/src/engine/core/scenes/SceneManager.ts
55 строк
2 KB
Andrey Bashkirev
refactor and add readme
30 июл 2025, 19:33
30 июл 2025, 19:33
714c914
Код
Авторство
О чём код?
import { Scene } from "./Scene"; import { Logger } from "../../utils/Logger"; /** * Менеджер сцен. Singleton для управления текущей сценой и их регистрацией. */ export class SceneManager { private static instance: SceneManager; private readonly scenes: Map<string, Scene> = new Map(); private currentScene: Scene | null = null; private constructor() {} /** Получить singleton-экземпляр менеджера сцен */ public static getInstance(): SceneManager { if (!SceneManager.instance) { SceneManager.instance = new SceneManager(); } return SceneManager.instance; } /** * Зарегистрировать сцену * @param name Имя сцены * @param scene Экземпляр сцены */ public registerScene(name: string, scene: Scene): void { this.scenes.set(name, scene); } /** * Переключить текущую сцену * @param name Имя сцены */ public changeState(name: string): void { const scene = this.scenes.get(name); if (!scene) { Logger.error(`Scene "${name}" not registered`); return; } if (this.currentScene) { this.currentScene.update(0); // Вызов update перед выходом } this.currentScene = scene; this.currentScene.init(); // Инициализация новой сцены } /** Получить текущую сцену */ public getCurrentScene(): Scene | null { return this.currentScene; } }