import { Engine, SaveManager, type Camera, type Container, type Renderer, type SceneManager } from '@rpg/engine';

/**
 * Игровой контекст: движок, сохранения, общие для сцен ссылки.
 * Движок ничего не знает об этом классе — он только потребляет его API.
 */
export class Game {
    /** Виртуальное разрешение (пиксель-арт). */
    static readonly VIRTUAL_W = 480;
    static readonly VIRTUAL_H = 270;

    readonly saves: SaveManager;

    constructor(readonly engine: Engine) {
        this.saves = new SaveManager(window.localStorage);
    }

    get scenes(): SceneManager {
        return this.engine.scenes;
    }

    get renderer(): Renderer {
        return this.engine.renderer;
    }

    get camera(): Camera {
        return this.engine.camera;
    }

    get worldRoot(): Container {
        return this.engine.renderer.worldRoot;
    }
}