/** * Interface of sub-systems of game. * @interface */ class System { /** * @constructor */ constructor() { /** * Name of this system * @type {String} * @readonly */ this.name = ''; /** * Reference to the owner game instance * @type {Game} * @readonly */ this.game = null; } /** * Callback that will be invoked when owner game is awake. * @method awake * @memberof System# * @param {Object} settings Settings passed to the game */ awake(settings) {} /* eslint no-unused-vars:0 */ /** * Callback that will be invoked each idle frame(animation frame). * @method update * @memberof System# * @param {Number} dt Delta time in millisecond * @param {Number} dtSec Delta time in second */ update(dt, dtSec) {} /* eslint no-unused-vars:0 */ /** * Callback that will be invoked each fixed frame(based on Game#desiredFPS). * @method fixedUpdate * @memberof System# * @param {Number} dt Delta time in millisecond * @param {Number} dtSec Delta time in second */ fixedUpdate(dt, dtSec) {} /* eslint no-unused-vars:0 */ /** * Callback that will be invoked when owner game is freeze. * @method freeze * @memberof System# */ freeze() {} /** * Callback that will be invoked on each entity spawn. * @method onEntitySpawn * @memberof System# * @param {Entity} ent Entity instance */ onEntitySpawn(ent) {} /* eslint no-unused-vars:0 */ /** * Callback that will be invoked on each entity remove. * @method onEntityRemove * @memberof System# * @param {Entity} ent Entity instance */ onEntityRemove(ent) {} /* eslint no-unused-vars:0 */ /** * Callback that will be invoked when an entity changes its tag. * @method onEntityTagChange * @memberof System# * @param {Entity} ent Entity instance * @param {String} tag New tag */ onEntityTagChange(ent, tag) {} /* eslint no-unused-vars:0 */ /** * Callback that will be invoked when owner game will pause. * @method onPause * @memberof System# */ onPause() {} /** * Callback that will be invoked when owner game will resume from pause. * @method onResume * @memberof System# */ onResume() {} } module.exports = System;