phaser/src/plugins/BasePlugin.js
2019-01-15 16:20:22 +00:00

175 lines
6.3 KiB
JavaScript

/**
* @author Richard Davey <rich@photonstorm.com>
* @copyright 2019 Photon Storm Ltd.
* @license {@link https://github.com/photonstorm/phaser3-plugin-template/blob/master/LICENSE|MIT License}
*/
var Class = require('../utils/Class');
/**
* @classdesc
* A Global Plugin is installed just once into the Game owned Plugin Manager.
* It can listen for Game events and respond to them.
*
* @class BasePlugin
* @memberof Phaser.Plugins
* @constructor
* @since 3.8.0
*
* @param {Phaser.Plugins.PluginManager} pluginManager - A reference to the Plugin Manager.
*/
var BasePlugin = new Class({
initialize:
function BasePlugin (pluginManager)
{
/**
* A handy reference to the Plugin Manager that is responsible for this plugin.
* Can be used as a route to gain access to game systems and events.
*
* @name Phaser.Plugins.BasePlugin#pluginManager
* @type {Phaser.Plugins.PluginManager}
* @protected
* @since 3.8.0
*/
this.pluginManager = pluginManager;
/**
* A reference to the Game instance this plugin is running under.
*
* @name Phaser.Plugins.BasePlugin#game
* @type {Phaser.Game}
* @protected
* @since 3.8.0
*/
this.game = pluginManager.game;
/**
* A reference to the Scene that has installed this plugin.
* Only set if it's a Scene Plugin, otherwise `null`.
* This property is only set when the plugin is instantiated and added to the Scene, not before.
* You cannot use it during the `init` method, but you can during the `boot` method.
*
* @name Phaser.Plugins.BasePlugin#scene
* @type {?Phaser.Scene}
* @protected
* @since 3.8.0
*/
this.scene;
/**
* A reference to the Scene Systems of the Scene that has installed this plugin.
* Only set if it's a Scene Plugin, otherwise `null`.
* This property is only set when the plugin is instantiated and added to the Scene, not before.
* You cannot use it during the `init` method, but you can during the `boot` method.
*
* @name Phaser.Plugins.BasePlugin#systems
* @type {?Phaser.Scenes.Systems}
* @protected
* @since 3.8.0
*/
this.systems;
},
/**
* Called by the PluginManager when this plugin is first instantiated.
* It will never be called again on this instance.
* In here you can set-up whatever you need for this plugin to run.
* If a plugin is set to automatically start then `BasePlugin.start` will be called immediately after this.
*
* @method Phaser.Plugins.BasePlugin#init
* @since 3.8.0
*
* @param {?any} [data] - A value specified by the user, if any, from the `data` property of the plugin's configuration object (if started at game boot) or passed in the PluginManager's `install` method (if started manually).
*/
init: function ()
{
},
/**
* Called by the PluginManager when this plugin is started.
* If a plugin is stopped, and then started again, this will get called again.
* Typically called immediately after `BasePlugin.init`.
*
* @method Phaser.Plugins.BasePlugin#start
* @since 3.8.0
*/
start: function ()
{
// Here are the game-level events you can listen to.
// At the very least you should offer a destroy handler for when the game closes down.
// var eventEmitter = this.game.events;
// eventEmitter.once('destroy', this.gameDestroy, this);
// eventEmitter.on('pause', this.gamePause, this);
// eventEmitter.on('resume', this.gameResume, this);
// eventEmitter.on('resize', this.gameResize, this);
// eventEmitter.on('prestep', this.gamePreStep, this);
// eventEmitter.on('step', this.gameStep, this);
// eventEmitter.on('poststep', this.gamePostStep, this);
// eventEmitter.on('prerender', this.gamePreRender, this);
// eventEmitter.on('postrender', this.gamePostRender, this);
},
/**
* Called by the PluginManager when this plugin is stopped.
* The game code has requested that your plugin stop doing whatever it does.
* It is now considered as 'inactive' by the PluginManager.
* Handle that process here (i.e. stop listening for events, etc)
* If the plugin is started again then `BasePlugin.start` will be called again.
*
* @method Phaser.Plugins.BasePlugin#stop
* @since 3.8.0
*/
stop: function ()
{
},
/**
* If this is a Scene Plugin (i.e. installed into a Scene) then this method is called when the Scene boots.
* By this point the plugin properties `scene` and `systems` will have already been set.
* In here you can listen for Scene events and set-up whatever you need for this plugin to run.
*
* @method Phaser.Plugins.BasePlugin#boot
* @since 3.8.0
*/
boot: function ()
{
// Here are the Scene events you can listen to.
// At the very least you should offer a destroy handler for when the Scene closes down.
// var eventEmitter = this.systems.events;
// eventEmitter.once('destroy', this.sceneDestroy, this);
// eventEmitter.on('start', this.sceneStart, this);
// eventEmitter.on('preupdate', this.scenePreUpdate, this);
// eventEmitter.on('update', this.sceneUpdate, this);
// eventEmitter.on('postupdate', this.scenePostUpdate, this);
// eventEmitter.on('pause', this.scenePause, this);
// eventEmitter.on('resume', this.sceneResume, this);
// eventEmitter.on('sleep', this.sceneSleep, this);
// eventEmitter.on('wake', this.sceneWake, this);
// eventEmitter.on('shutdown', this.sceneShutdown, this);
// eventEmitter.on('destroy', this.sceneDestroy, this);
},
/**
* Game instance has been destroyed.
* You must release everything in here, all references, all objects, free it all up.
*
* @method Phaser.Plugins.BasePlugin#destroy
* @since 3.8.0
*/
destroy: function ()
{
this.pluginManager = null;
this.game = null;
this.scene = null;
this.systems = null;
}
});
module.exports = BasePlugin;