49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import * as PIXI from 'pixi.js';
|
|
import DynamicObject from './DynamicObject';
|
|
|
|
export class Foundation {
|
|
public static _PIXIApp: PIXI.Application;
|
|
public static Master: Master;
|
|
public static WindowHeight: number;
|
|
public static WindowWidth: number;
|
|
public static AspectRatio: number = 4 / 3;
|
|
}
|
|
|
|
export default class Master {
|
|
private DynamicObjects: DynamicObject[];
|
|
private ticker: PIXI.Ticker;
|
|
public stage: PIXI.Container = new PIXI.Container({
|
|
width: Foundation.WindowWidth,
|
|
height: Foundation.WindowHeight,
|
|
});
|
|
|
|
constructor() {
|
|
Foundation.Master = this;
|
|
this.ticker = new PIXI.Ticker();
|
|
this.ticker.maxFPS = 60;
|
|
this.ticker.minFPS = 30;
|
|
this.ticker.add(() => this.update(this.ticker.elapsedMS));
|
|
}
|
|
|
|
public _CreateDynamicObject(object: DynamicObject) {
|
|
this.DynamicObjects.push(object);
|
|
}
|
|
|
|
public _RemoveDynamicObject(object: DynamicObject) {
|
|
this.DynamicObjects.splice(this.DynamicObjects.indexOf(object), 1);
|
|
}
|
|
|
|
public RefreshStage() {
|
|
Foundation._PIXIApp.stage.removeChildren();
|
|
this.stage.width = Foundation.WindowWidth;
|
|
this.stage.height = Foundation.WindowHeight;
|
|
Foundation._PIXIApp.stage.addChild(this.stage);
|
|
}
|
|
|
|
public update(elapsedMS) {
|
|
this.DynamicObjects.forEach((element) => {
|
|
element.update(elapsedMS);
|
|
});
|
|
}
|
|
}
|