В классе Application реализуем start, который запустит игру после загрузки ресурсов:
// ...
class Application {
// ...
start() {
this.scene = new this.config["startScene"]();
this.app.stage.addChild(this.scene.container);
}
Можно было бы создать экземпляр класса сцены прямо в start. Но мы хотим, чтобы общий код папки system не зависел от игрового кода папки game. Для этого мы и разделили системный код и код проекта. При этом системный код может узнавать нужные параметры через конфигурацию игры, переданную классу App при запуске приложения. Поэтому вместо прямого создания игровой сцены в Application лучше создать её через параметр конфигурации. Добавьте параметр startScene в конфигурацию игры в Config.js:
import { Game } from "./Game";
export const Config = {
// ...
startScene: Game,
};
Создайте сам класс Game в папке игры /src/scripts/game/Game:
import * as PIXI from "pixi.js";
import { App } from "../system/App";
export class Game {
constructor() {
this.container = new PIXI.Container();
}
}
Класс сцены основан на PIXI.Container. Все объекты сцены будем добавлять в этот контейнер. Сам контейнер сцены мы добавили в основной контейнер app.stage в методе start класса Application.