forked from phaserjs/phaser
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBasePlugin.js
More file actions
131 lines (118 loc) · 4.76 KB
/
Copy pathBasePlugin.js
File metadata and controls
131 lines (118 loc) · 4.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/**
* @author Richard Davey <rich@phaser.io>
* @copyright 2013-2026 Phaser Studio Inc.
* @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.
*
* Custom global plugins should extend this class and implement any needed lifecycle
* methods: `init` (called when the plugin is first created), `start` (called when the
* plugin is started), `stop` (called when the plugin is stopped), and `destroy` (called
* when the Game shuts down).
*
* @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;
},
/**
* The PluginManager calls this method on a Global Plugin when the 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.
* On a Scene Plugin, this method is never called. Use {@link Phaser.Plugins.ScenePlugin#boot} instead.
*
* @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 ()
{
},
/**
* The PluginManager calls this method on a Global Plugin when the plugin is started.
* If a plugin is stopped, and then started again, this will get called again.
* Typically called immediately after `BasePlugin.init`.
* On a Scene Plugin, this method is never called.
*
* @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);
},
/**
* The PluginManager calls this method on a Global Plugin when the 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.
* On a Scene Plugin, this method is never called.
*
* @method Phaser.Plugins.BasePlugin#stop
* @since 3.8.0
*/
stop: function ()
{
},
/**
* Called by the PluginManager when this plugin is being destroyed. This happens either
* when the Game shuts down or when the plugin is explicitly removed from the PluginManager.
* It nulls out all internal references to the game, scene, and plugin manager to prevent
* memory leaks. Override this method in your own plugin to release any resources it holds.
*
* @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;