72 lines
2.5 KiB
TypeScript
72 lines
2.5 KiB
TypeScript
import * as PIXI from 'pixi.js';
|
|
import GuiObject from './GuiObject';
|
|
import Scene from '../scenes/Scene';
|
|
import { Grid } from './game/Grid';
|
|
import WaveManager from './game/WaveManager';
|
|
import TowerManager from './game/TowerManager';
|
|
import { GameScene } from '../scenes/Game';
|
|
import { AnimationManager } from './game/AnimationManager';
|
|
import NotificationManager from './game/NotificationManager';
|
|
import Gem from './game/Gem';
|
|
import GameAssets from './Assets';
|
|
import { TowerType } from './Definitions';
|
|
import DebrisManager from './game/DebrisManager';
|
|
|
|
export class Engine {
|
|
public static app: PIXI.Application;
|
|
public static GameMaster: GameMaster;
|
|
public static Grid: Grid;
|
|
public static WaveManager: WaveManager;
|
|
public static TowerManager: TowerManager;
|
|
public static AnimationManager: AnimationManager;
|
|
public static NotificationManager: NotificationManager;
|
|
public static DebrisManager: DebrisManager;
|
|
public static GameScene: GameScene;
|
|
public static latestCommit: string;
|
|
public static latestGemId = 0;
|
|
|
|
public static GridCellSize: number = 64;
|
|
public static GridColumns: number = 25;
|
|
public static GridRows: number = 17;
|
|
public static MouseX: number = 0;
|
|
public static MouseY: number = 0;
|
|
|
|
public static TestSuite() {
|
|
let params = new URLSearchParams(location.href);
|
|
if (params.entries().next().value[1] != 'game') return;
|
|
Engine.NotificationManager.Notify('Loaded testing suite.', 'danger');
|
|
let tower = GameAssets.Towers[TowerType.Electric];
|
|
Engine.TowerManager.ToggleChoosingTowerLocation('RESET');
|
|
Engine.TowerManager.PlaceTower(tower, 6, 10, tower.behaviour, true);
|
|
for (let i = 0; i < 29; i++) {
|
|
this.GameScene.MissionStats.giveGem(new Gem(i % 4), true);
|
|
}
|
|
}
|
|
}
|
|
|
|
export default class GameMaster {
|
|
public currentScene: Scene;
|
|
|
|
constructor() {
|
|
Engine.GameMaster = this;
|
|
}
|
|
|
|
public _CreateGuiObject(object: GuiObject) {
|
|
this.currentScene.gui.push(object);
|
|
Engine.GameMaster.currentScene.stage.addChild(object.container);
|
|
}
|
|
|
|
public _RemoveGuiObject(object: GuiObject) {
|
|
this.currentScene.gui.splice(this.currentScene.gui.indexOf(object), 1);
|
|
Engine.GameMaster.currentScene.stage.removeChild(object.container);
|
|
}
|
|
|
|
public changeScene(newScene: Scene) {
|
|
if (this.currentScene) {
|
|
this.currentScene.destroy();
|
|
}
|
|
this.currentScene = newScene;
|
|
this.currentScene.init();
|
|
}
|
|
}
|