1
|
{"uid":"DBED0D62K6A03A47C0SA78CEBB556CA2372D","isLoaded":true,"lastModificationTime":0,"items":{"name":"Component_NumberInput","type":"game_script","order":18,"content":"# ===================================================================\n#\n# Script: Component_NumberInput\n#\n# $$COPYRIGHT$$\n#\n# ===================================================================\nclass Component_NumberInput extends gs.Component\n ###*\n * The number-input component defines the logic for the number-input window\n * of the default In-Game UI. \n *\n * @module gs\n * @class Component_NumberInput\n * @extends gs.Component\n * @memberof gs\n * @constructor\n ###\n constructor: (params) ->\n ###*\n * The max. number of digits of the number.\n * @property digits\n * @type number\n ###\n @digits = ui.Component_FormulaHandler.fieldValue(this, params.digits)\n \n ###*\n * The number-cursor position.\n * @property digits\n * @type number\n * @protected\n ###\n @cursor = 0\n \n ###*\n * The current number as text.\n * @property number\n * @type string\n ###\n @number = \"\"\n \n ###*\n * Initializes the number-input component.\n *\n * @method setup\n ###\n setup: ->\n text = \"\".fill(\"0\", @digits)\n \n return null\n \n ###*\n * An action-method to add a single number/digit.\n *\n * @method action_addNumber\n * @param {gs.Object_Base} sender The sender of the action.\n * @param {Object} params The params-object which need a number-property containing the digit/number to add.\n ###\n action_addNumber: (sender, params) ->\n number = ui.Component_FormulaHandler.fieldValue(sender, params.number)\n if @number.length == 0 and number == 0 then return\n \n if @number.length < @digits\n @number += number.toString()\n else\n @number = @number.replaceAt(@number.length-1, number.toString())\n @setNumber(@number)\n \n ###*\n * An action-method to clear the number at the current cursor position.\n *\n * @method action_removeNumber\n * @param {gs.Object_Base} sender The sender of the action.\n * @param {Object} [params=null] The params-object. Can be <b>null</b>.\n ### \n action_removeNumber: (sender, params) ->\n if @number.length > 0\n @number = @number.substring(0, @number.length-1)\n \n @setNumber(@number) \n @setNumber(@number)\n \n ###*\n * Puts the specified number into the UI label-objects to make it visible\n * on screen.\n *\n * @method setNumber\n * @param {string} number The number to set.\n ### \n setNumber: (number) ->\n text = number.lfill(\"0\", @digits)\n for c, i in text\n @object.controls[i].controls[1].text = c\n # FIXME: Direct update call shouldn't be necessary. See TextInput.\n @object.controls[i].controls[1].update()\n \n return null\n \ngs.Component_NumberInput = Component_NumberInput","parentId":"01A95DA3K01E8A4CB4SBE17E790BCE1FC035","folder":false,"compiledContent":"var Component_NumberInput,\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\nComponent_NumberInput = (function(superClass) {\n extend(Component_NumberInput, superClass);\n\n\n /**\n * The number-input component defines the logic for the number-input window\n * of the default In-Game UI. \n *\n * @module gs\n * @class Component_NumberInput\n * @extends gs.Component\n * @memberof gs\n * @constructor\n */\n\n function Component_NumberInput(params) {\n\n /**\n * The max. number of digits of the number.\n * @property digits\n * @type number\n */\n this.digits = ui.Component_FormulaHandler.fieldValue(this, params.digits);\n\n /**\n * The number-cursor position.\n * @property digits\n * @type number\n * @protected\n */\n this.cursor = 0;\n\n /**\n * The current number as text.\n * @property number\n * @type string\n */\n this.number = \"\";\n }\n\n\n /**\n * Initializes the number-input component.\n *\n * @method setup\n */\n\n Component_NumberInput.prototype.setup = function() {\n var text;\n text = \"\".fill(\"0\", this.digits);\n return null;\n };\n\n\n /**\n * An action-method to add a single number/digit.\n *\n * @method action_addNumber\n * @param {gs.Object_Base} sender The sender of the action.\n * @param {Object} params The params-object which need a number-property containing the digit/number to add.\n */\n\n Component_NumberInput.prototype.action_addNumber = function(sender, params) {\n var number;\n number = ui.Component_FormulaHandler.fieldValue(sender, params.number);\n if (this.number.length === 0 && number === 0) {\n return;\n }\n if (this.number.length < this.digits) {\n this.number += number.toString();\n } else {\n this.number = this.number.replaceAt(this.number.length - 1, number.toString());\n }\n return this.setNumber(this.number);\n };\n\n\n /**\n * An action-method to clear the number at the current cursor position.\n *\n * @method action_removeNumber\n * @param {gs.Object_Base} sender The sender of the action.\n * @param {Object} [params=null] The params-object. Can be <b>null</b>.\n */\n\n Component_NumberInput.prototype.action_removeNumber = function(sender, params) {\n if (this.number.length > 0) {\n this.number = this.number.substring(0, this.number.length - 1);\n }\n this.setNumber(this.number);\n return this.setNumber(this.number);\n };\n\n\n /**\n * Puts the specified number into the UI label-objects to make it visible\n * on screen.\n *\n * @method setNumber\n * @param {string} number The number to set.\n */\n\n Component_NumberInput.prototype.setNumber = function(number) {\n var c, i, j, len, text;\n text = number.lfill(\"0\", this.digits);\n for (i = j = 0, len = text.length; j < len; i = ++j) {\n c = text[i];\n this.object.controls[i].controls[1].text = c;\n this.object.controls[i].controls[1].update();\n }\n return null;\n };\n\n return Component_NumberInput;\n\n})(gs.Component);\n\ngs.Component_NumberInput = Component_NumberInput;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEscUJBQUE7RUFBQTs7O0FBQU07Ozs7QUFDRjs7Ozs7Ozs7Ozs7RUFVYSwrQkFBQyxNQUFEOztBQUNUOzs7OztJQUtBLElBQUMsQ0FBQSxNQUFELEdBQVUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFVBQTVCLENBQXVDLElBQXZDLEVBQTZDLE1BQU0sQ0FBQyxNQUFwRDs7QUFFVjs7Ozs7O0lBTUEsSUFBQyxDQUFBLE1BQUQsR0FBVTs7QUFFVjs7Ozs7SUFLQSxJQUFDLENBQUEsTUFBRCxHQUFVO0VBckJEOzs7QUF1QmI7Ozs7OztrQ0FLQSxLQUFBLEdBQU8sU0FBQTtBQUNILFFBQUE7SUFBQSxJQUFBLEdBQU8sRUFBRSxDQUFDLElBQUgsQ0FBUSxHQUFSLEVBQWEsSUFBQyxDQUFBLE1BQWQ7QUFFUCxXQUFPO0VBSEo7OztBQUtQOzs7Ozs7OztrQ0FPQSxnQkFBQSxHQUFrQixTQUFDLE1BQUQsRUFBUyxNQUFUO0FBQ2QsUUFBQTtJQUFBLE1BQUEsR0FBUyxFQUFFLENBQUMsd0JBQXdCLENBQUMsVUFBNUIsQ0FBdUMsTUFBdkMsRUFBK0MsTUFBTSxDQUFDLE1BQXREO0lBQ1QsSUFBRyxJQUFDLENBQUEsTUFBTSxDQUFDLE1BQVIsS0FBa0IsQ0FBbEIsSUFBd0IsTUFBQSxLQUFVLENBQXJDO0FBQTRDLGFBQTVDOztJQUVBLElBQUcsSUFBQyxDQUFBLE1BQU0sQ0FBQyxNQUFSLEdBQWlCLElBQUMsQ0FBQSxNQUFyQjtNQUNJLElBQUMsQ0FBQSxNQUFELElBQVcsTUFBTSxDQUFDLFFBQVAsQ0FBQSxFQURmO0tBQUEsTUFBQTtNQUdJLElBQUMsQ0FBQSxNQUFELEdBQVUsSUFBQyxDQUFBLE1BQU0sQ0FBQyxTQUFSLENBQWtCLElBQUMsQ0FBQSxNQUFNLENBQUMsTUFBUixHQUFlLENBQWpDLEVBQW9DLE1BQU0sQ0FBQyxRQUFQLENBQUEsQ0FBcEMsRUFIZDs7V0FJQSxJQUFDLENBQUEsU0FBRCxDQUFXLElBQUMsQ0FBQSxNQUFaO0VBUmM7OztBQVVsQjs7Ozs7Ozs7a0NBT0EsbUJBQUEsR0FBcUIsU0FBQyxNQUFELEVBQVMsTUFBVDtJQUNqQixJQUFHLElBQUMsQ0FBQSxNQUFNLENBQUMsTUFBUixHQUFpQixDQUFwQjtNQUNJLElBQUMsQ0FBQSxNQUFELEdBQVUsSUFBQyxDQUFBLE1BQU0sQ0FBQyxTQUFSLENBQWtCLENBQWxCLEVBQXFCLElBQUMsQ0FBQSxNQUFNLENBQUMsTUFBUixHQUFlLENBQXBDLEVBRGQ7O0lBR0EsSUFBQyxDQUFBLFNBQUQsQ0FBVyxJQUFDLENBQUEsTUFBWjtXQUNBLElBQUMsQ0FBQSxTQUFELENBQVcsSUFBQyxDQUFBLE1BQVo7RUFMaUI7OztBQU9yQjs7Ozs7Ozs7a0NBT0EsU0FBQSxHQUFXLFNBQUMsTUFBRDtBQUNQLFFBQUE7SUFBQSxJQUFBLEdBQU8sTUFBTSxDQUFDLEtBQVAsQ0FBYSxHQUFiLEVBQWtCLElBQUMsQ0FBQSxNQUFuQjtBQUNQLFNBQUEsOENBQUE7O01BQ0ksSUFBQyxDQUFBLE1BQU0sQ0FBQyxRQUFTLENBQUEsQ0FBQSxDQUFFLENBQUMsUUFBUyxDQUFBLENBQUEsQ0FBRSxDQUFDLElBQWhDLEdBQXVDO01BRXZDLElBQUMsQ0FBQSxNQUFNLENBQUMsUUFBUyxDQUFBLENBQUEsQ0FBRSxDQUFDLFFBQVMsQ0FBQSxDQUFBLENBQUUsQ0FBQyxNQUFoQyxDQUFBO0FBSEo7QUFLQSxXQUFPO0VBUEE7Ozs7R0FsRnFCLEVBQUUsQ0FBQzs7QUEyRnZDLEVBQUUsQ0FBQyxxQkFBSCxHQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuI1xuIyAgIFNjcmlwdDogQ29tcG9uZW50X051bWJlcklucHV0XG4jXG4jICAgJCRDT1BZUklHSFQkJFxuI1xuIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5jbGFzcyBDb21wb25lbnRfTnVtYmVySW5wdXQgZXh0ZW5kcyBncy5Db21wb25lbnRcbiAgICAjIyMqXG4gICAgKiBUaGUgbnVtYmVyLWlucHV0IGNvbXBvbmVudCBkZWZpbmVzIHRoZSBsb2dpYyBmb3IgdGhlIG51bWJlci1pbnB1dCB3aW5kb3dcbiAgICAqIG9mIHRoZSBkZWZhdWx0IEluLUdhbWUgVUkuIFxuICAgICpcbiAgICAqIEBtb2R1bGUgZ3NcbiAgICAqIEBjbGFzcyBDb21wb25lbnRfTnVtYmVySW5wdXRcbiAgICAqIEBleHRlbmRzIGdzLkNvbXBvbmVudFxuICAgICogQG1lbWJlcm9mIGdzXG4gICAgKiBAY29uc3RydWN0b3JcbiAgICAjIyNcbiAgICBjb25zdHJ1Y3RvcjogKHBhcmFtcykgLT5cbiAgICAgICAgIyMjKlxuICAgICAgICAqIFRoZSBtYXguIG51bWJlciBvZiBkaWdpdHMgb2YgdGhlIG51bWJlci5cbiAgICAgICAgKiBAcHJvcGVydHkgZGlnaXRzXG4gICAgICAgICogQHR5cGUgbnVtYmVyXG4gICAgICAgICMjI1xuICAgICAgICBAZGlnaXRzID0gdWkuQ29tcG9uZW50X0Zvcm11bGFIYW5kbGVyLmZpZWxkVmFsdWUodGhpcywgcGFyYW1zLmRpZ2l0cylcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBUaGUgbnVtYmVyLWN1cnNvciBwb3NpdGlvbi5cbiAgICAgICAgKiBAcHJvcGVydHkgZGlnaXRzXG4gICAgICAgICogQHR5cGUgbnVtYmVyXG4gICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAjIyNcbiAgICAgICAgQGN1cnNvciA9IDBcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBUaGUgY3VycmVudCBudW1iZXIgYXMgdGV4dC5cbiAgICAgICAgKiBAcHJvcGVydHkgbnVtYmVyXG4gICAgICAgICogQHR5cGUgc3RyaW5nXG4gICAgICAgICMjI1xuICAgICAgICBAbnVtYmVyID0gXCJcIlxuICAgICAgICBcbiAgICAjIyMqXG4gICAgKiBJbml0aWFsaXplcyB0aGUgbnVtYmVyLWlucHV0IGNvbXBvbmVudC5cbiAgICAqXG4gICAgKiBAbWV0aG9kIHNldHVwXG4gICAgIyMjXG4gICAgc2V0dXA6IC0+XG4gICAgICAgIHRleHQgPSBcIlwiLmZpbGwoXCIwXCIsIEBkaWdpdHMpXG4gICAgICAgIFxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICBcbiAgICAjIyMqXG4gICAgKiBBbiBhY3Rpb24tbWV0aG9kIHRvIGFkZCBhIHNpbmdsZSBudW1iZXIvZGlnaXQuXG4gICAgKlxuICAgICogQG1ldGhvZCBhY3Rpb25fYWRkTnVtYmVyXG4gICAgKiBAcGFyYW0ge2dzLk9iamVjdF9CYXNlfSBzZW5kZXIgVGhlIHNlbmRlciBvZiB0aGUgYWN0aW9uLlxuICAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyBUaGUgcGFyYW1zLW9iamVjdCB3aGljaCBuZWVkIGEgbnVtYmVyLXByb3BlcnR5IGNvbnRhaW5pbmcgdGhlIGRpZ2l0L251bWJlciB0byBhZGQuXG4gICAgIyMjXG4gICAgYWN0aW9uX2FkZE51bWJlcjogKHNlbmRlciwgcGFyYW1zKSAtPlxuICAgICAgICBudW1iZXIgPSB1aS5Db21wb25lbnRfRm9ybXVsYUhhbmRsZXIuZmllbGRWYWx1ZShzZW5kZXIsIHBhcmFtcy5udW1iZXIpXG4gICAgICAgIGlmIEBudW1iZXIubGVuZ3RoID09IDAgYW5kIG51bWJlciA9PSAwIHRoZW4gcmV0dXJuXG4gICAgICAgIFxuICAgICAgICBpZiBAbnVtYmVyLmxlbmd0aCA8IEBkaWdpdHNcbiAgICAgICAgICAgIEBudW1iZXIgKz0gbnVtYmVyLnRvU3RyaW5nKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgQG51bWJlciA9IEBudW1iZXIucmVwbGFjZUF0KEBudW1iZXIubGVuZ3RoLTEsIG51bWJlci50b1N0cmluZygpKVxuICAgICAgICBAc2V0TnVtYmVyKEBudW1iZXIpXG4gICAgICAgICAgICBcbiAgICAjIyMqXG4gICAgKiBBbiBhY3Rpb24tbWV0aG9kIHRvIGNsZWFyIHRoZSBudW1iZXIgYXQgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLlxuICAgICpcbiAgICAqIEBtZXRob2QgYWN0aW9uX3JlbW92ZU51bWJlclxuICAgICogQHBhcmFtIHtncy5PYmplY3RfQmFzZX0gc2VuZGVyIFRoZSBzZW5kZXIgb2YgdGhlIGFjdGlvbi5cbiAgICAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zPW51bGxdIFRoZSBwYXJhbXMtb2JqZWN0LiBDYW4gYmUgPGI+bnVsbDwvYj4uXG4gICAgIyMjICAgICAgIFxuICAgIGFjdGlvbl9yZW1vdmVOdW1iZXI6IChzZW5kZXIsIHBhcmFtcykgLT5cbiAgICAgICAgaWYgQG51bWJlci5sZW5ndGggPiAwXG4gICAgICAgICAgICBAbnVtYmVyID0gQG51bWJlci5zdWJzdHJpbmcoMCwgQG51bWJlci5sZW5ndGgtMSlcbiAgICAgICAgICAgIFxuICAgICAgICBAc2V0TnVtYmVyKEBudW1iZXIpICAgXG4gICAgICAgIEBzZXROdW1iZXIoQG51bWJlcilcbiAgICBcbiAgICAjIyMqXG4gICAgKiBQdXRzIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGludG8gdGhlIFVJIGxhYmVsLW9iamVjdHMgdG8gbWFrZSBpdCB2aXNpYmxlXG4gICAgKiBvbiBzY3JlZW4uXG4gICAgKlxuICAgICogQG1ldGhvZCBzZXROdW1iZXJcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBudW1iZXIgVGhlIG51bWJlciB0byBzZXQuXG4gICAgIyMjICAgICBcbiAgICBzZXROdW1iZXI6IChudW1iZXIpIC0+XG4gICAgICAgIHRleHQgPSBudW1iZXIubGZpbGwoXCIwXCIsIEBkaWdpdHMpXG4gICAgICAgIGZvciBjLCBpIGluIHRleHRcbiAgICAgICAgICAgIEBvYmplY3QuY29udHJvbHNbaV0uY29udHJvbHNbMV0udGV4dCA9IGNcbiAgICAgICAgICAgICMgRklYTUU6IERpcmVjdCB1cGRhdGUgY2FsbCBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LiBTZWUgVGV4dElucHV0LlxuICAgICAgICAgICAgQG9iamVjdC5jb250cm9sc1tpXS5jb250cm9sc1sxXS51cGRhdGUoKVxuICAgICAgICAgICAgXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIFxuZ3MuQ29tcG9uZW50X051bWJlcklucHV0ID0gQ29tcG9uZW50X051bWJlcklucHV0Il19\n//# sourceURL=Component_NumberInput_159.js"},"summary":["name","type","order"]}
|