1
|
{"uid":"697FC39AK0958A420CS9073ED0E1B997C3EA","isLoaded":true,"lastModificationTime":0,"items":{"name":"Object_Hotspot","type":"game_script","order":2,"content":"# ===================================================================\n#\n# Script: Object_Hotspot\n#\n# $$COPYRIGHT$$\n#\n# ===================================================================\nclass Object_Hotspot extends ui.Object_UIElement\n Object.defineProperty(Object_Hotspot.prototype, \"selected\",\n set: (v) -> @behavior.selected = v\n get: -> @behavior.selected\n )\n \n ###*\n * A hotspot object to define an area on the screen which can respond\n * to user-actions like mouse/touch actions. A hotspot can have multiple\n * images for different states like hovered, selected, etc.\n *\n * @module ui\n * @class Object_Hotspot\n * @extends ui.Object_UIElement\n * @memberof ui\n * @constructor\n ### \n constructor: (imageName, imageHandling, flipX) ->\n super\n \n ###*\n * The UI object's source rectangle on screen.\n * @property srcRect\n * @type gs.Rect\n ###\n @srcRect = null\n \n ###*\n * The UI object's visual-component to display the game object on screen.\n * @property visual\n * @type gs.Component_Frame\n ###\n @visual = new gs.Component_Sprite()\n \n ###*\n * The object's image-handling.\n * @property imageHandling\n * @type gs.ImageHandling\n ###\n @imageHandling = imageHandling ? 1\n \n ###*\n * A behavior-component to hotspot-specific behavior to the object.\n * @property behavior\n * @type gs.Component_HotspotBehavior\n ###\n @behavior = new gs.Component_HotspotBehavior()\n @behavior.imageHandling = @imageHandling\n \n ###*\n * The UI object's bitmap used for visual presentation.\n * @property bitmap\n * @type gs.Bitmap\n ###\n @bitmap = ResourceManager.getBitmap(\"Graphics/Pictures/#{imageName}\")\n \n if @bitmap?\n if @imageHandling == 1\n @srcRect = new Rect(0, @bitmap.height / 2, @bitmap.width, @bitmap.height / 2)\n else\n @srcRect = new Rect(0, 0, @bitmap.width || 1, @bitmap.height || 1)\n @dstRect.set(0, 0, @srcRect.width || 1, @srcRect.height || 1)\n else\n @srcRect = new Rect(0, 0, 1, 1)\n @dstRect.set(0, 0, 1, 1)\n \n if flipX\n @visual.mirror = yes\n \n @addComponent(@behavior)\n @addComponent(@visual)\n \nui.Object_Hotspot = Object_Hotspot","parentId":"4F9670D7KD392A494FS953DE4377B04AA7A6","folder":false,"compiledContent":"var Object_Hotspot,\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_Hotspot = (function(superClass) {\n extend(Object_Hotspot, superClass);\n\n Object.defineProperty(Object_Hotspot.prototype, \"selected\", {\n set: function(v) {\n return this.behavior.selected = v;\n },\n get: function() {\n return this.behavior.selected;\n }\n });\n\n\n /**\n * A hotspot object to define an area on the screen which can respond\n * to user-actions like mouse/touch actions. A hotspot can have multiple\n * images for different states like hovered, selected, etc.\n *\n * @module ui\n * @class Object_Hotspot\n * @extends ui.Object_UIElement\n * @memberof ui\n * @constructor\n */\n\n function Object_Hotspot(imageName, imageHandling, flipX) {\n Object_Hotspot.__super__.constructor.apply(this, arguments);\n\n /**\n * The UI object's source rectangle on screen.\n * @property srcRect\n * @type gs.Rect\n */\n this.srcRect = null;\n\n /**\n * The UI object's visual-component to display the game object on screen.\n * @property visual\n * @type gs.Component_Frame\n */\n this.visual = new gs.Component_Sprite();\n\n /**\n * The object's image-handling.\n * @property imageHandling\n * @type gs.ImageHandling\n */\n this.imageHandling = imageHandling != null ? imageHandling : 1;\n\n /**\n * A behavior-component to hotspot-specific behavior to the object.\n * @property behavior\n * @type gs.Component_HotspotBehavior\n */\n this.behavior = new gs.Component_HotspotBehavior();\n this.behavior.imageHandling = this.imageHandling;\n\n /**\n * The UI object's bitmap used for visual presentation.\n * @property bitmap\n * @type gs.Bitmap\n */\n this.bitmap = ResourceManager.getBitmap(\"Graphics/Pictures/\" + imageName);\n if (this.bitmap != null) {\n if (this.imageHandling === 1) {\n this.srcRect = new Rect(0, this.bitmap.height / 2, this.bitmap.width, this.bitmap.height / 2);\n } else {\n this.srcRect = new Rect(0, 0, this.bitmap.width || 1, this.bitmap.height || 1);\n }\n this.dstRect.set(0, 0, this.srcRect.width || 1, this.srcRect.height || 1);\n } else {\n this.srcRect = new Rect(0, 0, 1, 1);\n this.dstRect.set(0, 0, 1, 1);\n }\n if (flipX) {\n this.visual.mirror = true;\n }\n this.addComponent(this.behavior);\n this.addComponent(this.visual);\n }\n\n return Object_Hotspot;\n\n})(ui.Object_UIElement);\n\nui.Object_Hotspot = Object_Hotspot;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsY0FBQTtFQUFBOzs7QUFBTTs7O0VBQ0YsTUFBTSxDQUFDLGNBQVAsQ0FBc0IsY0FBYyxDQUFDLFNBQXJDLEVBQWdELFVBQWhELEVBQ0k7SUFBQSxHQUFBLEVBQUssU0FBQyxDQUFEO2FBQU8sSUFBQyxDQUFBLFFBQVEsQ0FBQyxRQUFWLEdBQXFCO0lBQTVCLENBQUw7SUFDQSxHQUFBLEVBQUssU0FBQTthQUFHLElBQUMsQ0FBQSxRQUFRLENBQUM7SUFBYixDQURMO0dBREo7OztBQUtBOzs7Ozs7Ozs7Ozs7RUFXYSx3QkFBQyxTQUFELEVBQVksYUFBWixFQUEyQixLQUEzQjtJQUNULGlEQUFBLFNBQUE7O0FBRUE7Ozs7O0lBS0EsSUFBQyxDQUFBLE9BQUQsR0FBVzs7QUFFWDs7Ozs7SUFLQSxJQUFDLENBQUEsTUFBRCxHQUFjLElBQUEsRUFBRSxDQUFDLGdCQUFILENBQUE7O0FBRWQ7Ozs7O0lBS0EsSUFBQyxDQUFBLGFBQUQsMkJBQWlCLGdCQUFnQjs7QUFFakM7Ozs7O0lBS0EsSUFBQyxDQUFBLFFBQUQsR0FBZ0IsSUFBQSxFQUFFLENBQUMseUJBQUgsQ0FBQTtJQUNoQixJQUFDLENBQUEsUUFBUSxDQUFDLGFBQVYsR0FBMEIsSUFBQyxDQUFBOztBQUUzQjs7Ozs7SUFLQSxJQUFDLENBQUEsTUFBRCxHQUFVLGVBQWUsQ0FBQyxTQUFoQixDQUEwQixvQkFBQSxHQUFxQixTQUEvQztJQUVWLElBQUcsbUJBQUg7TUFDSSxJQUFHLElBQUMsQ0FBQSxhQUFELEtBQWtCLENBQXJCO1FBQ0ksSUFBQyxDQUFBLE9BQUQsR0FBZSxJQUFBLElBQUEsQ0FBSyxDQUFMLEVBQVEsSUFBQyxDQUFBLE1BQU0sQ0FBQyxNQUFSLEdBQWlCLENBQXpCLEVBQTRCLElBQUMsQ0FBQSxNQUFNLENBQUMsS0FBcEMsRUFBMkMsSUFBQyxDQUFBLE1BQU0sQ0FBQyxNQUFSLEdBQWlCLENBQTVELEVBRG5CO09BQUEsTUFBQTtRQUdJLElBQUMsQ0FBQSxPQUFELEdBQWUsSUFBQSxJQUFBLENBQUssQ0FBTCxFQUFRLENBQVIsRUFBVyxJQUFDLENBQUEsTUFBTSxDQUFDLEtBQVIsSUFBaUIsQ0FBNUIsRUFBK0IsSUFBQyxDQUFBLE1BQU0sQ0FBQyxNQUFSLElBQWtCLENBQWpELEVBSG5COztNQUlBLElBQUMsQ0FBQSxPQUFPLENBQUMsR0FBVCxDQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsSUFBQyxDQUFBLE9BQU8sQ0FBQyxLQUFULElBQWtCLENBQXJDLEVBQXdDLElBQUMsQ0FBQSxPQUFPLENBQUMsTUFBVCxJQUFtQixDQUEzRCxFQUxKO0tBQUEsTUFBQTtNQU9JLElBQUMsQ0FBQSxPQUFELEdBQWUsSUFBQSxJQUFBLENBQUssQ0FBTCxFQUFRLENBQVIsRUFBVyxDQUFYLEVBQWMsQ0FBZDtNQUNmLElBQUMsQ0FBQSxPQUFPLENBQUMsR0FBVCxDQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBb0IsQ0FBcEIsRUFBd0IsQ0FBeEIsRUFSSjs7SUFVQSxJQUFHLEtBQUg7TUFDSSxJQUFDLENBQUEsTUFBTSxDQUFDLE1BQVIsR0FBaUIsS0FEckI7O0lBR0EsSUFBQyxDQUFBLFlBQUQsQ0FBYyxJQUFDLENBQUEsUUFBZjtJQUNBLElBQUMsQ0FBQSxZQUFELENBQWMsSUFBQyxDQUFBLE1BQWY7RUFyRFM7Ozs7R0FqQlksRUFBRSxDQUFDOztBQXdFaEMsRUFBRSxDQUFDLGNBQUgsR0FBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiNcbiMgICBTY3JpcHQ6IE9iamVjdF9Ib3RzcG90XG4jXG4jICAgJCRDT1BZUklHSFQkJFxuI1xuIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5jbGFzcyBPYmplY3RfSG90c3BvdCBleHRlbmRzIHVpLk9iamVjdF9VSUVsZW1lbnRcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0X0hvdHNwb3QucHJvdG90eXBlLCBcInNlbGVjdGVkXCIsXG4gICAgICAgIHNldDogKHYpIC0+IEBiZWhhdmlvci5zZWxlY3RlZCA9IHZcbiAgICAgICAgZ2V0OiAtPiBAYmVoYXZpb3Iuc2VsZWN0ZWRcbiAgICApXG4gICAgXG4gICAgIyMjKlxuICAgICogQSBob3RzcG90IG9iamVjdCB0byBkZWZpbmUgYW4gYXJlYSBvbiB0aGUgc2NyZWVuIHdoaWNoIGNhbiByZXNwb25kXG4gICAgKiB0byB1c2VyLWFjdGlvbnMgbGlrZSBtb3VzZS90b3VjaCBhY3Rpb25zLiBBIGhvdHNwb3QgY2FuIGhhdmUgbXVsdGlwbGVcbiAgICAqIGltYWdlcyBmb3IgZGlmZmVyZW50IHN0YXRlcyBsaWtlIGhvdmVyZWQsIHNlbGVjdGVkLCBldGMuXG4gICAgKlxuICAgICogQG1vZHVsZSB1aVxuICAgICogQGNsYXNzIE9iamVjdF9Ib3RzcG90XG4gICAgKiBAZXh0ZW5kcyB1aS5PYmplY3RfVUlFbGVtZW50XG4gICAgKiBAbWVtYmVyb2YgdWlcbiAgICAqIEBjb25zdHJ1Y3RvclxuICAgICMjIyBcbiAgICBjb25zdHJ1Y3RvcjogKGltYWdlTmFtZSwgaW1hZ2VIYW5kbGluZywgZmxpcFgpIC0+XG4gICAgICAgIHN1cGVyXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIFVJIG9iamVjdCdzIHNvdXJjZSByZWN0YW5nbGUgb24gc2NyZWVuLlxuICAgICAgICAqIEBwcm9wZXJ0eSBzcmNSZWN0XG4gICAgICAgICogQHR5cGUgZ3MuUmVjdFxuICAgICAgICAjIyNcbiAgICAgICAgQHNyY1JlY3QgPSBudWxsXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIFVJIG9iamVjdCdzIHZpc3VhbC1jb21wb25lbnQgdG8gZGlzcGxheSB0aGUgZ2FtZSBvYmplY3Qgb24gc2NyZWVuLlxuICAgICAgICAqIEBwcm9wZXJ0eSB2aXN1YWxcbiAgICAgICAgKiBAdHlwZSBncy5Db21wb25lbnRfRnJhbWVcbiAgICAgICAgIyMjXG4gICAgICAgIEB2aXN1YWwgPSBuZXcgZ3MuQ29tcG9uZW50X1Nwcml0ZSgpXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIG9iamVjdCdzIGltYWdlLWhhbmRsaW5nLlxuICAgICAgICAqIEBwcm9wZXJ0eSBpbWFnZUhhbmRsaW5nXG4gICAgICAgICogQHR5cGUgZ3MuSW1hZ2VIYW5kbGluZ1xuICAgICAgICAjIyNcbiAgICAgICAgQGltYWdlSGFuZGxpbmcgPSBpbWFnZUhhbmRsaW5nID8gMVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEEgYmVoYXZpb3ItY29tcG9uZW50IHRvIGhvdHNwb3Qtc3BlY2lmaWMgYmVoYXZpb3IgdG8gdGhlIG9iamVjdC5cbiAgICAgICAgKiBAcHJvcGVydHkgYmVoYXZpb3JcbiAgICAgICAgKiBAdHlwZSBncy5Db21wb25lbnRfSG90c3BvdEJlaGF2aW9yXG4gICAgICAgICMjI1xuICAgICAgICBAYmVoYXZpb3IgPSBuZXcgZ3MuQ29tcG9uZW50X0hvdHNwb3RCZWhhdmlvcigpXG4gICAgICAgIEBiZWhhdmlvci5pbWFnZUhhbmRsaW5nID0gQGltYWdlSGFuZGxpbmdcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBUaGUgVUkgb2JqZWN0J3MgYml0bWFwIHVzZWQgZm9yIHZpc3VhbCBwcmVzZW50YXRpb24uXG4gICAgICAgICogQHByb3BlcnR5IGJpdG1hcFxuICAgICAgICAqIEB0eXBlIGdzLkJpdG1hcFxuICAgICAgICAjIyNcbiAgICAgICAgQGJpdG1hcCA9IFJlc291cmNlTWFuYWdlci5nZXRCaXRtYXAoXCJHcmFwaGljcy9QaWN0dXJlcy8je2ltYWdlTmFtZX1cIilcbiAgICAgICAgXG4gICAgICAgIGlmIEBiaXRtYXA/XG4gICAgICAgICAgICBpZiBAaW1hZ2VIYW5kbGluZyA9PSAxXG4gICAgICAgICAgICAgICAgQHNyY1JlY3QgPSBuZXcgUmVjdCgwLCBAYml0bWFwLmhlaWdodCAvIDIsIEBiaXRtYXAud2lkdGgsIEBiaXRtYXAuaGVpZ2h0IC8gMilcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBAc3JjUmVjdCA9IG5ldyBSZWN0KDAsIDAsIEBiaXRtYXAud2lkdGggfHwgMSwgQGJpdG1hcC5oZWlnaHQgfHwgMSlcbiAgICAgICAgICAgIEBkc3RSZWN0LnNldCgwLCAwLCBAc3JjUmVjdC53aWR0aCB8fCAxLCBAc3JjUmVjdC5oZWlnaHQgfHwgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgQHNyY1JlY3QgPSBuZXcgUmVjdCgwLCAwLCAxLCAxKVxuICAgICAgICAgICAgQGRzdFJlY3Quc2V0KDAsIDAsICAxLCAgMSlcbiAgICAgICAgICAgIFxuICAgICAgICBpZiBmbGlwWFxuICAgICAgICAgICAgQHZpc3VhbC5taXJyb3IgPSB5ZXNcbiAgXG4gICAgICAgIEBhZGRDb21wb25lbnQoQGJlaGF2aW9yKVxuICAgICAgICBAYWRkQ29tcG9uZW50KEB2aXN1YWwpXG4gICAgICAgIFxudWkuT2JqZWN0X0hvdHNwb3QgPSBPYmplY3RfSG90c3BvdCJdfQ==\n//# sourceURL=Object_Hotspot_34.js"},"summary":["name","type","order"]}
|