1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
{
"uid": "2C8E6136K1C73A4120SAF46EC417B6AE1CD7",
"isLoaded": true,
"lastModificationTime": 0,
"items": {
"name": "Object_CommonEvent",
"type": "game_script",
"order": 15,
"content": "# ===================================================================\n#\n# Script: Object_CommonEvent\n#\n# $$COPYRIGHT$$\n#\n# ===================================================================\nclass Object_CommonEvent extends gs.Object_Base\n @objectCodecBlackList = [\"record\", \"commands\", \"parent\"]\n \n ###*\n * Called if this object instance is restored from a data-bundle. It can be used\n * re-assign event-handler, anonymous functions, etc.\n * \n * @method onDataBundleRestore.\n * @param Object data - The data-bundle\n * @param gs.ObjectCodecContext context - The codec-context.\n ###\n onDataBundleRestore: (data, context) ->\n if @rid?\n @record = RecordManager.commonEvents[@rid]\n @interpreter?.object = this\n @commands = @record.commands\n\n \n ###*\n * A common-event object handles a single common event defined in the\n * database. Common events can run parallel to the actual scene content\n * or can be just called from a scene to execute a common piece of logic.\n *\n * @module gs\n * @class Object_CommonEvent\n * @extends gs.Object_Base\n * @memberof gs\n * @constructor\n ###\n constructor: (data) ->\n super()\n \n ###*\n * The common event database record.\n * @property record\n * @type Object\n ###\n @record = null\n \n ###*\n * The behavior component to add common-event specific behavior to the object.\n * @property behavior\n * @type gs.Component_CommonEventBehavior\n ###\n @behavior = new gs.Component_CommonEventBehavior()\n \n ###*\n * An event-emitter to emit events.\n * @property events\n * @type gs.Component_EventEmitter\n ###\n @events = new gs.Component_EventEmitter()\n \n ###*\n * An interpreter to execute the commands of the common event.\n * @property interpreter\n * @type gs.Component_CommandInterpreter\n ###\n @interpreter = null\n \n @events.object = this\n \n if data\n @restore(data)\n else\n @addComponent(@behavior)\n \n ###*\n * Serializes the common-event into a data-bundle.\n *\n * @method toDataBundle\n * @return {Object} The data-bundle.\n ### \n toDataBundle: ->\n @commands = @record.commands\n return {\n behavior: @behavior.toDataBundle(),\n interpreter: @interpreter?.toDataBundle(),\n recordId: @record.index\n }\n \n ###*\n * Restores the common-event from a data-bundle\n *\n * @method restore\n * @param {Object} bundle- The data-bundle.\n ### \n restore: (data) ->\n if @behavior?\n @removeComponent(@behavior)\n \n @behavior = new gs.Component_CommonEventBehavior()\n @addComponent(@behavior)\n @record = RecordManager.commonEvents[data.recordId]\n \n @behavior.restore(data.behavior)\n if data.interpreter and @interpreter\n @interpreter.restore(data.interpreter)\n @interpreter.context.set(@record.id, @record)\n @commands = @record.commands\n \n \n \n \n \ngs.Object_CommonEvent = Object_CommonEvent",
"parentId": "A05E7029K45DBA459BSADF4EEC07A526241A",
"folder": false,
"compiledContent": "var Object_CommonEvent,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\nObject_CommonEvent = (function(superClass) {\n extend(Object_CommonEvent, superClass);\n\n Object_CommonEvent.objectCodecBlackList = [\"record\", \"commands\", \"parent\"];\n\n\n /**\n * Called if this object instance is restored from a data-bundle. It can be used\n * re-assign event-handler, anonymous functions, etc.\n * \n * @method onDataBundleRestore.\n * @param Object data - The data-bundle\n * @param gs.ObjectCodecContext context - The codec-context.\n */\n\n Object_CommonEvent.prototype.onDataBundleRestore = function(data, context) {\n var ref;\n if (this.rid != null) {\n this.record = RecordManager.commonEvents[this.rid];\n if ((ref = this.interpreter) != null) {\n ref.object = this;\n }\n return this.commands = this.record.commands;\n }\n };\n\n\n /**\n * A common-event object handles a single common event defined in the\n * database. Common events can run parallel to the actual scene content\n * or can be just called from a scene to execute a common piece of logic.\n *\n * @module gs\n * @class Object_CommonEvent\n * @extends gs.Object_Base\n * @memberof gs\n * @constructor\n */\n\n function Object_CommonEvent(data) {\n Object_CommonEvent.__super__.constructor.call(this);\n\n /**\n * The common event database record.\n * @property record\n * @type Object\n */\n this.record = null;\n\n /**\n * The behavior component to add common-event specific behavior to the object.\n * @property behavior\n * @type gs.Component_CommonEventBehavior\n */\n this.behavior = new gs.Component_CommonEventBehavior();\n\n /**\n * An event-emitter to emit events.\n * @property events\n * @type gs.Component_EventEmitter\n */\n this.events = new gs.Component_EventEmitter();\n\n /**\n * An interpreter to execute the commands of the common event.\n * @property interpreter\n * @type gs.Component_CommandInterpreter\n */\n this.interpreter = null;\n this.events.object = this;\n if (data) {\n this.restore(data);\n } else {\n this.addComponent(this.behavior);\n }\n }\n\n\n /**\n * Serializes the common-event into a data-bundle.\n *\n * @method toDataBundle\n * @return {Object} The data-bundle.\n */\n\n Object_CommonEvent.prototype.toDataBundle = function() {\n var ref;\n this.commands = this.record.commands;\n return {\n behavior: this.behavior.toDataBundle(),\n interpreter: (ref = this.interpreter) != null ? ref.toDataBundle() : void 0,\n recordId: this.record.index\n };\n };\n\n\n /**\n * Restores the common-event from a data-bundle\n *\n * @method restore\n * @param {Object} bundle- The data-bundle.\n */\n\n Object_CommonEvent.prototype.restore = function(data) {\n if (this.behavior != null) {\n this.removeComponent(this.behavior);\n }\n this.behavior = new gs.Component_CommonEventBehavior();\n this.addComponent(this.behavior);\n this.record = RecordManager.commonEvents[data.recordId];\n this.behavior.restore(data.behavior);\n if (data.interpreter && this.interpreter) {\n this.interpreter.restore(data.interpreter);\n this.interpreter.context.set(this.record.id, this.record);\n return this.commands = this.record.commands;\n }\n };\n\n return Object_CommonEvent;\n\n})(gs.Object_Base);\n\ngs.Object_CommonEvent = Object_CommonEvent;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsa0JBQUE7RUFBQTs7O0FBQU07OztFQUNGLGtCQUFDLENBQUEsb0JBQUQsR0FBd0IsQ0FBQyxRQUFELEVBQVcsVUFBWCxFQUF1QixRQUF2Qjs7O0FBRXhCOzs7Ozs7Ozs7K0JBUUEsbUJBQUEsR0FBcUIsU0FBQyxJQUFELEVBQU8sT0FBUDtBQUNqQixRQUFBO0lBQUEsSUFBRyxnQkFBSDtNQUNJLElBQUMsQ0FBQSxNQUFELEdBQVUsYUFBYSxDQUFDLFlBQWEsQ0FBQSxJQUFDLENBQUEsR0FBRDs7V0FDekIsQ0FBRSxNQUFkLEdBQXVCOzthQUN2QixJQUFDLENBQUEsUUFBRCxHQUFZLElBQUMsQ0FBQSxNQUFNLENBQUMsU0FIeEI7O0VBRGlCOzs7QUFPckI7Ozs7Ozs7Ozs7OztFQVdhLDRCQUFDLElBQUQ7SUFDVCxrREFBQTs7QUFFQTs7Ozs7SUFLQSxJQUFDLENBQUEsTUFBRCxHQUFVOztBQUVWOzs7OztJQUtBLElBQUMsQ0FBQSxRQUFELEdBQWdCLElBQUEsRUFBRSxDQUFDLDZCQUFILENBQUE7O0FBRWhCOzs7OztJQUtBLElBQUMsQ0FBQSxNQUFELEdBQWMsSUFBQSxFQUFFLENBQUMsc0JBQUgsQ0FBQTs7QUFFZDs7Ozs7SUFLQSxJQUFDLENBQUEsV0FBRCxHQUFlO0lBRWYsSUFBQyxDQUFBLE1BQU0sQ0FBQyxNQUFSLEdBQWlCO0lBRWpCLElBQUcsSUFBSDtNQUNJLElBQUMsQ0FBQSxPQUFELENBQVMsSUFBVCxFQURKO0tBQUEsTUFBQTtNQUdJLElBQUMsQ0FBQSxZQUFELENBQWMsSUFBQyxDQUFBLFFBQWYsRUFISjs7RUFqQ1M7OztBQXNDYjs7Ozs7OzsrQkFNQSxZQUFBLEdBQWMsU0FBQTtBQUNWLFFBQUE7SUFBQSxJQUFDLENBQUEsUUFBRCxHQUFZLElBQUMsQ0FBQSxNQUFNLENBQUM7QUFDcEIsV0FBTztNQUNILFFBQUEsRUFBVSxJQUFDLENBQUEsUUFBUSxDQUFDLFlBQVYsQ0FBQSxDQURQO01BRUgsV0FBQSx3Q0FBeUIsQ0FBRSxZQUFkLENBQUEsVUFGVjtNQUdILFFBQUEsRUFBVSxJQUFDLENBQUEsTUFBTSxDQUFDLEtBSGY7O0VBRkc7OztBQVFkOzs7Ozs7OytCQU1BLE9BQUEsR0FBUyxTQUFDLElBQUQ7SUFDTCxJQUFHLHFCQUFIO01BQ0ksSUFBQyxDQUFBLGVBQUQsQ0FBaUIsSUFBQyxDQUFBLFFBQWxCLEVBREo7O0lBR0EsSUFBQyxDQUFBLFFBQUQsR0FBZ0IsSUFBQSxFQUFFLENBQUMsNkJBQUgsQ0FBQTtJQUNoQixJQUFDLENBQUEsWUFBRCxDQUFjLElBQUMsQ0FBQSxRQUFmO0lBQ0EsSUFBQyxDQUFBLE1BQUQsR0FBVSxhQUFhLENBQUMsWUFBYSxDQUFBLElBQUksQ0FBQyxRQUFMO0lBRXJDLElBQUMsQ0FBQSxRQUFRLENBQUMsT0FBVixDQUFrQixJQUFJLENBQUMsUUFBdkI7SUFDQSxJQUFHLElBQUksQ0FBQyxXQUFMLElBQXFCLElBQUMsQ0FBQSxXQUF6QjtNQUNJLElBQUMsQ0FBQSxXQUFXLENBQUMsT0FBYixDQUFxQixJQUFJLENBQUMsV0FBMUI7TUFDQSxJQUFDLENBQUEsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFyQixDQUF5QixJQUFDLENBQUEsTUFBTSxDQUFDLEVBQWpDLEVBQXFDLElBQUMsQ0FBQSxNQUF0QzthQUNBLElBQUMsQ0FBQSxRQUFELEdBQVksSUFBQyxDQUFBLE1BQU0sQ0FBQyxTQUh4Qjs7RUFUSzs7OztHQXZGb0IsRUFBRSxDQUFDOztBQXlHcEMsRUFBRSxDQUFDLGtCQUFILEdBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4jXG4jICAgU2NyaXB0OiBPYmplY3RfQ29tbW9uRXZlbnRcbiNcbiMgICAkJENPUFlSSUdIVCQkXG4jXG4jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmNsYXNzIE9iamVjdF9Db21tb25FdmVudCBleHRlbmRzIGdzLk9iamVjdF9CYXNlXG4gICAgQG9iamVjdENvZGVjQmxhY2tMaXN0ID0gW1wicmVjb3JkXCIsIFwiY29tbWFuZHNcIiwgXCJwYXJlbnRcIl1cbiAgICBcbiAgICAjIyMqXG4gICAgKiBDYWxsZWQgaWYgdGhpcyBvYmplY3QgaW5zdGFuY2UgaXMgcmVzdG9yZWQgZnJvbSBhIGRhdGEtYnVuZGxlLiBJdCBjYW4gYmUgdXNlZFxuICAgICogcmUtYXNzaWduIGV2ZW50LWhhbmRsZXIsIGFub255bW91cyBmdW5jdGlvbnMsIGV0Yy5cbiAgICAqIFxuICAgICogQG1ldGhvZCBvbkRhdGFCdW5kbGVSZXN0b3JlLlxuICAgICogQHBhcmFtIE9iamVjdCBkYXRhIC0gVGhlIGRhdGEtYnVuZGxlXG4gICAgKiBAcGFyYW0gZ3MuT2JqZWN0Q29kZWNDb250ZXh0IGNvbnRleHQgLSBUaGUgY29kZWMtY29udGV4dC5cbiAgICAjIyNcbiAgICBvbkRhdGFCdW5kbGVSZXN0b3JlOiAoZGF0YSwgY29udGV4dCkgLT5cbiAgICAgICAgaWYgQHJpZD9cbiAgICAgICAgICAgIEByZWNvcmQgPSBSZWNvcmRNYW5hZ2VyLmNvbW1vbkV2ZW50c1tAcmlkXVxuICAgICAgICAgICAgQGludGVycHJldGVyPy5vYmplY3QgPSB0aGlzXG4gICAgICAgICAgICBAY29tbWFuZHMgPSBAcmVjb3JkLmNvbW1hbmRzXG5cbiAgICAgICAgXG4gICAgIyMjKlxuICAgICogQSBjb21tb24tZXZlbnQgb2JqZWN0IGhhbmRsZXMgYSBzaW5nbGUgY29tbW9uIGV2ZW50IGRlZmluZWQgaW4gdGhlXG4gICAgKiBkYXRhYmFzZS4gQ29tbW9uIGV2ZW50cyBjYW4gcnVuIHBhcmFsbGVsIHRvIHRoZSBhY3R1YWwgc2NlbmUgY29udGVudFxuICAgICogb3IgY2FuIGJlIGp1c3QgY2FsbGVkIGZyb20gYSBzY2VuZSB0byBleGVjdXRlIGEgY29tbW9uIHBpZWNlIG9mIGxvZ2ljLlxuICAgICpcbiAgICAqIEBtb2R1bGUgZ3NcbiAgICAqIEBjbGFzcyBPYmplY3RfQ29tbW9uRXZlbnRcbiAgICAqIEBleHRlbmRzIGdzLk9iamVjdF9CYXNlXG4gICAgKiBAbWVtYmVyb2YgZ3NcbiAgICAqIEBjb25zdHJ1Y3RvclxuICAgICMjI1xuICAgIGNvbnN0cnVjdG9yOiAoZGF0YSkgLT5cbiAgICAgICAgc3VwZXIoKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIFRoZSBjb21tb24gZXZlbnQgZGF0YWJhc2UgcmVjb3JkLlxuICAgICAgICAqIEBwcm9wZXJ0eSByZWNvcmRcbiAgICAgICAgKiBAdHlwZSBPYmplY3RcbiAgICAgICAgIyMjXG4gICAgICAgIEByZWNvcmQgPSBudWxsXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIGJlaGF2aW9yIGNvbXBvbmVudCB0byBhZGQgY29tbW9uLWV2ZW50IHNwZWNpZmljIGJlaGF2aW9yIHRvIHRoZSBvYmplY3QuXG4gICAgICAgICogQHByb3BlcnR5IGJlaGF2aW9yXG4gICAgICAgICogQHR5cGUgZ3MuQ29tcG9uZW50X0NvbW1vbkV2ZW50QmVoYXZpb3JcbiAgICAgICAgIyMjXG4gICAgICAgIEBiZWhhdmlvciA9IG5ldyBncy5Db21wb25lbnRfQ29tbW9uRXZlbnRCZWhhdmlvcigpXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQW4gZXZlbnQtZW1pdHRlciB0byBlbWl0IGV2ZW50cy5cbiAgICAgICAgKiBAcHJvcGVydHkgZXZlbnRzXG4gICAgICAgICogQHR5cGUgZ3MuQ29tcG9uZW50X0V2ZW50RW1pdHRlclxuICAgICAgICAjIyNcbiAgICAgICAgQGV2ZW50cyA9IG5ldyBncy5Db21wb25lbnRfRXZlbnRFbWl0dGVyKClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBBbiBpbnRlcnByZXRlciB0byBleGVjdXRlIHRoZSBjb21tYW5kcyBvZiB0aGUgY29tbW9uIGV2ZW50LlxuICAgICAgICAqIEBwcm9wZXJ0eSBpbnRlcnByZXRlclxuICAgICAgICAqIEB0eXBlIGdzLkNvbXBvbmVudF9Db21tYW5kSW50ZXJwcmV0ZXJcbiAgICAgICAgIyMjXG4gICAgICAgIEBpbnRlcnByZXRlciA9IG51bGxcbiAgICAgICAgXG4gICAgICAgIEBldmVudHMub2JqZWN0ID0gdGhpc1xuICAgICAgICBcbiAgICAgICAgaWYgZGF0YVxuICAgICAgICAgICAgQHJlc3RvcmUoZGF0YSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgQGFkZENvbXBvbmVudChAYmVoYXZpb3IpXG4gICAgICAgIFxuICAgICMjIypcbiAgICAqIFNlcmlhbGl6ZXMgdGhlIGNvbW1vbi1ldmVudCBpbnRvIGEgZGF0YS1idW5kbGUuXG4gICAgKlxuICAgICogQG1ldGhvZCB0b0RhdGFCdW5kbGVcbiAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIGRhdGEtYnVuZGxlLlxuICAgICMjIyAgXG4gICAgdG9EYXRhQnVuZGxlOiAtPlxuICAgICAgICBAY29tbWFuZHMgPSBAcmVjb3JkLmNvbW1hbmRzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiZWhhdmlvcjogQGJlaGF2aW9yLnRvRGF0YUJ1bmRsZSgpLFxuICAgICAgICAgICAgaW50ZXJwcmV0ZXI6IEBpbnRlcnByZXRlcj8udG9EYXRhQnVuZGxlKCksXG4gICAgICAgICAgICByZWNvcmRJZDogQHJlY29yZC5pbmRleFxuICAgICAgICB9XG4gICAgICAgXG4gICAgIyMjKlxuICAgICogUmVzdG9yZXMgdGhlIGNvbW1vbi1ldmVudCBmcm9tIGEgZGF0YS1idW5kbGVcbiAgICAqXG4gICAgKiBAbWV0aG9kIHJlc3RvcmVcbiAgICAqIEBwYXJhbSB7T2JqZWN0fSBidW5kbGUtIFRoZSBkYXRhLWJ1bmRsZS5cbiAgICAjIyMgICAgIFxuICAgIHJlc3RvcmU6IChkYXRhKSAtPlxuICAgICAgICBpZiBAYmVoYXZpb3I/XG4gICAgICAgICAgICBAcmVtb3ZlQ29tcG9uZW50KEBiZWhhdmlvcilcbiAgICAgICAgICAgIFxuICAgICAgICBAYmVoYXZpb3IgPSBuZXcgZ3MuQ29tcG9uZW50X0NvbW1vbkV2ZW50QmVoYXZpb3IoKVxuICAgICAgICBAYWRkQ29tcG9uZW50KEBiZWhhdmlvcilcbiAgICAgICAgQHJlY29yZCA9IFJlY29yZE1hbmFnZXIuY29tbW9uRXZlbnRzW2RhdGEucmVjb3JkSWRdXG4gICAgICAgIFxuICAgICAgICBAYmVoYXZpb3IucmVzdG9yZShkYXRhLmJlaGF2aW9yKVxuICAgICAgICBpZiBkYXRhLmludGVycHJldGVyIGFuZCBAaW50ZXJwcmV0ZXJcbiAgICAgICAgICAgIEBpbnRlcnByZXRlci5yZXN0b3JlKGRhdGEuaW50ZXJwcmV0ZXIpXG4gICAgICAgICAgICBAaW50ZXJwcmV0ZXIuY29udGV4dC5zZXQoQHJlY29yZC5pZCwgQHJlY29yZClcbiAgICAgICAgICAgIEBjb21tYW5kcyA9IEByZWNvcmQuY29tbWFuZHNcbiAgICAgICBcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgXG5ncy5PYmplY3RfQ29tbW9uRXZlbnQgPSBPYmplY3RfQ29tbW9uRXZlbnQiXX0=\n//# sourceURL=Object_CommonEvent_154.js"
},
"summary": [
"name",
"type",
"order"
]
}
|