phaser3-rex-plugins
Version:
98 lines (81 loc) • 3.02 kB
JavaScript
export default {
addGameObjectManager(config) {
// Register GameObjectManager
var sys = this.sys;
sys.addGameObjectManager(config);
var { name, defaultLayer, commands = {} } = config;
// Add custom commands
sys.getGameObjectManager(name).commands = commands;
// Add createGameObject command
var createGameObjectCallback = function (config, manager) {
var { id, layer = defaultLayer } = config;
delete config.id;
delete config.layer;
sys.createGameObject(name, id, config);
// Execute next command
if (layer) {
var layerManager = sys.getGameObjectManager('layer');
if (layerManager) {
var gameObject = sys.getGameObject(name, id);
layerManager.addToLayer(layer, gameObject);
}
}
}
this.addCommand(name, createGameObjectCallback, null);
return this;
},
_setGOProperty(config, manager) {
var { id } = config;
delete config.id;
var goType = this.sys.getGameObjectManagerName(id);
if (!goType) {
return;
}
for (var prop in config) {
var value = manager.evalExpression(config[prop]);
this.sys.setGameObjectProperty(goType, id, prop, value);
}
// Execute next command
},
_easeGOProperty(config, manager) {
var { id, duration, ease, repeat, yoyo, wait = true } = config;
delete config.id;
delete config.duration;
delete config.ease;
delete config.repeat;
delete config.yoyo;
delete config.wait;
var goType = this.sys.getGameObjectManagerName(id);
if (!goType) {
return;
}
var waitProperty;
for (var prop in config) {
var value = manager.evalExpression(config[prop]);
this.sys.easeGameObjectProperty(goType, id, prop, value, duration, ease, repeat, yoyo);
waitProperty = prop;
}
if (wait && waitProperty) {
return this.sys.waitEventManager.waitGameObjectTweenComplete(goType, id, waitProperty);
}
// Execute next command
},
_destroyGO({ id, wait = false } = {}, manager) {
var goType = this.sys.getGameObjectManagerName(id);
if (!goType) {
return;
}
this.sys.destroyGameObject(goType, id);
if (wait) {
return this.sys.waitEventManager.waitGameObjectDestroy(goType, id);
}
},
_runGOMethod(config, manager) {
var goType = this.sys.getGameObjectManagerName(id);
if (!goType) {
return;
}
this.sys.callGameObjectMethod(goType, config.id, config.methodName, ...config.parameters);
// Execute next command
},
}