|
- define([
- 'js/system/events',
- 'js/system/client'
- ], function (
- events,
- client
- ) {
- return {
- type: 'serverActions',
-
- actions: [],
-
- init: function (blueprint) {
- this.hookEvent('onKeyUp', this.onKeyUp.bind(this));
- },
-
- onKeyUp: function (key) {
- this.actions.forEach(function (a) {
- if (a.key !== key)
- return;
-
- client.request({
- cpn: 'player',
- method: 'performAction',
- data: a.action
- });
- }, this);
- },
-
- extend: function (blueprint) {
- if (blueprint.addActions) {
- blueprint.addActions.forEach(function (a) {
- this.actions.spliceWhere(f => f.key === a.key);
-
- let exists = this.actions.some(function (ta) {
- return ((ta.targetId === a.targetId) && (ta.cpn === a.cpn) && (ta.method === a.method));
- });
- if (exists)
- return;
-
- this.actions.push(a);
- }, this);
-
- delete blueprint.addActions;
- }
-
- if (blueprint.removeActions) {
- blueprint.removeActions.forEach(function (a) {
- this.actions.spliceWhere(function (ta) {
- return ((ta.targetId === a.targetId) && (ta.cpn === a.cpn) && (ta.method === a.method));
- });
- }, this);
-
- delete blueprint.removeActions;
- }
-
- events.emit('onGetServerActions', this.actions);
- },
-
- destroy: function () {
- this.unhookEvents();
- }
- };
- });
|