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-25 16:20:50 +00:00
* @ param { Phaser . Plugins . PluginManager } pluginManager - A reference to the Plugin Manager .
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
2018-07-19 00:21:17 +00:00
*
* @ 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 ) .
2018-05-11 13:06:35 +00:00
* /
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 ;