Dawn/ts/game/Game.ts
2021-09-25 23:22:05 -07:00

75 lines
1.3 KiB
TypeScript

import { Scene } from "../scene/Scene";
type Time = {
delta:number;
current:number;
last:number;
}
export class Game {
public time:Time;
private scene:Scene|null;
constructor() {
this.time = { delta: 0, current: 0, last: 0 };
this.scene = null;
}
public setScene(scene:Scene) { this.scene = scene; }
private timeUpdate() {
this.time.delta = epochGetDelta();
this.time.current = epochGetCurrent();
this.time.last = epochGetLast();
}
init() {
this.timeUpdate();
}
update() {
this.timeUpdate();
if(this.scene) this.scene.update();
}
dispose() {
if(this.scene) this.scene.dispose();
}
}
// Main Game Instance
let GAME_MAIN:Game|null = null;
/**
* Set the main game instance.
* @param game Game to become the main game instance.
*/
export const gameSetMain = (game:Game) => {
GAME_MAIN = game;
}
/**
* Method that is invoked by C when the game needs to intialize.
*/
const init = () => {
print("init");
// if(!GAME_MAIN) return;
// GAME_MAIN.init();
}
/**
* Method that is invoked by C every single frame.
*/
const update = () => {
if(!GAME_MAIN) return;
GAME_MAIN.update();
}
/**
* Method that is invoked by C when the game needs to stop and clean up.
*/
const dispose = () => {
if(!GAME_MAIN) return;
GAME_MAIN.dispose();
}