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);
});
}
}