2018-05-11 13:06:35 +00:00
|
|
|
/**
|
|
|
|
* @author Richard Davey <rich@photonstorm.com>
|
|
|
|
* @copyright 2018 Photon Storm Ltd.
|
|
|
|
* @license {@link https://github.com/photonstorm/phaser3-plugin-template/blob/master/LICENSE|MIT License}
|
|
|
|
*/
|
|
|
|
|
|
|
|
var Class = require('../utils/Class');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @classdesc
|
2018-05-23 07:09:24 +00:00
|
|
|
* A Global Plugin is installed just once into the Game owned Plugin Manager.
|
|
|
|
* It can listen for Game events and respond to them.
|
2018-05-11 13:06:35 +00:00
|
|
|
*
|
|
|
|
* @class BasePlugin
|
|
|
|
* @memberOf Phaser.Plugins
|
|
|
|
* @constructor
|
|
|
|
* @since 3.8.0
|
|
|
|
*
|
2018-05-23 07:09:24 +00:00
|
|
|
* @param {Phaser.Game} game - A reference to the Game instance this plugin is running under.
|
2018-05-11 13:06:35 +00:00
|
|
|
*/
|
|
|
|
var BasePlugin = new Class({
|
|
|
|
|
|
|
|
initialize:
|
|
|
|
|
2018-05-11 15:00:59 +00:00
|
|
|
function BasePlugin (pluginManager)
|
2018-05-11 13:06:35 +00:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* 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.
|
2018-05-23 07:09:24 +00:00
|
|
|
*
|
2018-05-11 13:06:35 +00:00
|
|
|
* @name Phaser.Plugins.BasePlugin#pluginManager
|
2018-05-17 14:10:23 +00:00
|
|
|
* @type {Phaser.Plugins.PluginManager}
|
2018-05-11 13:06:35 +00:00
|
|
|
* @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
|
2018-05-17 14:10:23 +00:00
|
|
|
* @type {?Phaser.Scenes.Systems}
|
2018-05-11 13:06:35 +00:00
|
|
|
* @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
|
|
|
|
*/
|
|
|
|
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;
|