diff --git a/src/util/phaser-input-master/Gruntfile.js b/src/util/phaser-input-master/Gruntfile.js new file mode 100755 index 0000000..272acc8 --- /dev/null +++ b/src/util/phaser-input-master/Gruntfile.js @@ -0,0 +1,104 @@ +module.exports = function (grunt) { + 'use strict'; + + grunt.initConfig({ + //Get some details from the package.json + pkg: grunt.file.readJSON('package.json'), + banner: '/*!\n' + + ' * <%= pkg.config.name %> - version <%= pkg.version %> \n' + + ' * <%= pkg.description %>\n' + + ' *\n' + + ' * <%= pkg.author %>\n' + + ' * Build at <%= grunt.template.today("dd-mm-yyyy") %>\n' + + ' * Released under MIT License \n' + + ' */\n', + usebanner: { + dist: { + options: { + position: 'top', + banner: '<%= banner %>' + }, + files: { + src: [ 'build/*.js' ] + } + } + }, + //Typescript settings per build + ts: { + options: { + module: 'amd', + target: 'es5', + sourceMap: true, + declaration: true, + noImplicitAny: true + }, + dist: { + src: ['ts/**/*.ts'], + dest: 'build/<%= pkg.config.name %>.js' + } + }, + watch: { + files: ['ts/**/*.ts'], + tasks: ['ts'], + options: { + livereload: true + } + }, + connect: { + server: { + options: { + base: ['./build', './example'], + port: 8080 + } + } + }, + uglify: { + options: { + compress: { + sequences: true, + dead_code: true, + conditionals: true, + booleans: true, + unused: true, + if_return: true, + join_vars: true, + drop_console: true + }, + mangle: true, + beautify: false + }, + dist: { + files: { + 'build/<%= pkg.config.name %>.min.js': [ + 'build/<%= pkg.config.name %>.js' + ] + } + } + }, + clean: { + dist: ['build'] + } + }); + + grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-banner'); + grunt.loadNpmTasks('grunt-ts'); + grunt.loadNpmTasks('grunt-contrib-connect'); + grunt.loadNpmTasks('grunt-contrib-watch'); + + //dist Build + grunt.registerTask('dist', [ + 'clean:dist', //Clean the dist folder + 'ts:dist',//Run typescript on the preprocessed files, for dist (client) + 'uglify:dist', //Minify everything + 'usebanner:dist' //Minify everything + ]); + + grunt.registerTask('dev', [ + 'ts:dist', + 'connect', + 'watch' + ]); + +}; diff --git a/src/util/phaser-input-master/LICENSE b/src/util/phaser-input-master/LICENSE new file mode 100755 index 0000000..c297e70 --- /dev/null +++ b/src/util/phaser-input-master/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Orange Games + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/src/util/phaser-input-master/README.md b/src/util/phaser-input-master/README.md new file mode 100755 index 0000000..fc9dc04 --- /dev/null +++ b/src/util/phaser-input-master/README.md @@ -0,0 +1,192 @@ +Phaser Input +============ +Phaser Input is a plugin for Phaser that allows you to use html input fields as Phaser object inside your Phaser game. It fills the blanks of CanvasInput (that only works on a canvas renderer) and appends it with full Phaser support! +The best part is that it will also work on mobile devices! + +Key features: + +* Works on mobile and Desktop +* Included TypeScript support +* Also runs under WebGL renderer +* Pure Phaser implementation +* Easy configurable +* Production hardened + +*Imporant* +From here on this library will be published and updated under [@orange-games/phaser-input](https://www.npmjs.com/package/@orange-games/phaser-input) at NPM, the old [phaser-input](https://www.npmjs.com/package/phaser-input) will no longer be maintained. +If you are comming from v1 you can read the migration guide at the bottom + +Getting Started +--------------- +First you want to get a fresh copy of the plugin. You can get it from this repo or from npm, ain't that handy. +``` +npm install @orange-games/phaser-input --save-dev +``` + +Next up you'd want to add it to your list of js sources you load into your game +```html + +``` + +After adding the script to the page you can activate it by enabling the plugin: +```javascript +game.add.plugin(PhaserInput.Plugin); +``` + +Usage +----- +### Adding a InputField +The simplest way of adding a input field is: +```javascript +var input = game.add.inputField(10, 90); +``` + +Ofcourse there are options available that can be used to style the input. They can be passes as an object as the third parameter. + +```javascript +var password = game.add.inputField(10, 90, { + font: '18px Arial', + fill: '#212121', + fontWeight: 'bold', + width: 150, + padding: 8, + borderWidth: 1, + borderColor: '#000', + borderRadius: 6, + placeHolder: 'Password', + type: PhaserInput.InputType.password +}); +``` + +### Using zoom +Zooming is easy to enable on an input field, it can be passed to the InputField as a setting. But there are some caveats: + +First of all, it's only meant for mobile. Second; it modifies the scale and pivot of the world, and that might interfere with your resize. + +Also, when the keyboard is shown, sometimes a resize event will be triggered. + +Ideally you use a custom resize event, check for the static property `PhaserInput.KeyboardOpen` and don't resize when it's set to true. + +### Using keyboard open/close signals +Current version includes two event dispatchers that notify when a device keyboard is opened or closed. + +You can add listeners which trigger events based on this feedback. + +```javascript +PhaserInput.onKeyboardClose.addOnce(function() { + this.resizeBackgroundImage(); +}); +``` + +### Capture input events +By default, input event will not bubble up to other elements +This is controlled by an InputField property called `blockInput`. +When set to false, the input event will trigger on the input element and move up to other elements listening for the event. + +e.g. An in-game sprite might be listening for keyboard events (W, A, S, D). +If set to false, typing in input field will not trigger keyboard events for the sprite. +So the sprite will not move when typing into input field. + + +### Toggle Enter key +InputField has a property (`focusOutOnEnter`) that controls whether the input field will lose focus on pressing Enter. +If set to true, pressing enter will end focus on the field (default is true). + + +### Current Limitations + - Updates are slow when typing fast (type slower you!!) + - Zoom modifies the pivot and scale of the world, so it might interfere with some stuff + +## Properties + - **x**: number (0 by default) The X-coordinate in the game + - **y**: number (0 by default) The Y-coordinate in the game + - **fill**: string (#fff by default) The color of the inputted text + - **fillAlpha**: number (1 by default) Alpha of the textbox, 0 will hide the textbox and only show the text/placeholder/cursor + - **width**: number (150 by default) The width of the text box (just like in the DOM, padding, borders add onto this width) + - **height**: number (14 by default) The height of the text box (just like in the DOM, padding, borders add onto this height) + - **padding**: number (0 by default) The padding in pixels around all 4 sides of the text input area. + - **borderWidth**: number (1 by default) Size of the border + - **borderColor**: string (#000 by default) Color of the border + - **forceCase**: ForceCase (none by default) If we should force a certain case (either upper or lower) + - **borderRadius**: number (0 by default) Create rounded corners by setting a border radius + - **placeHolder**: string ('' by default) Text that will be shown before the user input's anything + - **placeHolderColor**: string (#bfbebd by default) The color of the placeholder text + - **type**: InputType (text by default) Either text, password or numeric + - **backgroundColor**: string (#fff by default) The background color of the input box + - **cursorColor**: string (#000 by default) The color of the blinking cursor + - **font**: string (14px Arial by default) The font that is used for the input box, covers the input text, placeholder and cursor + - **min**: string (none by default) The minimum number for the input field, only for number input fields + - **max**: string (none by default) The maximum number for the number input field, or the maxLength for other input fields + - **selectionColor**: string (rgba(179, 212, 253, 0.8) by default) The default color for the text selection highlight. + - **zoom**: boolean (false by default) if we need to zoom onto the input field (mobile only). + +### Browser Support +Tested on: + - Desktop + * Chrome 48+ + * FireFox 44+ + * Safari 9+ + - Mobile + * Chrome 48+ + * iOS 9+ + +Migrating from v1 +----------------- +the API of the objects is the same as before but the namespace changed. We decided to remove the Fabrique namespace, and house the plugin in it's own (PhaserInput). +so: +Fabrique.Plugins.Input +becomes: +PhaserInput.Plugin + +and all other references of Fabrique.Plugins can be replaced with PhaserInput. +If you are still unsure how or what, both the example and this readme have been adjusted to work with the new namespace. + +FAQ +--- +### I Don't see the cursor blinking! +This is most likely due to you adding the input field to a custom Phaser object. According to the [Phaser docs](http://phaser.io/docs/2.6.2/Phaser.Sprite.html#update) the update function needs to be called manually in these cases. + +So add the following to your object and the cursor should work :) + +```javascript +update: function () { + this._inputField.update(); +}, +``` + +### How do I focus on the element?! +Normally the element is only focused trough user interaction (due to mobile limitations) you can get around this by manually calling the focus method yourself: +```javascript +var input = game.add.inputField(10, 90); +//start with focus on the element +input.startFocus(); + +//and then end the focus +input.endFocus(); +``` +Please note that this will not work on mobile wihtout a user interaction + +### Can I change the width later on in the code? +Well thanks for asking, yes you can! +```javascript +var input = game.add.inputField(10, 90); +input.width = 200; +``` + +### Well then, is it also possible to set the value in code? +Yes you can! The Inputfield has a setText function you can call to set any value you want! +```javascript +var input = game.add.inputField(10, 90); +input.setText("My custom text"); +``` + +Credits +------- +phaser-input is inspired by [CanvasInput](https://github.com/goldfire/CanvasInput) + +Disclaimer +---------- +We at OrangeGames just love playing and creating awesome games. We aren't affiliated with Phaser.io. We just needed some awesome input boxes in our awesome HTML5 games. Feel free to use it for enhancing your own awesome games! + +Phaser Input is distributed under the MIT license. All 3rd party libraries and components are distributed under their +respective license terms. diff --git a/src/util/phaser-input-master/build/phaser-input.d.ts b/src/util/phaser-input-master/build/phaser-input.d.ts new file mode 100755 index 0000000..50e3ed0 --- /dev/null +++ b/src/util/phaser-input-master/build/phaser-input.d.ts @@ -0,0 +1,162 @@ +declare module PhaserInput { + enum InputType { + text = 0, + password = 1, + number = 2, + } + class InputElement { + private element; + private keyUpCallback; + private inputChangeCallback; + private type; + private id; + private game; + private focusIn; + private focusOut; + constructor(game: Phaser.Game, id: string, type?: InputType, value?: string, focusIn?: Phaser.Signal, focusOut?: Phaser.Signal); + addKeyUpListener(callback: () => void): void; + blockKeyDownEvents(): void; + private preventKeyPropagation(evt); + unblockKeyDownEvents(): void; + removeEventListener(): void; + destroy(): void; + setMax(max: string, min?: string): void; + value: string; + focus(): void; + blur(): void; + readonly hasSelection: boolean; + readonly caretStart: number; + readonly caretEnd: number; + getCaretPosition(): number; + setCaretPosition(pos: number): void; + } +} +declare module PhaserInput { + enum ForceCase { + none = 0, + lower = 1, + upper = 2, + } + interface InputOptions extends Phaser.PhaserTextStyle { + x?: number; + y?: number; + placeHolder?: string; + fillAlpha?: number; + width?: number; + height?: number; + padding?: number; + borderWidth?: number; + borderColor?: string; + borderRadius?: number; + cursorColor?: string; + placeHolderColor?: string; + type?: InputType; + forceCase?: ForceCase; + min?: string; + max?: string; + textAlign?: string; + selectionColor?: string; + zoom?: boolean; + } + class InputField extends Phaser.Sprite { + focusOutOnEnter: boolean; + private placeHolder; + private box; + private textMask; + private focus; + private cursor; + private text; + private offscreenText; + value: string; + private inputOptions; + private domElement; + private selection; + private windowScale; + blockInput: boolean; + focusIn: Phaser.Signal; + focusOut: Phaser.Signal; + width: number; + constructor(game: Phaser.Game, x: number, y: number, inputOptions?: InputOptions); + private updateTextAlignment(); + private checkDown(e); + private blink; + private cnt; + update(): number; + endFocus(): void; + startFocus(): void; + private keyUpProcessor(); + private updateText(); + private updateCursor(); + private getCaretPosition(); + private setCaretOnclick(e); + private updateSelection(); + private zoomIn(); + private zoomOut(); + private keyListener(evt); + destroy(destroyChildren?: boolean): void; + resetText(): void; + setText(text?: string): void; + private getFormattedText(text); + } +} +declare module PhaserInput { + class InputBox extends Phaser.Graphics { + private bgColor; + private borderRadius; + private borderColor; + private borderWidth; + private boxAlpha; + private boxHeight; + private padding; + private boxWidth; + constructor(game: Phaser.Game, inputOptions: InputOptions); + resize(newWidth: number): void; + private drawBox(); + } +} +declare module PhaserInput { + class SelectionHighlight extends Phaser.Graphics { + private inputOptions; + constructor(game: Phaser.Game, inputOptions: InputOptions); + updateSelection(rect: PIXI.Rectangle): void; + static rgb2hex(color: { + r: number; + g: number; + b: number; + a: number; + }): number; + } +} +declare module PhaserInput { + class TextMask extends Phaser.Graphics { + private maskWidth; + private maskHeight; + constructor(game: Phaser.Game, inputOptions: InputOptions); + resize(newWidth: number): void; + private drawMask(); + } +} +declare module PhaserInput { + var Zoomed: boolean; + var KeyboardOpen: boolean; + const onKeyboardOpen: Phaser.Signal; + const onKeyboardClose: Phaser.Signal; + interface InputFieldObjectFactory extends Phaser.GameObjectFactory { + inputField: (x: number, y: number, inputOptions?: PhaserInput.InputOptions, group?: Phaser.Group) => PhaserInput.InputField; + } + interface InputFieldObjectCreator extends Phaser.GameObjectCreator { + inputField: (x: number, y: number, inputOptions?: PhaserInput.InputOptions) => PhaserInput.InputField; + } + interface InputFieldGame extends Phaser.Game { + add: InputFieldObjectFactory; + make: InputFieldObjectCreator; + } + class Plugin extends Phaser.Plugin { + static Zoomed: boolean; + static KeyboardOpen: boolean; + static onKeyboardOpen: Phaser.Signal; + static onKeyboardClose: Phaser.Signal; + constructor(game: Phaser.Game, parent: Phaser.PluginManager); + private addInputFieldFactory(); + } +} diff --git a/src/util/phaser-input-master/build/phaser-input.js b/src/util/phaser-input-master/build/phaser-input.js new file mode 100755 index 0000000..1ff8d1f --- /dev/null +++ b/src/util/phaser-input-master/build/phaser-input.js @@ -0,0 +1,720 @@ +/*! + * phaser-input - version 2.0.5 + * Adds input boxes to Phaser like CanvasInput, but also works for WebGL and Mobile, made for Phaser only. + * + * OrangeGames + * Build at 02-06-2017 + * Released under MIT License + */ + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var PhaserInput; +(function (PhaserInput) { + var InputType; + (function (InputType) { + InputType[InputType["text"] = 0] = "text"; + InputType[InputType["password"] = 1] = "password"; + InputType[InputType["number"] = 2] = "number"; + })(InputType = PhaserInput.InputType || (PhaserInput.InputType = {})); + var InputElement = (function () { + function InputElement(game, id, type, value, focusIn, focusOut) { + if (type === void 0) { type = InputType.text; } + if (value === void 0) { value = ''; } + var _this = this; + this.id = id; + this.type = type; + this.game = game; + this.focusIn = focusIn; + this.focusOut = focusOut; + var canvasTopX = this.game.canvas.getBoundingClientRect().top + document.body.scrollTop; + this.element = document.createElement('input'); + this.element.id = id; + this.element.style.position = 'absolute'; + this.element.style.top = canvasTopX + 'px'; + this.element.style.left = (-40).toString() + 'px'; + this.element.style.width = (10).toString() + 'px'; + this.element.style.height = (10).toString() + 'px'; + this.element.style.border = '0px'; + this.element.value = this.value; + this.element.type = InputType[type]; + this.element.addEventListener('focusin', function () { + if (_this.focusIn instanceof Phaser.Signal) { + _this.focusIn.dispatch(); + } + }); + this.element.addEventListener('focusout', function () { + if (_this.focusOut instanceof Phaser.Signal) { + _this.focusOut.dispatch(); + } + }); + document.body.appendChild(this.element); + } + InputElement.prototype.addKeyUpListener = function (callback) { + this.keyUpCallback = callback; + document.addEventListener('keyup', this.keyUpCallback); + this.element.addEventListener('input', this.keyUpCallback); + }; + InputElement.prototype.blockKeyDownEvents = function () { + document.addEventListener('keydown', this.preventKeyPropagation); + }; + InputElement.prototype.preventKeyPropagation = function (evt) { + if (evt.stopPropagation) { + evt.stopPropagation(); + } + else { + event.cancelBubble = true; + } + }; + InputElement.prototype.unblockKeyDownEvents = function () { + document.removeEventListener('keydown', this.preventKeyPropagation); + }; + InputElement.prototype.removeEventListener = function () { + document.removeEventListener('keyup', this.keyUpCallback); + this.element.removeEventListener('input', this.keyUpCallback); + }; + InputElement.prototype.destroy = function () { + document.body.removeChild(this.element); + }; + InputElement.prototype.setMax = function (max, min) { + if (max === undefined) { + return; + } + if (this.type === InputType.text || this.type === InputType.password) { + this.element.maxLength = parseInt(max, 10); + } + else if (this.type === InputType.number) { + this.element.max = max; + if (min === undefined) { + return; + } + this.element.min = min; + } + }; + Object.defineProperty(InputElement.prototype, "value", { + get: function () { + return this.element.value; + }, + set: function (value) { + this.element.value = value; + }, + enumerable: true, + configurable: true + }); + InputElement.prototype.focus = function () { + var _this = this; + this.element.focus(); + if (!this.game.device.desktop && this.game.device.chrome) { + var originalWidth_1 = window.innerWidth, originalHeight_1 = window.innerHeight; + var kbAppeared_1 = false; + var interval_1 = setInterval(function () { + if (originalWidth_1 > window.innerWidth || originalHeight_1 > window.innerHeight) { + kbAppeared_1 = true; + } + if (kbAppeared_1 && originalWidth_1 === window.innerWidth && originalHeight_1 === window.innerHeight) { + if (_this.focusOut instanceof Phaser.Signal) { + _this.focusOut.dispatch(); + } + clearInterval(interval_1); + } + }, 50); + } + }; + InputElement.prototype.blur = function () { + this.element.blur(); + }; + Object.defineProperty(InputElement.prototype, "hasSelection", { + get: function () { + if (this.type === InputType.number) { + return false; + } + return this.element.selectionStart !== this.element.selectionEnd; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(InputElement.prototype, "caretStart", { + get: function () { + return this.element.selectionEnd; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(InputElement.prototype, "caretEnd", { + get: function () { + return this.element.selectionStart; + }, + enumerable: true, + configurable: true + }); + InputElement.prototype.getCaretPosition = function () { + if (this.type === InputType.number) { + return -1; + } + return this.element.selectionStart; + }; + InputElement.prototype.setCaretPosition = function (pos) { + if (this.type === InputType.number) { + return; + } + this.element.setSelectionRange(pos, pos); + }; + return InputElement; + }()); + PhaserInput.InputElement = InputElement; +})(PhaserInput || (PhaserInput = {})); +var PhaserInput; +(function (PhaserInput) { + var ForceCase; + (function (ForceCase) { + ForceCase[ForceCase["none"] = 0] = "none"; + ForceCase[ForceCase["lower"] = 1] = "lower"; + ForceCase[ForceCase["upper"] = 2] = "upper"; + })(ForceCase = PhaserInput.ForceCase || (PhaserInput.ForceCase = {})); + var InputField = (function (_super) { + __extends(InputField, _super); + function InputField(game, x, y, inputOptions) { + if (inputOptions === void 0) { inputOptions = {}; } + var _this = _super.call(this, game, x, y) || this; + _this.focusOutOnEnter = true; + _this.placeHolder = null; + _this.box = null; + _this.focus = false; + _this.value = ''; + _this.windowScale = 1; + _this.blockInput = true; + _this.focusIn = new Phaser.Signal(); + _this.focusOut = new Phaser.Signal(); + _this.blink = true; + _this.cnt = 0; + _this.inputOptions = inputOptions; + _this.inputOptions.width = (typeof inputOptions.width === 'number') ? inputOptions.width : 150; + _this.inputOptions.padding = (typeof inputOptions.padding === 'number') ? inputOptions.padding : 0; + _this.inputOptions.textAlign = inputOptions.textAlign || 'left'; + _this.inputOptions.type = inputOptions.type || PhaserInput.InputType.text; + _this.inputOptions.forceCase = (inputOptions.forceCase) ? inputOptions.forceCase : ForceCase.none; + _this.inputOptions.borderRadius = (typeof inputOptions.borderRadius === 'number') ? inputOptions.borderRadius : 0; + _this.inputOptions.height = (typeof inputOptions.height === 'number') ? inputOptions.height : 14; + _this.inputOptions.fillAlpha = (inputOptions.fillAlpha === undefined) ? 1 : inputOptions.fillAlpha; + _this.inputOptions.selectionColor = inputOptions.selectionColor || 'rgba(179, 212, 253, 0.8)'; + _this.inputOptions.zoom = (!game.device.desktop) ? inputOptions.zoom || false : false; + _this.box = new PhaserInput.InputBox(_this.game, inputOptions); + _this.setTexture(_this.box.generateTexture()); + _this.textMask = new PhaserInput.TextMask(_this.game, inputOptions); + _this.addChild(_this.textMask); + _this.domElement = new PhaserInput.InputElement(_this.game, 'phaser-input-' + (Math.random() * 10000 | 0).toString(), _this.inputOptions.type, _this.value, _this.focusIn, _this.focusOut); + _this.domElement.setMax(_this.inputOptions.max, _this.inputOptions.min); + _this.selection = new PhaserInput.SelectionHighlight(_this.game, _this.inputOptions); + _this.selection.mask = _this.textMask; + _this.addChild(_this.selection); + if (inputOptions.placeHolder && inputOptions.placeHolder.length > 0) { + _this.placeHolder = new Phaser.Text(game, _this.inputOptions.padding, _this.inputOptions.padding, inputOptions.placeHolder, { + font: inputOptions.font || '14px Arial', + fontWeight: inputOptions.fontWeight || 'normal', + fill: inputOptions.placeHolderColor || '#bfbebd' + }); + _this.placeHolder.mask = _this.textMask; + _this.addChild(_this.placeHolder); + } + _this.cursor = new Phaser.Text(game, _this.inputOptions.padding, _this.inputOptions.padding - 2, '|', { + font: inputOptions.font || '14px Arial', + fontWeight: inputOptions.fontWeight || 'normal', + fill: inputOptions.cursorColor || '#000000' + }); + _this.cursor.visible = false; + _this.addChild(_this.cursor); + _this.text = new Phaser.Text(game, _this.inputOptions.padding, _this.inputOptions.padding, '', { + font: inputOptions.font || '14px Arial', + fontWeight: inputOptions.fontWeight || 'normal', + fill: inputOptions.fill || '#000000' + }); + _this.text.mask = _this.textMask; + _this.addChild(_this.text); + _this.offscreenText = new Phaser.Text(game, _this.inputOptions.padding, _this.inputOptions.padding, '', { + font: inputOptions.font || '14px Arial', + fontWeight: inputOptions.fontWeight || 'normal', + fill: inputOptions.fill || '#000000' + }); + _this.updateTextAlignment(); + _this.inputEnabled = true; + _this.input.useHandCursor = true; + _this.game.input.onDown.add(_this.checkDown, _this); + _this.focusOut.add(function () { + if (PhaserInput.KeyboardOpen) { + _this.endFocus(); + if (_this.inputOptions.zoom) { + _this.zoomOut(); + } + } + }); + return _this; + } + Object.defineProperty(InputField.prototype, "width", { + get: function () { + return this.inputOptions.width; + }, + set: function (width) { + this.inputOptions.width = width; + this.box.resize(width); + this.textMask.resize(width); + this.updateTextAlignment(); + }, + enumerable: true, + configurable: true + }); + InputField.prototype.updateTextAlignment = function () { + switch (this.inputOptions.textAlign) { + case 'left': + this.text.anchor.set(0, 0); + this.text.x = this.inputOptions.padding; + if (null !== this.placeHolder) { + this.placeHolder.anchor.set(0, 0); + } + this.cursor.x = this.inputOptions.padding + this.getCaretPosition(); + break; + case 'center': + this.text.anchor.set(0.5, 0); + this.text.x = this.inputOptions.padding + this.inputOptions.width / 2; + if (null !== this.placeHolder) { + this.placeHolder.anchor.set(0.5, 0); + this.placeHolder.x = this.inputOptions.padding + this.inputOptions.width / 2; + } + this.cursor.x = this.inputOptions.padding + this.inputOptions.width / 2 - this.text.width / 2 + this.getCaretPosition(); + break; + case 'right': + this.text.anchor.set(1, 0); + this.text.x = this.inputOptions.padding + this.inputOptions.width; + if (null !== this.placeHolder) { + this.placeHolder.anchor.set(1, 0); + this.placeHolder.x = this.inputOptions.padding + this.inputOptions.width; + } + this.cursor.x = this.inputOptions.padding + this.inputOptions.width; + break; + } + }; + InputField.prototype.checkDown = function (e) { + if (!this.value) { + this.resetText(); + } + if (this.input.checkPointerOver(e)) { + if (this.focus) { + this.setCaretOnclick(e); + return; + } + if (this.inputOptions.zoom && !PhaserInput.Zoomed) { + this.zoomIn(); + } + this.startFocus(); + } + else { + if (this.focus === true) { + this.endFocus(); + if (this.inputOptions.zoom) { + this.zoomOut(); + } + } + } + }; + InputField.prototype.update = function () { + this.text.update(); + if (this.placeHolder) { + this.placeHolder.update(); + } + if (!this.focus) { + return; + } + if (this.cnt !== 30) { + return this.cnt++; + } + this.cursor.visible = this.blink; + this.blink = !this.blink; + this.cnt = 0; + }; + InputField.prototype.endFocus = function () { + var _this = this; + if (!this.focus) { + return; + } + this.domElement.removeEventListener(); + if (this.blockInput === true) { + this.domElement.unblockKeyDownEvents(); + } + this.focus = false; + if (this.value.length === 0 && null !== this.placeHolder) { + this.placeHolder.visible = true; + } + this.cursor.visible = false; + if (this.game.device.desktop) { + setTimeout(function () { + _this.domElement.blur(); + }, 0); + } + else { + this.domElement.blur(); + } + if (!this.game.device.desktop) { + PhaserInput.KeyboardOpen = false; + PhaserInput.onKeyboardClose.dispatch(); + } + }; + InputField.prototype.startFocus = function () { + var _this = this; + this.focus = true; + if (null !== this.placeHolder) { + this.placeHolder.visible = false; + } + if (this.game.device.desktop) { + setTimeout(function () { + _this.keyUpProcessor(); + }, 0); + } + else { + this.keyUpProcessor(); + } + if (!this.game.device.desktop) { + PhaserInput.KeyboardOpen = true; + PhaserInput.onKeyboardOpen.dispatch(); + } + }; + InputField.prototype.keyUpProcessor = function () { + this.domElement.addKeyUpListener(this.keyListener.bind(this)); + this.domElement.focus(); + if (this.blockInput === true) { + this.domElement.blockKeyDownEvents(); + } + }; + InputField.prototype.updateText = function () { + var text = ''; + if (this.inputOptions.type === PhaserInput.InputType.password) { + for (var i = 0; i < this.value.length; i++) { + text += '*'; + } + } + else if (this.inputOptions.type === PhaserInput.InputType.number) { + var val = parseInt(this.value); + if (val < parseInt(this.inputOptions.min)) { + text = this.value = this.domElement.value = this.inputOptions.min; + } + else if (val > parseInt(this.inputOptions.max)) { + text = this.value = this.domElement.value = this.inputOptions.max; + } + else { + text = this.value; + } + } + else { + text = this.value; + } + this.text.setText(text); + if (this.text.width > this.inputOptions.width) { + this.text.anchor.x = 1; + this.text.x = this.inputOptions.padding + this.inputOptions.width; + } + else { + switch (this.inputOptions.textAlign) { + case 'left': + this.text.anchor.set(0, 0); + this.text.x = this.inputOptions.padding; + break; + case 'center': + this.text.anchor.set(0.5, 0); + this.text.x = this.inputOptions.padding + this.inputOptions.width / 2; + break; + case 'right': + this.text.anchor.set(1, 0); + this.text.x = this.inputOptions.padding + this.inputOptions.width; + break; + } + } + }; + InputField.prototype.updateCursor = function () { + if (this.text.width > this.inputOptions.width || this.inputOptions.textAlign === 'right') { + this.cursor.x = this.inputOptions.padding + this.inputOptions.width; + } + else { + switch (this.inputOptions.textAlign) { + case 'left': + this.cursor.x = this.inputOptions.padding + this.getCaretPosition(); + break; + case 'center': + this.cursor.x = this.inputOptions.padding + this.inputOptions.width / 2 - this.text.width / 2 + this.getCaretPosition(); + break; + } + } + }; + InputField.prototype.getCaretPosition = function () { + var caretPosition = this.domElement.getCaretPosition(); + if (-1 === caretPosition) { + return this.text.width; + } + var text = this.value; + if (this.inputOptions.type === PhaserInput.InputType.password) { + text = ''; + for (var i = 0; i < this.value.length; i++) { + text += '*'; + } + } + this.offscreenText.setText(text.slice(0, caretPosition)); + return this.offscreenText.width; + }; + InputField.prototype.setCaretOnclick = function (e) { + var localX = (this.text.toLocal(new PIXI.Point(e.x, e.y), this.game.world)).x; + if (this.inputOptions.textAlign && this.inputOptions.textAlign === 'center') { + localX += this.text.width / 2; + } + var characterWidth = this.text.width / this.value.length; + var index = 0; + for (var i = 0; i < this.value.length; i++) { + if (localX >= i * characterWidth && localX <= (i + 1) * characterWidth) { + index = i; + break; + } + } + if (localX > (this.value.length - 1) * characterWidth) { + index = this.value.length; + } + this.startFocus(); + this.domElement.setCaretPosition(index); + this.updateCursor(); + }; + InputField.prototype.updateSelection = function () { + if (this.domElement.hasSelection) { + var text = this.value; + if (this.inputOptions.type === PhaserInput.InputType.password) { + text = ''; + for (var i = 0; i < this.value.length; i++) { + text += '*'; + } + } + text = text.substring(this.domElement.caretStart, this.domElement.caretEnd); + this.offscreenText.setText(text); + this.selection.updateSelection(this.offscreenText.getBounds()); + switch (this.inputOptions.textAlign) { + case 'left': + this.selection.x = this.inputOptions.padding; + break; + case 'center': + this.selection.x = this.inputOptions.padding + this.inputOptions.width / 2 - this.text.width / 2; + break; + } + } + else { + this.selection.clear(); + } + }; + InputField.prototype.zoomIn = function () { + if (PhaserInput.Zoomed) { + return; + } + var bounds = this.getBounds(); + if (window.innerHeight > window.innerWidth) { + this.windowScale = this.game.width / (bounds.width * 1.5); + } + else { + this.windowScale = (this.game.width / 2) / (bounds.width * 1.5); + } + var offsetX = ((this.game.width - bounds.width * 1.5) / 2) / this.windowScale; + this.game.world.scale.set(this.game.world.scale.x * this.windowScale, this.game.world.scale.y * this.windowScale); + this.game.world.pivot.set(bounds.x - offsetX, bounds.y - this.inputOptions.padding * 2); + PhaserInput.Zoomed = true; + }; + InputField.prototype.zoomOut = function () { + if (!PhaserInput.Zoomed) { + return; + } + this.game.world.scale.set(this.game.world.scale.x / this.windowScale, this.game.world.scale.y / this.windowScale); + this.game.world.pivot.set(0, 0); + PhaserInput.Zoomed = false; + }; + InputField.prototype.keyListener = function (evt) { + this.value = this.getFormattedText(this.domElement.value); + if (evt.keyCode === 13) { + if (this.focusOutOnEnter) { + this.endFocus(); + } + return; + } + this.updateText(); + this.updateCursor(); + this.updateSelection(); + evt.preventDefault(); + }; + InputField.prototype.destroy = function (destroyChildren) { + this.game.input.onDown.remove(this.checkDown, this); + this.focusIn.removeAll(); + this.focusOut.removeAll(); + this.domElement.destroy(); + _super.prototype.destroy.call(this, destroyChildren); + }; + InputField.prototype.resetText = function () { + this.setText(); + }; + InputField.prototype.setText = function (text) { + if (text === void 0) { text = ''; } + if (null !== this.placeHolder) { + if (text.length > 0) { + this.placeHolder.visible = false; + } + else { + this.placeHolder.visible = true; + } + } + this.value = this.getFormattedText(text); + this.domElement.value = this.value; + this.updateText(); + this.updateCursor(); + this.endFocus(); + }; + InputField.prototype.getFormattedText = function (text) { + switch (this.inputOptions.forceCase) { + default: + case ForceCase.none: + return text; + case ForceCase.lower: + return text.toLowerCase(); + case ForceCase.upper: + return text.toUpperCase(); + } + }; + return InputField; + }(Phaser.Sprite)); + PhaserInput.InputField = InputField; +})(PhaserInput || (PhaserInput = {})); +var PhaserInput; +(function (PhaserInput) { + var InputBox = (function (_super) { + __extends(InputBox, _super); + function InputBox(game, inputOptions) { + var _this = _super.call(this, game, 0, 0) || this; + _this.bgColor = (inputOptions.backgroundColor) ? parseInt(inputOptions.backgroundColor.slice(1), 16) : 0xffffff; + _this.borderRadius = inputOptions.borderRadius || 0; + _this.borderWidth = inputOptions.borderWidth || 1; + _this.borderColor = (inputOptions.borderColor) ? parseInt(inputOptions.borderColor.slice(1), 16) : 0x959595; + _this.boxAlpha = inputOptions.fillAlpha; + _this.padding = inputOptions.padding; + var height = inputOptions.height; + var width = inputOptions.width; + var height; + if (inputOptions.font) { + height = Math.max(parseInt(inputOptions.font.substr(0, inputOptions.font.indexOf('px')), 10), height); + } + _this.boxHeight = _this.padding * 2 + height; + var width = inputOptions.width; + _this.boxWidth = _this.padding * 2 + width; + _this.drawBox(); + return _this; + } + InputBox.prototype.resize = function (newWidth) { + this.boxWidth = this.padding * 2 + newWidth; + this.drawBox(); + }; + InputBox.prototype.drawBox = function () { + this.clear() + .beginFill(this.bgColor, this.boxAlpha) + .lineStyle(this.borderWidth, this.borderColor, this.boxAlpha); + if (this.borderRadius > 0) { + this.drawRoundedRect(0, 0, this.boxWidth, this.boxHeight, this.borderRadius); + } + else { + this.drawRect(0, 0, this.boxWidth, this.boxHeight); + } + }; + return InputBox; + }(Phaser.Graphics)); + PhaserInput.InputBox = InputBox; +})(PhaserInput || (PhaserInput = {})); +var PhaserInput; +(function (PhaserInput) { + var SelectionHighlight = (function (_super) { + __extends(SelectionHighlight, _super); + function SelectionHighlight(game, inputOptions) { + var _this = _super.call(this, game, inputOptions.padding, inputOptions.padding) || this; + _this.inputOptions = inputOptions; + return _this; + } + SelectionHighlight.prototype.updateSelection = function (rect) { + var color = Phaser.Color.webToColor(this.inputOptions.selectionColor); + this.clear(); + this.beginFill(SelectionHighlight.rgb2hex(color), color.a); + this.drawRect(rect.x, rect.y, rect.width, rect.height - this.inputOptions.padding); + }; + SelectionHighlight.rgb2hex = function (color) { + return parseInt(("0" + color.r.toString(16)).slice(-2) + + ("0" + color.g.toString(16)).slice(-2) + + ("0" + color.b.toString(16)).slice(-2), 16); + }; + return SelectionHighlight; + }(Phaser.Graphics)); + PhaserInput.SelectionHighlight = SelectionHighlight; +})(PhaserInput || (PhaserInput = {})); +var PhaserInput; +(function (PhaserInput) { + var TextMask = (function (_super) { + __extends(TextMask, _super); + function TextMask(game, inputOptions) { + var _this = _super.call(this, game, inputOptions.padding, inputOptions.padding) || this; + var height = inputOptions.height; + if (inputOptions.font) { + height = Math.max(parseInt(inputOptions.font.substr(0, inputOptions.font.indexOf('px')), 10), height); + } + _this.maskWidth = inputOptions.width; + _this.maskHeight = height * 1.3; + _this.drawMask(); + return _this; + } + TextMask.prototype.resize = function (newWidth) { + this.maskWidth = newWidth; + this.drawMask(); + }; + TextMask.prototype.drawMask = function () { + this.clear() + .beginFill(0x000000) + .drawRect(0, 0, this.maskWidth, this.maskHeight) + .endFill(); + }; + return TextMask; + }(Phaser.Graphics)); + PhaserInput.TextMask = TextMask; +})(PhaserInput || (PhaserInput = {})); +var PhaserInput; +(function (PhaserInput) { + PhaserInput.Zoomed = false; + PhaserInput.KeyboardOpen = false; + PhaserInput.onKeyboardOpen = new Phaser.Signal(); + PhaserInput.onKeyboardClose = new Phaser.Signal(); + var Plugin = (function (_super) { + __extends(Plugin, _super); + function Plugin(game, parent) { + var _this = _super.call(this, game, parent) || this; + _this.addInputFieldFactory(); + return _this; + } + Plugin.prototype.addInputFieldFactory = function () { + Phaser.GameObjectFactory.prototype.inputField = function (x, y, inputOptions, group) { + if (group === undefined) { + group = this.world; + } + var nineSliceObject = new PhaserInput.InputField(this.game, x, y, inputOptions); + return group.add(nineSliceObject); + }; + Phaser.GameObjectCreator.prototype.inputField = function (x, y, inputOptions) { + return new PhaserInput.InputField(this.game, x, y, inputOptions); + }; + }; + return Plugin; + }(Phaser.Plugin)); + Plugin.Zoomed = false; + Plugin.KeyboardOpen = false; + Plugin.onKeyboardOpen = new Phaser.Signal(); + Plugin.onKeyboardClose = new Phaser.Signal(); + PhaserInput.Plugin = Plugin; +})(PhaserInput || (PhaserInput = {})); +//# sourceMappingURL=phaser-input.js.map \ No newline at end of file diff --git a/src/util/phaser-input-master/build/phaser-input.js.map b/src/util/phaser-input-master/build/phaser-input.js.map new file mode 100755 index 0000000..0fd4d1e --- /dev/null +++ b/src/util/phaser-input-master/build/phaser-input.js.map @@ -0,0 +1 @@ +{"version":3,"file":"phaser-input.js","sourceRoot":"","sources":["../ts/InputElement.ts","../ts/InputField.ts","../ts/Objects/InputBox.ts","../ts/Objects/SelectionHighlight.ts","../ts/Objects/TextMask.ts","../ts/Plugin.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/util/phaser-input-master/build/phaser-input.min.js b/src/util/phaser-input-master/build/phaser-input.min.js new file mode 100755 index 0000000..a44a0ff --- /dev/null +++ b/src/util/phaser-input-master/build/phaser-input.min.js @@ -0,0 +1,10 @@ +/*! + * phaser-input - version 2.0.5 + * Adds input boxes to Phaser like CanvasInput, but also works for WebGL and Mobile, made for Phaser only. + * + * OrangeGames + * Build at 02-06-2017 + * Released under MIT License + */ + +var __extends=this&&this.__extends||function(){var a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])};return function(b,c){function d(){this.constructor=b}a(b,c),b.prototype=null===c?Object.create(c):(d.prototype=c.prototype,new d)}}(),PhaserInput;!function(a){var b;!function(a){a[a.text=0]="text",a[a.password=1]="password",a[a.number=2]="number"}(b=a.InputType||(a.InputType={}));var c=function(){function a(a,c,d,e,f,g){void 0===d&&(d=b.text),void 0===e&&(e="");var h=this;this.id=c,this.type=d,this.game=a,this.focusIn=f,this.focusOut=g;var i=this.game.canvas.getBoundingClientRect().top+document.body.scrollTop;this.element=document.createElement("input"),this.element.id=c,this.element.style.position="absolute",this.element.style.top=i+"px",this.element.style.left=(-40).toString()+"px",this.element.style.width=10..toString()+"px",this.element.style.height=10..toString()+"px",this.element.style.border="0px",this.element.value=this.value,this.element.type=b[d],this.element.addEventListener("focusin",function(){h.focusIn instanceof Phaser.Signal&&h.focusIn.dispatch()}),this.element.addEventListener("focusout",function(){h.focusOut instanceof Phaser.Signal&&h.focusOut.dispatch()}),document.body.appendChild(this.element)}return a.prototype.addKeyUpListener=function(a){this.keyUpCallback=a,document.addEventListener("keyup",this.keyUpCallback),this.element.addEventListener("input",this.keyUpCallback)},a.prototype.blockKeyDownEvents=function(){document.addEventListener("keydown",this.preventKeyPropagation)},a.prototype.preventKeyPropagation=function(a){a.stopPropagation?a.stopPropagation():event.cancelBubble=!0},a.prototype.unblockKeyDownEvents=function(){document.removeEventListener("keydown",this.preventKeyPropagation)},a.prototype.removeEventListener=function(){document.removeEventListener("keyup",this.keyUpCallback),this.element.removeEventListener("input",this.keyUpCallback)},a.prototype.destroy=function(){document.body.removeChild(this.element)},a.prototype.setMax=function(a,c){if(void 0!==a)if(this.type===b.text||this.type===b.password)this.element.maxLength=parseInt(a,10);else if(this.type===b.number){if(this.element.max=a,void 0===c)return;this.element.min=c}},Object.defineProperty(a.prototype,"value",{get:function(){return this.element.value},set:function(a){this.element.value=a},enumerable:!0,configurable:!0}),a.prototype.focus=function(){var a=this;if(this.element.focus(),!this.game.device.desktop&&this.game.device.chrome)var b=window.innerWidth,c=window.innerHeight,d=!1,e=setInterval(function(){(b>window.innerWidth||c>window.innerHeight)&&(d=!0),d&&b===window.innerWidth&&c===window.innerHeight&&(a.focusOut instanceof Phaser.Signal&&a.focusOut.dispatch(),clearInterval(e))},50)},a.prototype.blur=function(){this.element.blur()},Object.defineProperty(a.prototype,"hasSelection",{get:function(){return this.type===b.number?!1:this.element.selectionStart!==this.element.selectionEnd},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"caretStart",{get:function(){return this.element.selectionEnd},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"caretEnd",{get:function(){return this.element.selectionStart},enumerable:!0,configurable:!0}),a.prototype.getCaretPosition=function(){return this.type===b.number?-1:this.element.selectionStart},a.prototype.setCaretPosition=function(a){this.type!==b.number&&this.element.setSelectionRange(a,a)},a}();a.InputElement=c}(PhaserInput||(PhaserInput={}));var PhaserInput;!function(a){var b;!function(a){a[a.none=0]="none",a[a.lower=1]="lower",a[a.upper=2]="upper"}(b=a.ForceCase||(a.ForceCase={}));var c=function(c){function d(d,e,f,g){void 0===g&&(g={});var h=c.call(this,d,e,f)||this;return h.focusOutOnEnter=!0,h.placeHolder=null,h.box=null,h.focus=!1,h.value="",h.windowScale=1,h.blockInput=!0,h.focusIn=new Phaser.Signal,h.focusOut=new Phaser.Signal,h.blink=!0,h.cnt=0,h.inputOptions=g,h.inputOptions.width="number"==typeof g.width?g.width:150,h.inputOptions.padding="number"==typeof g.padding?g.padding:0,h.inputOptions.textAlign=g.textAlign||"left",h.inputOptions.type=g.type||a.InputType.text,h.inputOptions.forceCase=g.forceCase?g.forceCase:b.none,h.inputOptions.borderRadius="number"==typeof g.borderRadius?g.borderRadius:0,h.inputOptions.height="number"==typeof g.height?g.height:14,h.inputOptions.fillAlpha=void 0===g.fillAlpha?1:g.fillAlpha,h.inputOptions.selectionColor=g.selectionColor||"rgba(179, 212, 253, 0.8)",h.inputOptions.zoom=d.device.desktop?!1:g.zoom||!1,h.box=new a.InputBox(h.game,g),h.setTexture(h.box.generateTexture()),h.textMask=new a.TextMask(h.game,g),h.addChild(h.textMask),h.domElement=new a.InputElement(h.game,"phaser-input-"+(1e4*Math.random()|0).toString(),h.inputOptions.type,h.value,h.focusIn,h.focusOut),h.domElement.setMax(h.inputOptions.max,h.inputOptions.min),h.selection=new a.SelectionHighlight(h.game,h.inputOptions),h.selection.mask=h.textMask,h.addChild(h.selection),g.placeHolder&&g.placeHolder.length>0&&(h.placeHolder=new Phaser.Text(d,h.inputOptions.padding,h.inputOptions.padding,g.placeHolder,{font:g.font||"14px Arial",fontWeight:g.fontWeight||"normal",fill:g.placeHolderColor||"#bfbebd"}),h.placeHolder.mask=h.textMask,h.addChild(h.placeHolder)),h.cursor=new Phaser.Text(d,h.inputOptions.padding,h.inputOptions.padding-2,"|",{font:g.font||"14px Arial",fontWeight:g.fontWeight||"normal",fill:g.cursorColor||"#000000"}),h.cursor.visible=!1,h.addChild(h.cursor),h.text=new Phaser.Text(d,h.inputOptions.padding,h.inputOptions.padding,"",{font:g.font||"14px Arial",fontWeight:g.fontWeight||"normal",fill:g.fill||"#000000"}),h.text.mask=h.textMask,h.addChild(h.text),h.offscreenText=new Phaser.Text(d,h.inputOptions.padding,h.inputOptions.padding,"",{font:g.font||"14px Arial",fontWeight:g.fontWeight||"normal",fill:g.fill||"#000000"}),h.updateTextAlignment(),h.inputEnabled=!0,h.input.useHandCursor=!0,h.game.input.onDown.add(h.checkDown,h),h.focusOut.add(function(){a.KeyboardOpen&&(h.endFocus(),h.inputOptions.zoom&&h.zoomOut())}),h}return __extends(d,c),Object.defineProperty(d.prototype,"width",{get:function(){return this.inputOptions.width},set:function(a){this.inputOptions.width=a,this.box.resize(a),this.textMask.resize(a),this.updateTextAlignment()},enumerable:!0,configurable:!0}),d.prototype.updateTextAlignment=function(){switch(this.inputOptions.textAlign){case"left":this.text.anchor.set(0,0),this.text.x=this.inputOptions.padding,null!==this.placeHolder&&this.placeHolder.anchor.set(0,0),this.cursor.x=this.inputOptions.padding+this.getCaretPosition();break;case"center":this.text.anchor.set(.5,0),this.text.x=this.inputOptions.padding+this.inputOptions.width/2,null!==this.placeHolder&&(this.placeHolder.anchor.set(.5,0),this.placeHolder.x=this.inputOptions.padding+this.inputOptions.width/2),this.cursor.x=this.inputOptions.padding+this.inputOptions.width/2-this.text.width/2+this.getCaretPosition();break;case"right":this.text.anchor.set(1,0),this.text.x=this.inputOptions.padding+this.inputOptions.width,null!==this.placeHolder&&(this.placeHolder.anchor.set(1,0),this.placeHolder.x=this.inputOptions.padding+this.inputOptions.width),this.cursor.x=this.inputOptions.padding+this.inputOptions.width}},d.prototype.checkDown=function(b){if(this.value||this.resetText(),this.input.checkPointerOver(b)){if(this.focus)return void this.setCaretOnclick(b);this.inputOptions.zoom&&!a.Zoomed&&this.zoomIn(),this.startFocus()}else this.focus===!0&&(this.endFocus(),this.inputOptions.zoom&&this.zoomOut())},d.prototype.update=function(){if(this.text.update(),this.placeHolder&&this.placeHolder.update(),this.focus){if(30!==this.cnt)return this.cnt++;this.cursor.visible=this.blink,this.blink=!this.blink,this.cnt=0}},d.prototype.endFocus=function(){var b=this;this.focus&&(this.domElement.removeEventListener(),this.blockInput===!0&&this.domElement.unblockKeyDownEvents(),this.focus=!1,0===this.value.length&&null!==this.placeHolder&&(this.placeHolder.visible=!0),this.cursor.visible=!1,this.game.device.desktop?setTimeout(function(){b.domElement.blur()},0):this.domElement.blur(),this.game.device.desktop||(a.KeyboardOpen=!1,a.onKeyboardClose.dispatch()))},d.prototype.startFocus=function(){var b=this;this.focus=!0,null!==this.placeHolder&&(this.placeHolder.visible=!1),this.game.device.desktop?setTimeout(function(){b.keyUpProcessor()},0):this.keyUpProcessor(),this.game.device.desktop||(a.KeyboardOpen=!0,a.onKeyboardOpen.dispatch())},d.prototype.keyUpProcessor=function(){this.domElement.addKeyUpListener(this.keyListener.bind(this)),this.domElement.focus(),this.blockInput===!0&&this.domElement.blockKeyDownEvents()},d.prototype.updateText=function(){var b="";if(this.inputOptions.type===a.InputType.password)for(var c=0;cparseInt(this.inputOptions.max)?this.value=this.domElement.value=this.inputOptions.max:this.value}else b=this.value;if(this.text.setText(b),this.text.width>this.inputOptions.width)this.text.anchor.x=1,this.text.x=this.inputOptions.padding+this.inputOptions.width;else switch(this.inputOptions.textAlign){case"left":this.text.anchor.set(0,0),this.text.x=this.inputOptions.padding;break;case"center":this.text.anchor.set(.5,0),this.text.x=this.inputOptions.padding+this.inputOptions.width/2;break;case"right":this.text.anchor.set(1,0),this.text.x=this.inputOptions.padding+this.inputOptions.width}},d.prototype.updateCursor=function(){if(this.text.width>this.inputOptions.width||"right"===this.inputOptions.textAlign)this.cursor.x=this.inputOptions.padding+this.inputOptions.width;else switch(this.inputOptions.textAlign){case"left":this.cursor.x=this.inputOptions.padding+this.getCaretPosition();break;case"center":this.cursor.x=this.inputOptions.padding+this.inputOptions.width/2-this.text.width/2+this.getCaretPosition()}},d.prototype.getCaretPosition=function(){var b=this.domElement.getCaretPosition();if(-1===b)return this.text.width;var c=this.value;if(this.inputOptions.type===a.InputType.password){c="";for(var d=0;d=e*c&&(e+1)*c>=b){d=e;break}b>(this.value.length-1)*c&&(d=this.value.length),this.startFocus(),this.domElement.setCaretPosition(d),this.updateCursor()},d.prototype.updateSelection=function(){if(this.domElement.hasSelection){var b=this.value;if(this.inputOptions.type===a.InputType.password){b="";for(var c=0;cwindow.innerWidth?this.windowScale=this.game.width/(1.5*b.width):this.windowScale=this.game.width/2/(1.5*b.width);var c=(this.game.width-1.5*b.width)/2/this.windowScale;this.game.world.scale.set(this.game.world.scale.x*this.windowScale,this.game.world.scale.y*this.windowScale),this.game.world.pivot.set(b.x-c,b.y-2*this.inputOptions.padding),a.Zoomed=!0}},d.prototype.zoomOut=function(){a.Zoomed&&(this.game.world.scale.set(this.game.world.scale.x/this.windowScale,this.game.world.scale.y/this.windowScale),this.game.world.pivot.set(0,0),a.Zoomed=!1)},d.prototype.keyListener=function(a){return this.value=this.getFormattedText(this.domElement.value),13===a.keyCode?void(this.focusOutOnEnter&&this.endFocus()):(this.updateText(),this.updateCursor(),this.updateSelection(),void a.preventDefault())},d.prototype.destroy=function(a){this.game.input.onDown.remove(this.checkDown,this),this.focusIn.removeAll(),this.focusOut.removeAll(),this.domElement.destroy(),c.prototype.destroy.call(this,a)},d.prototype.resetText=function(){this.setText()},d.prototype.setText=function(a){void 0===a&&(a=""),null!==this.placeHolder&&(a.length>0?this.placeHolder.visible=!1:this.placeHolder.visible=!0),this.value=this.getFormattedText(a),this.domElement.value=this.value,this.updateText(),this.updateCursor(),this.endFocus()},d.prototype.getFormattedText=function(a){switch(this.inputOptions.forceCase){default:case b.none:return a;case b.lower:return a.toLowerCase();case b.upper:return a.toUpperCase()}},d}(Phaser.Sprite);a.InputField=c}(PhaserInput||(PhaserInput={}));var PhaserInput;!function(a){var b=function(a){function b(b,c){var d=a.call(this,b,0,0)||this;d.bgColor=c.backgroundColor?parseInt(c.backgroundColor.slice(1),16):16777215,d.borderRadius=c.borderRadius||0,d.borderWidth=c.borderWidth||1,d.borderColor=c.borderColor?parseInt(c.borderColor.slice(1),16):9803157,d.boxAlpha=c.fillAlpha,d.padding=c.padding;var e,e=c.height,f=c.width;c.font&&(e=Math.max(parseInt(c.font.substr(0,c.font.indexOf("px")),10),e)),d.boxHeight=2*d.padding+e;var f=c.width;return d.boxWidth=2*d.padding+f,d.drawBox(),d}return __extends(b,a),b.prototype.resize=function(a){this.boxWidth=2*this.padding+a,this.drawBox()},b.prototype.drawBox=function(){this.clear().beginFill(this.bgColor,this.boxAlpha).lineStyle(this.borderWidth,this.borderColor,this.boxAlpha),this.borderRadius>0?this.drawRoundedRect(0,0,this.boxWidth,this.boxHeight,this.borderRadius):this.drawRect(0,0,this.boxWidth,this.boxHeight)},b}(Phaser.Graphics);a.InputBox=b}(PhaserInput||(PhaserInput={}));var PhaserInput;!function(a){var b=function(a){function b(b,c){var d=a.call(this,b,c.padding,c.padding)||this;return d.inputOptions=c,d}return __extends(b,a),b.prototype.updateSelection=function(a){var c=Phaser.Color.webToColor(this.inputOptions.selectionColor);this.clear(),this.beginFill(b.rgb2hex(c),c.a),this.drawRect(a.x,a.y,a.width,a.height-this.inputOptions.padding)},b.rgb2hex=function(a){return parseInt(("0"+a.r.toString(16)).slice(-2)+("0"+a.g.toString(16)).slice(-2)+("0"+a.b.toString(16)).slice(-2),16)},b}(Phaser.Graphics);a.SelectionHighlight=b}(PhaserInput||(PhaserInput={}));var PhaserInput;!function(a){var b=function(a){function b(b,c){var d=a.call(this,b,c.padding,c.padding)||this,e=c.height;return c.font&&(e=Math.max(parseInt(c.font.substr(0,c.font.indexOf("px")),10),e)),d.maskWidth=c.width,d.maskHeight=1.3*e,d.drawMask(),d}return __extends(b,a),b.prototype.resize=function(a){this.maskWidth=a,this.drawMask()},b.prototype.drawMask=function(){this.clear().beginFill(0).drawRect(0,0,this.maskWidth,this.maskHeight).endFill()},b}(Phaser.Graphics);a.TextMask=b}(PhaserInput||(PhaserInput={}));var PhaserInput;!function(a){a.Zoomed=!1,a.KeyboardOpen=!1,a.onKeyboardOpen=new Phaser.Signal,a.onKeyboardClose=new Phaser.Signal;var b=function(b){function c(a,c){var d=b.call(this,a,c)||this;return d.addInputFieldFactory(),d}return __extends(c,b),c.prototype.addInputFieldFactory=function(){Phaser.GameObjectFactory.prototype.inputField=function(b,c,d,e){void 0===e&&(e=this.world);var f=new a.InputField(this.game,b,c,d);return e.add(f)},Phaser.GameObjectCreator.prototype.inputField=function(b,c,d){return new a.InputField(this.game,b,c,d)}},c}(Phaser.Plugin);b.Zoomed=!1,b.KeyboardOpen=!1,b.onKeyboardOpen=new Phaser.Signal,b.onKeyboardClose=new Phaser.Signal,a.Plugin=b}(PhaserInput||(PhaserInput={})); \ No newline at end of file diff --git a/src/util/phaser-input-master/config/tsconfig.json b/src/util/phaser-input-master/config/tsconfig.json new file mode 100755 index 0000000..6aab3cf --- /dev/null +++ b/src/util/phaser-input-master/config/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "module": "amd", + "target": "es5", + "sourceMap": true, + "noImplicitAny": true, + "removeComments": false, + "declaration": true, + "preserveConstEnums": true + } +} \ No newline at end of file diff --git a/src/util/phaser-input-master/config/tslint.json b/src/util/phaser-input-master/config/tslint.json new file mode 100755 index 0000000..d12a2cb --- /dev/null +++ b/src/util/phaser-input-master/config/tslint.json @@ -0,0 +1,131 @@ +{ + "rules": { + "align": [ + true, + "parameters", + "statements" + ], + "ban": false, + "class-name": true, + "curly": true, + "eofline": true, + "forin": true, + "indent": [ + true, + "spaces" + ], + "interface-name": true, + "jsdoc-format": true, + "label-position": true, + "label-undefined": true, + "max-line-length": [ + true, + 200 + ], + "member-access": true, + "no-any": false, + "no-arg": true, + "no-conditional-assignment": true, + "no-consecutive-blank-lines": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-constructor-vars": true, + "no-debugger": true, + "no-duplicate-key": true, + "no-duplicate-variable": true, + "no-empty": true, + "no-eval": true, + "no-inferrable-types": false, + "no-internal-module": false, + "no-null-keyword": false, + "no-require-imports": false, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-switch-case-fall-through": false, + "no-trailing-whitespace": true, + "no-unreachable": true, + "no-unused-expression": true, + "no-unused-variable": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "no-var-requires": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-finally", + "check-whitespace" + ], + "quotemark": [ + true, + "single", + "avoid-escape" + ], + "radix": true, + "semicolon": [ + true, + "always" + ], + "switch-default": false, + "trailing-comma": [ + true, + { + "multiline": "never", + "singleline": "never" + } + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef": [ + true, + "call-signature", + "parameter", + "arrow-parameter", + "property-declaration", + "variable-declaration", + "member-variable-declaration" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" + } + ], + "use-strict": false, + "variable-name": [ + true, + "allow-leading-underscore", + "ban-keywords" + ], + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ] + } +} \ No newline at end of file diff --git a/src/util/phaser-input-master/example/images/bg.png b/src/util/phaser-input-master/example/images/bg.png new file mode 100755 index 0000000..b6a2db9 Binary files /dev/null and b/src/util/phaser-input-master/example/images/bg.png differ diff --git a/src/util/phaser-input-master/example/images/btn_clean.png b/src/util/phaser-input-master/example/images/btn_clean.png new file mode 100755 index 0000000..948bbea Binary files /dev/null and b/src/util/phaser-input-master/example/images/btn_clean.png differ diff --git a/src/util/phaser-input-master/example/images/inputfield.png b/src/util/phaser-input-master/example/images/inputfield.png new file mode 100755 index 0000000..5e71e1b Binary files /dev/null and b/src/util/phaser-input-master/example/images/inputfield.png differ diff --git a/src/util/phaser-input-master/example/index.html b/src/util/phaser-input-master/example/index.html new file mode 100755 index 0000000..ef84678 --- /dev/null +++ b/src/util/phaser-input-master/example/index.html @@ -0,0 +1,170 @@ + + + + + + + + Login example for Phaser Input + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/util/phaser-input-master/package-lock.json b/src/util/phaser-input-master/package-lock.json new file mode 100755 index 0000000..69ee6b6 --- /dev/null +++ b/src/util/phaser-input-master/package-lock.json @@ -0,0 +1,1942 @@ +{ + "name": "@orange-games/phaser-input", + "version": "2.0.4", + "lockfileVersion": 1, + "dependencies": { + "@orange-games/phaser-nineslice": { + "version": "https://registry.npmjs.org/@orange-games/phaser-nineslice/-/phaser-nineslice-2.0.0.tgz", + "integrity": "sha1-cXbZ6WGxNxSmaOruvJNExHg7Klg=", + "dev": true + }, + "abbrev": { + "version": "http://og-npm.ds.orangegames.com/abbrev/-/abbrev-1.0.7.tgz", + "integrity": "sha1-W2A1su6dT7XPhZ8Iqb6BsghJGEM=", + "dev": true + }, + "accepts": { + "version": "http://og-npm.ds.orangegames.com/accepts/-/accepts-1.2.13.tgz", + "integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=", + "dev": true + }, + "align-text": { + "version": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true + }, + "ansi-regex": { + "version": "http://og-npm.ds.orangegames.com/ansi-regex/-/ansi-regex-2.0.0.tgz", + "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=", + "dev": true + }, + "ansi-styles": { + "version": "http://og-npm.ds.orangegames.com/ansi-styles/-/ansi-styles-2.2.0.tgz", + "integrity": "sha1-xZGRk25u0cExWktra5fzrPv6aLA=", + "dev": true + }, + "anymatch": { + "version": "http://og-npm.ds.orangegames.com/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "dev": true + }, + "argparse": { + "version": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true + }, + "arr-diff": { + "version": "http://og-npm.ds.orangegames.com/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true + }, + "arr-flatten": { + "version": "http://og-npm.ds.orangegames.com/arr-flatten/-/arr-flatten-1.0.1.tgz", + "integrity": "sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=", + "dev": true + }, + "array-find-index": { + "version": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-unique": { + "version": "http://og-npm.ds.orangegames.com/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "http://og-npm.ds.orangegames.com/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "async": { + "version": "http://og-npm.ds.orangegames.com/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + }, + "basic-auth": { + "version": "http://og-npm.ds.orangegames.com/basic-auth/-/basic-auth-1.0.3.tgz", + "integrity": "sha1-QfVVI+WJQFA47jVnlYxipe1wVRo=", + "dev": true + }, + "batch": { + "version": "http://og-npm.ds.orangegames.com/batch/-/batch-0.5.3.tgz", + "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=", + "dev": true + }, + "binary-extensions": { + "version": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", + "dev": true + }, + "brace-expansion": { + "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=", + "dev": true + }, + "braces": { + "version": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true + }, + "buffer-shims": { + "version": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "builtin-modules": { + "version": "http://og-npm.ds.orangegames.com/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "camelcase": { + "version": "http://og-npm.ds.orangegames.com/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "camelcase-keys": { + "version": "http://og-npm.ds.orangegames.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "http://og-npm.ds.orangegames.com/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "center-align": { + "version": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true + }, + "chalk": { + "version": "http://og-npm.ds.orangegames.com/chalk/-/chalk-1.1.1.tgz", + "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=", + "dev": true + }, + "chokidar": { + "version": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.1.tgz", + "integrity": "sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=", + "dev": true + }, + "cliui": { + "version": "http://og-npm.ds.orangegames.com/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true + }, + "coffee-script": { + "version": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", + "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=", + "dev": true + }, + "color-convert": { + "version": "http://og-npm.ds.orangegames.com/color-convert/-/color-convert-1.0.0.tgz", + "integrity": "sha1-PCb82IXSctRb6s9uQbq6dciahXk=", + "dev": true + }, + "colors": { + "version": "http://og-npm.ds.orangegames.com/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "concat-map": { + "version": "http://og-npm.ds.orangegames.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "connect": { + "version": "http://og-npm.ds.orangegames.com/connect/-/connect-3.4.1.tgz", + "integrity": "sha1-ohNh0/QJnvdhzabcSpc7seuwo00=", + "dev": true + }, + "connect-livereload": { + "version": "http://og-npm.ds.orangegames.com/connect-livereload/-/connect-livereload-0.5.4.tgz", + "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", + "dev": true + }, + "core-util-is": { + "version": "http://og-npm.ds.orangegames.com/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "csproj2ts": { + "version": "https://registry.npmjs.org/csproj2ts/-/csproj2ts-0.0.8.tgz", + "integrity": "sha1-nRxxniDELM6MTeKQCO/DVUn9Em8=", + "dev": true, + "dependencies": { + "es6-promise": { + "version": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz", + "integrity": "sha1-eILzCt3lskDM+n99eMVIMwlRrkI=", + "dev": true + }, + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + } + } + }, + "currently-unhandled": { + "version": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true + }, + "dateformat": { + "version": "http://og-npm.ds.orangegames.com/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true + }, + "debug": { + "version": "http://og-npm.ds.orangegames.com/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true + }, + "decamelize": { + "version": "http://og-npm.ds.orangegames.com/decamelize/-/decamelize-1.1.2.tgz", + "integrity": "sha1-3Mk3J74gljLpiwJxjvTLeWAjIvI=", + "dev": true + }, + "depd": { + "version": "http://og-npm.ds.orangegames.com/depd/-/depd-1.0.1.tgz", + "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=", + "dev": true + }, + "destroy": { + "version": "http://og-npm.ds.orangegames.com/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "duplexer": { + "version": "http://og-npm.ds.orangegames.com/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "ee-first": { + "version": "http://og-npm.ds.orangegames.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "error-ex": { + "version": "http://og-npm.ds.orangegames.com/error-ex/-/error-ex-1.3.0.tgz", + "integrity": "sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=", + "dev": true + }, + "es6-promise": { + "version": "https://registry.npmjs.org/es6-promise/-/es6-promise-0.1.2.tgz", + "integrity": "sha1-8RLCn+paCZhTn8tqL9IUQ9KPBfc=", + "dev": true + }, + "escape-html": { + "version": "http://og-npm.ds.orangegames.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "http://og-npm.ds.orangegames.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "etag": { + "version": "http://og-npm.ds.orangegames.com/etag/-/etag-1.7.0.tgz", + "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=", + "dev": true + }, + "eventemitter2": { + "version": "http://og-npm.ds.orangegames.com/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "exit": { + "version": "http://og-npm.ds.orangegames.com/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "http://og-npm.ds.orangegames.com/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true + }, + "expand-range": { + "version": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true + }, + "extglob": { + "version": "http://og-npm.ds.orangegames.com/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true + }, + "faye-websocket": { + "version": "http://og-npm.ds.orangegames.com/faye-websocket/-/faye-websocket-0.4.4.tgz", + "integrity": "sha1-wUxbO/FNdBf/v9mQwKdJXNnzN7w=", + "dev": true + }, + "figures": { + "version": "http://og-npm.ds.orangegames.com/figures/-/figures-1.4.0.tgz", + "integrity": "sha1-649WOQ2+MIEESlwqnZCJB1pIQy8=", + "dev": true + }, + "filename-regex": { + "version": "http://og-npm.ds.orangegames.com/filename-regex/-/filename-regex-2.0.0.tgz", + "integrity": "sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=", + "dev": true + }, + "fill-range": { + "version": "http://og-npm.ds.orangegames.com/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true + }, + "finalhandler": { + "version": "http://og-npm.ds.orangegames.com/finalhandler/-/finalhandler-0.4.1.tgz", + "integrity": "sha1-haF8bFmpRxfSYtYSMNSw6+PUoU0=", + "dev": true + }, + "find-up": { + "version": "http://og-npm.ds.orangegames.com/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true + }, + "findup-sync": { + "version": "http://og-npm.ds.orangegames.com/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "dependencies": { + "glob": { + "version": "http://og-npm.ds.orangegames.com/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dev": true + } + } + }, + "for-in": { + "version": "https://registry.npmjs.org/for-in/-/for-in-0.1.6.tgz", + "integrity": "sha1-yfluib+tGKVFr17D7TUqHZ5bTcg=", + "dev": true + }, + "for-own": { + "version": "https://registry.npmjs.org/for-own/-/for-own-0.1.4.tgz", + "integrity": "sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=", + "dev": true + }, + "fresh": { + "version": "http://og-npm.ds.orangegames.com/fresh/-/fresh-0.3.0.tgz", + "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=", + "dev": true + }, + "fs.realpath": { + "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.1.tgz", + "integrity": "sha1-8Z/Sj0Pur3YWgOUZogPE0LPTGv8=", + "dev": true, + "optional": true, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.11.0", + "bundled": true, + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "commander": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "deep-extend": { + "version": "0.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "extend": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.10", + "bundled": true, + "dev": true + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.3", + "bundled": true, + "dev": true, + "optional": true + }, + "generate-function": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "generate-object-property": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "getpass": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.1", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "2.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-my-json-valid": { + "version": "2.15.0", + "bundled": true, + "dev": true, + "optional": true + }, + "is-property": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonpointer": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.26.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.14", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.3", + "bundled": true, + "dev": true + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "ms": { + "version": "0.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.33", + "bundled": true, + "dev": true, + "optional": true + }, + "nopt": { + "version": "3.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npmlog": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.3.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "optional": true + }, + "request": { + "version": "2.79.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rimraf": { + "version": "2.5.4", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true + }, + "sshpk": { + "version": "1.10.2", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "tar-pack": { + "version": "3.3.0", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "once": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "2.1.5", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.4.3", + "bundled": true, + "dev": true, + "optional": true + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "gaze": { + "version": "http://og-npm.ds.orangegames.com/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "dev": true + }, + "get-stdin": { + "version": "http://og-npm.ds.orangegames.com/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "getobject": { + "version": "http://og-npm.ds.orangegames.com/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true + }, + "glob": { + "version": "http://og-npm.ds.orangegames.com/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true, + "dependencies": { + "inherits": { + "version": "http://og-npm.ds.orangegames.com/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + } + } + }, + "glob-base": { + "version": "http://og-npm.ds.orangegames.com/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true + }, + "glob-parent": { + "version": "http://og-npm.ds.orangegames.com/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true + }, + "globule": { + "version": "http://og-npm.ds.orangegames.com/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dev": true, + "dependencies": { + "lodash": { + "version": "http://og-npm.ds.orangegames.com/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "http://og-npm.ds.orangegames.com/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "grunt": { + "version": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz", + "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=", + "dev": true, + "dependencies": { + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true + }, + "grunt-cli": { + "version": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "dev": true + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dev": true + } + } + }, + "grunt-banner": { + "version": "http://og-npm.ds.orangegames.com/grunt-banner/-/grunt-banner-0.6.0.tgz", + "integrity": "sha1-P4eQIdEj+linuloLb7a+QStYhaw=", + "dev": true + }, + "grunt-contrib-clean": { + "version": "http://og-npm.ds.orangegames.com/grunt-contrib-clean/-/grunt-contrib-clean-0.6.0.tgz", + "integrity": "sha1-9TLbpLghJnTHwBPhRr2mY4uQSPY=", + "dev": true + }, + "grunt-contrib-connect": { + "version": "http://og-npm.ds.orangegames.com/grunt-contrib-connect/-/grunt-contrib-connect-0.11.2.tgz", + "integrity": "sha1-HAoHB9OzKNnPO0tJDrhMSV2Tau0=", + "dev": true, + "dependencies": { + "async": { + "version": "http://og-npm.ds.orangegames.com/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + } + } + }, + "grunt-contrib-uglify": { + "version": "http://og-npm.ds.orangegames.com/grunt-contrib-uglify/-/grunt-contrib-uglify-0.11.1.tgz", + "integrity": "sha1-XiKi9nbNEdhx/CoPCKqbKXMEUyU=", + "dev": true, + "dependencies": { + "lodash": { + "version": "http://og-npm.ds.orangegames.com/lodash/-/lodash-4.5.1.tgz", + "integrity": "sha1-gOigdMpfOJOmscELKmNkktcQwxY=", + "dev": true + } + } + }, + "grunt-contrib-watch": { + "version": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz", + "integrity": "sha1-ZP3LolpjX1tNobbOb5DaCutuPxU=", + "dev": true, + "dependencies": { + "async": { + "version": "http://og-npm.ds.orangegames.com/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "lodash": { + "version": "http://og-npm.ds.orangegames.com/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "grunt-known-options": { + "version": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", + "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=", + "dev": true + }, + "grunt-legacy-log": { + "version": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz", + "integrity": "sha1-+4bxgJhHvAfcR4Q/ns1srLYt8tU=", + "dev": true + }, + "grunt-legacy-log-utils": { + "version": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", + "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", + "dev": true, + "dependencies": { + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", + "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", + "dev": true + } + } + }, + "grunt-legacy-util": { + "version": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", + "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", + "dev": true, + "dependencies": { + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", + "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", + "dev": true + } + } + }, + "grunt-ts": { + "version": "https://registry.npmjs.org/grunt-ts/-/grunt-ts-6.0.0-beta.11.tgz", + "integrity": "sha1-TleIAPLnlgZpb8H4PEqY4Z6Vb1Y=", + "dev": true, + "dependencies": { + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "rimraf": { + "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", + "integrity": "sha1-xZWXVpsU2VatKcrMQr3d9fDqT0w=", + "dev": true + } + } + }, + "gzip-size": { + "version": "http://og-npm.ds.orangegames.com/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dev": true + }, + "has-ansi": { + "version": "http://og-npm.ds.orangegames.com/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true + }, + "hooker": { + "version": "http://og-npm.ds.orangegames.com/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true + }, + "hosted-git-info": { + "version": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz", + "integrity": "sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=", + "dev": true + }, + "http-errors": { + "version": "http://og-npm.ds.orangegames.com/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "dev": true + }, + "iconv-lite": { + "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", + "dev": true + }, + "indent-string": { + "version": "http://og-npm.ds.orangegames.com/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true + }, + "inflight": { + "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true + }, + "inherits": { + "version": "http://og-npm.ds.orangegames.com/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "is-arrayish": { + "version": "http://og-npm.ds.orangegames.com/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "http://og-npm.ds.orangegames.com/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true + }, + "is-buffer": { + "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.2.tgz", + "integrity": "sha1-+hImWI+gBIsAXEfk+xuxVV1e3qo=", + "dev": true + }, + "is-builtin-module": { + "version": "http://og-npm.ds.orangegames.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true + }, + "is-dotfile": { + "version": "http://og-npm.ds.orangegames.com/is-dotfile/-/is-dotfile-1.0.2.tgz", + "integrity": "sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=", + "dev": true + }, + "is-equal-shallow": { + "version": "http://og-npm.ds.orangegames.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true + }, + "is-extendable": { + "version": "http://og-npm.ds.orangegames.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "http://og-npm.ds.orangegames.com/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true + }, + "is-glob": { + "version": "http://og-npm.ds.orangegames.com/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true + }, + "is-number": { + "version": "http://og-npm.ds.orangegames.com/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true + }, + "is-posix-bracket": { + "version": "http://og-npm.ds.orangegames.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "http://og-npm.ds.orangegames.com/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-utf8": { + "version": "http://og-npm.ds.orangegames.com/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "http://og-npm.ds.orangegames.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "http://og-npm.ds.orangegames.com/isexe/-/isexe-1.1.2.tgz", + "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", + "dev": true + }, + "isobject": { + "version": "http://og-npm.ds.orangegames.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true + }, + "js-yaml": { + "version": "http://og-npm.ds.orangegames.com/js-yaml/-/js-yaml-3.5.5.tgz", + "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", + "dev": true + }, + "kind-of": { + "version": "http://og-npm.ds.orangegames.com/kind-of/-/kind-of-3.0.2.tgz", + "integrity": "sha1-GH20JwRufpCUVpLmdoZovWkA3qA=", + "dev": true + }, + "lazy-cache": { + "version": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.3.tgz", + "integrity": "sha1-6XdUYY+ciGu5mbL/aceLgkU9ZnQ=", + "dev": true + }, + "load-json-file": { + "version": "http://og-npm.ds.orangegames.com/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "dependencies": { + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, + "lodash": { + "version": "http://og-npm.ds.orangegames.com/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "longest": { + "version": "http://og-npm.ds.orangegames.com/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loud-rejection": { + "version": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true + }, + "lru-cache": { + "version": "http://og-npm.ds.orangegames.com/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "map-obj": { + "version": "http://og-npm.ds.orangegames.com/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "maxmin": { + "version": "http://og-npm.ds.orangegames.com/maxmin/-/maxmin-2.1.0.tgz", + "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", + "dev": true + }, + "meow": { + "version": "http://og-npm.ds.orangegames.com/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true + }, + "micromatch": { + "version": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true + }, + "mime": { + "version": "http://og-npm.ds.orangegames.com/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "mime-db": { + "version": "http://og-npm.ds.orangegames.com/mime-db/-/mime-db-1.21.0.tgz", + "integrity": "sha1-m1I54zU89usBWgDYkCYQJ8NtS6w=", + "dev": true + }, + "mime-types": { + "version": "http://og-npm.ds.orangegames.com/mime-types/-/mime-types-2.1.9.tgz", + "integrity": "sha1-37OWdktf33W+NLH0EEvDaH+2Nfg=", + "dev": true + }, + "minimatch": { + "version": "http://og-npm.ds.orangegames.com/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true + }, + "minimist": { + "version": "http://og-npm.ds.orangegames.com/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "morgan": { + "version": "http://og-npm.ds.orangegames.com/morgan/-/morgan-1.6.1.tgz", + "integrity": "sha1-X9gYOYxoGcuiinzWZk8pL+HAu/I=", + "dev": true + }, + "ms": { + "version": "http://og-npm.ds.orangegames.com/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "dev": true, + "optional": true + }, + "ncp": { + "version": "https://registry.npmjs.org/ncp/-/ncp-0.5.1.tgz", + "integrity": "sha1-dDmFMW49tFkoG1hxaehFc1oFQ58=", + "dev": true + }, + "negotiator": { + "version": "http://og-npm.ds.orangegames.com/negotiator/-/negotiator-0.5.3.tgz", + "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g=", + "dev": true + }, + "nopt": { + "version": "http://og-npm.ds.orangegames.com/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true + }, + "noptify": { + "version": "http://og-npm.ds.orangegames.com/noptify/-/noptify-0.0.3.tgz", + "integrity": "sha1-WPZUpz2XU98MUdlobckhBKZ/S7s=", + "dev": true, + "dependencies": { + "nopt": { + "version": "http://og-npm.ds.orangegames.com/nopt/-/nopt-2.0.0.tgz", + "integrity": "sha1-ynQW8gpeP5w7hhgPlilfo9C1Lg0=", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "http://og-npm.ds.orangegames.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz", + "integrity": "sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=", + "dev": true + }, + "normalize-path": { + "version": "http://og-npm.ds.orangegames.com/normalize-path/-/normalize-path-2.0.1.tgz", + "integrity": "sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=", + "dev": true + }, + "number-is-nan": { + "version": "http://og-npm.ds.orangegames.com/number-is-nan/-/number-is-nan-1.0.0.tgz", + "integrity": "sha1-wCD1KcUoKt/dIz2R1LGBw9aG3Es=", + "dev": true + }, + "object-assign": { + "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true + }, + "on-finished": { + "version": "http://og-npm.ds.orangegames.com/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true + }, + "on-headers": { + "version": "http://og-npm.ds.orangegames.com/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true + }, + "opn": { + "version": "http://og-npm.ds.orangegames.com/opn/-/opn-1.0.2.tgz", + "integrity": "sha1-uQlkM0bQChq8l3qLlvPOPFPVz18=", + "dev": true + }, + "parse-glob": { + "version": "http://og-npm.ds.orangegames.com/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true + }, + "parse-json": { + "version": "http://og-npm.ds.orangegames.com/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true + }, + "parseurl": { + "version": "http://og-npm.ds.orangegames.com/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "dev": true + }, + "path-exists": { + "version": "http://og-npm.ds.orangegames.com/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true + }, + "path-is-absolute": { + "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-type": { + "version": "http://og-npm.ds.orangegames.com/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "dependencies": { + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, + "phaser": { + "version": "https://registry.npmjs.org/phaser/-/phaser-2.6.2.tgz", + "integrity": "sha1-6zkSFyWiFJxJ9GtdFEMYwivAkkk=", + "dev": true + }, + "pify": { + "version": "http://og-npm.ds.orangegames.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "http://og-npm.ds.orangegames.com/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "http://og-npm.ds.orangegames.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true + }, + "portscanner": { + "version": "http://og-npm.ds.orangegames.com/portscanner/-/portscanner-1.0.0.tgz", + "integrity": "sha1-O1z+OTgotRYKvGAOYnDrwvFZBVg=", + "dev": true, + "dependencies": { + "async": { + "version": "http://og-npm.ds.orangegames.com/async/-/async-0.1.15.tgz", + "integrity": "sha1-IYDqyizypspSgNQcBYW+ybPkm9M=", + "dev": true + } + } + }, + "preserve": { + "version": "http://og-npm.ds.orangegames.com/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-bytes": { + "version": "http://og-npm.ds.orangegames.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz", + "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", + "dev": true + }, + "process-nextick-args": { + "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "qs": { + "version": "http://og-npm.ds.orangegames.com/qs/-/qs-0.5.6.tgz", + "integrity": "sha1-MbGtBYVnZRxSaSFQa5qHk5EaA4Q=", + "dev": true + }, + "randomatic": { + "version": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.6.tgz", + "integrity": "sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=", + "dev": true + }, + "range-parser": { + "version": "http://og-npm.ds.orangegames.com/range-parser/-/range-parser-1.0.3.tgz", + "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=", + "dev": true + }, + "read-pkg": { + "version": "http://og-npm.ds.orangegames.com/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true + }, + "read-pkg-up": { + "version": "http://og-npm.ds.orangegames.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", + "integrity": "sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=", + "dev": true + }, + "readdirp": { + "version": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "dependencies": { + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dev": true + } + } + }, + "redent": { + "version": "http://og-npm.ds.orangegames.com/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true + }, + "regex-cache": { + "version": "http://og-npm.ds.orangegames.com/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "dev": true + }, + "repeat-element": { + "version": "http://og-npm.ds.orangegames.com/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "http://og-npm.ds.orangegames.com/repeat-string/-/repeat-string-1.5.2.tgz", + "integrity": "sha1-IQZfcHJ60FOg3V6VesngDHVg2Qo=", + "dev": true + }, + "repeating": { + "version": "http://og-npm.ds.orangegames.com/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true + }, + "resolve": { + "version": "http://og-npm.ds.orangegames.com/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "right-align": { + "version": "http://og-npm.ds.orangegames.com/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true + }, + "rimraf": { + "version": "http://og-npm.ds.orangegames.com/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + }, + "sax": { + "version": "http://og-npm.ds.orangegames.com/sax/-/sax-1.2.1.tgz", + "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=", + "dev": true + }, + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "send": { + "version": "http://og-npm.ds.orangegames.com/send/-/send-0.13.1.tgz", + "integrity": "sha1-ow1fTILIqbrprQCh2bG9vm8Zntc=", + "dev": true, + "dependencies": { + "depd": { + "version": "http://og-npm.ds.orangegames.com/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", + "dev": true + } + } + }, + "serve-index": { + "version": "http://og-npm.ds.orangegames.com/serve-index/-/serve-index-1.7.3.tgz", + "integrity": "sha1-egV/xu4o3GP2RWbl+lexEahq7NI=", + "dev": true + }, + "serve-static": { + "version": "http://og-npm.ds.orangegames.com/serve-static/-/serve-static-1.10.2.tgz", + "integrity": "sha1-/rgA0OciEk3QsAMzFgwW6cqovLM=", + "dev": true + }, + "set-immediate-shim": { + "version": "http://og-npm.ds.orangegames.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "sigmund": { + "version": "http://og-npm.ds.orangegames.com/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "source-map": { + "version": "http://og-npm.ds.orangegames.com/source-map/-/source-map-0.5.3.tgz", + "integrity": "sha1-gmdLhacbC+dsPnQW0V6fUlLrO+A=", + "dev": true + }, + "spdx-correct": { + "version": "http://og-npm.ds.orangegames.com/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true + }, + "spdx-expression-parse": { + "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "sprintf-js": { + "version": "http://og-npm.ds.orangegames.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "statuses": { + "version": "http://og-npm.ds.orangegames.com/statuses/-/statuses-1.2.1.tgz", + "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=", + "dev": true + }, + "string_decoder": { + "version": "http://og-npm.ds.orangegames.com/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-ansi": { + "version": "http://og-npm.ds.orangegames.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true + }, + "strip-bom": { + "version": "http://og-npm.ds.orangegames.com/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true + }, + "strip-indent": { + "version": "http://og-npm.ds.orangegames.com/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true + }, + "supports-color": { + "version": "http://og-npm.ds.orangegames.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tiny-lr-fork": { + "version": "http://og-npm.ds.orangegames.com/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz", + "integrity": "sha1-Hpnh4qhGm3NquX2X7vqYxx927Qo=", + "dev": true, + "dependencies": { + "debug": { + "version": "http://og-npm.ds.orangegames.com/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", + "dev": true + } + } + }, + "trim-newlines": { + "version": "http://og-npm.ds.orangegames.com/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "typescript": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", + "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=", + "dev": true + }, + "uglify-js": { + "version": "http://og-npm.ds.orangegames.com/uglify-js/-/uglify-js-2.6.2.tgz", + "integrity": "sha1-9QvoikLNOWpiUdxSqzcvccwS/vA=", + "dev": true, + "dependencies": { + "async": { + "version": "http://og-npm.ds.orangegames.com/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "http://og-npm.ds.orangegames.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true + }, + "underscore.string": { + "version": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", + "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=", + "dev": true + }, + "unpipe": { + "version": "http://og-npm.ds.orangegames.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "uri-path": { + "version": "http://og-npm.ds.orangegames.com/uri-path/-/uri-path-1.0.0.tgz", + "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", + "dev": true + }, + "util-deprecate": { + "version": "http://og-npm.ds.orangegames.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "http://og-npm.ds.orangegames.com/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "validate-npm-package-license": { + "version": "http://og-npm.ds.orangegames.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true + }, + "which": { + "version": "https://registry.npmjs.org/which/-/which-1.2.12.tgz", + "integrity": "sha1-3me15FAmnxlJCe8j7OTr5Bb6EZI=", + "dev": true + }, + "window-size": { + "version": "http://og-npm.ds.orangegames.com/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "http://og-npm.ds.orangegames.com/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "wrappy": { + "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xml2js": { + "version": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", + "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", + "dev": true + }, + "xmlbuilder": { + "version": "http://og-npm.ds.orangegames.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz", + "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", + "dev": true, + "dependencies": { + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + } + } + }, + "yargs": { + "version": "http://og-npm.ds.orangegames.com/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true + } + } +} diff --git a/src/util/phaser-input-master/package.json b/src/util/phaser-input-master/package.json new file mode 100755 index 0000000..7a9ed0b --- /dev/null +++ b/src/util/phaser-input-master/package.json @@ -0,0 +1,37 @@ +{ + "name": "@orange-games/phaser-input", + "author": "OrangeGames", + "version": "2.0.5", + "description": "Adds input boxes to Phaser like CanvasInput, but also works for WebGL and Mobile, made for Phaser only.", + "contributors": [ + { + "name": "Ale Bles", + "email": "a.bles@orangegames.com" + } + ], + "repository": { + "type": "git", + "url": "git@github.com:orange-games/phaser-input.git" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/orange-games/phaser-input/raw/master/LICENSE" + } + ], + "config": { + "name": "phaser-input" + }, + "devDependencies": { + "@orange-games/phaser-nineslice": "^2.0.0", + "grunt": "1.0.x", + "grunt-banner": "^0.6.0", + "grunt-contrib-clean": "0.6.0", + "grunt-contrib-connect": "^0.11.2", + "grunt-contrib-uglify": "^0.11.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-ts": "^6.0.0-beta.11", + "phaser": "2.6.2", + "typescript": "2.3.x" + } +} diff --git a/src/util/phaser-input-master/ts/InputElement.ts b/src/util/phaser-input-master/ts/InputElement.ts new file mode 100755 index 0000000..f9c086e --- /dev/null +++ b/src/util/phaser-input-master/ts/InputElement.ts @@ -0,0 +1,184 @@ +module PhaserInput { + + export enum InputType { + text, + password, + number + } + + export class InputElement { + private element: HTMLInputElement; + + private keyUpCallback: () => void; + + private inputChangeCallback: () => void; + + private type: InputType; + + private id: string; + + private game: Phaser.Game; + + private focusIn: Phaser.Signal; + + private focusOut: Phaser.Signal; + + constructor(game: Phaser.Game, id: string, type: InputType = InputType.text, value: string = '', focusIn?: Phaser.Signal, focusOut?: Phaser.Signal) { + this.id = id; + this.type = type; + this.game = game; + this.focusIn = focusIn; + this.focusOut = focusOut; + + let canvasTopX: number = this.game.canvas.getBoundingClientRect().top + document.body.scrollTop; + + this.element = document.createElement('input'); + + this.element.id = id; + this.element.style.position = 'absolute'; + this.element.style.top = canvasTopX + 'px'; + this.element.style.left = (-40).toString() + 'px'; + this.element.style.width = (10).toString() + 'px'; + this.element.style.height = (10).toString() + 'px'; + this.element.style.border = '0px'; + this.element.value = this.value; + this.element.type = InputType[type]; + + this.element.addEventListener('focusin', (): void => { + if (this.focusIn instanceof Phaser.Signal) { + this.focusIn.dispatch(); + } + }); + this.element.addEventListener('focusout', (): void => { + if (this.focusOut instanceof Phaser.Signal) { + this.focusOut.dispatch(); + } + }); + + document.body.appendChild(this.element); + } + + public addKeyUpListener(callback: () => void): void { + this.keyUpCallback = callback; + document.addEventListener('keyup', this.keyUpCallback); + this.element.addEventListener('input', this.keyUpCallback); + + } + + /** + * Captures the keyboard event on keydown, used to prevent it going from input field to sprite + **/ + public blockKeyDownEvents(): void { + document.addEventListener('keydown', this.preventKeyPropagation); + } + + /** + * To prevent bubbling of keyboard event from input field to sprite + **/ + private preventKeyPropagation(evt: KeyboardEvent): void{ + if(evt.stopPropagation){ + evt.stopPropagation(); + } else { + //for IE < 9 + event.cancelBubble = true; + } + } + + /** + * Remove listener that captures keydown keyboard events + **/ + public unblockKeyDownEvents(): void { + document.removeEventListener('keydown', this.preventKeyPropagation); + } + + public removeEventListener(): void { + document.removeEventListener('keyup', this.keyUpCallback); + this.element.removeEventListener('input', this.keyUpCallback); + } + + public destroy() { + document.body.removeChild(this.element); + } + + public setMax(max: string, min?: string) { + if (max === undefined) { + return; + } + + if (this.type === InputType.text || this.type === InputType.password) { + this.element.maxLength = parseInt(max, 10); + } else if (this.type === InputType.number) { + this.element.max = max; + if (min === undefined) { + return; + } + + this.element.min = min; + } + } + + get value(): string { + return this.element.value; + } + + set value(value: string) { + this.element.value = value; + } + + public focus(): void { + this.element.focus(); + if (!this.game.device.desktop && this.game.device.chrome) { + let originalWidth = window.innerWidth, + originalHeight = window.innerHeight; + + let kbAppeared: boolean = false; + let interval: number = setInterval((): void => { + if (originalWidth > window.innerWidth || originalHeight > window.innerHeight) { + kbAppeared = true; + } + + if (kbAppeared && originalWidth === window.innerWidth && originalHeight === window.innerHeight) { + if (this.focusOut instanceof Phaser.Signal) { + this.focusOut.dispatch(); + } + clearInterval(interval); + } + }, 50); + } + } + + public blur(): void { + this.element.blur(); + } + + get hasSelection () { + if (this.type === InputType.number) { + return false; + } + + return this.element.selectionStart !== this.element.selectionEnd; + } + + get caretStart() { + return this.element.selectionEnd; + } + + get caretEnd() { + return this.element.selectionStart; + } + + public getCaretPosition() { + if (this.type === InputType.number) { + return -1; + } + return this.element.selectionStart; + } + + public setCaretPosition(pos: number) { + if (this.type === InputType.number) { + return ; + } + this.element.setSelectionRange(pos, pos); + } + } +} \ No newline at end of file diff --git a/src/util/phaser-input-master/ts/InputField.ts b/src/util/phaser-input-master/ts/InputField.ts new file mode 100755 index 0000000..1738f9c --- /dev/null +++ b/src/util/phaser-input-master/ts/InputField.ts @@ -0,0 +1,565 @@ +module PhaserInput { + import Text = Phaser.Text; + + export enum ForceCase { + none, + lower, + upper + } + + export interface InputOptions extends Phaser.PhaserTextStyle { + x?: number; + y?: number; + placeHolder?: string; + fillAlpha?: number; + width?: number; + height?: number; + padding?: number; + borderWidth?: number; + borderColor?: string; + borderRadius?: number; + cursorColor?: string; + placeHolderColor?: string; + type?: InputType; + forceCase?: ForceCase; + min?: string; + max?: string; + textAlign?: string; + selectionColor?: string; + zoom?: boolean; + } + + export class InputField extends Phaser.Sprite { + public focusOutOnEnter: boolean = true; + + private placeHolder:Phaser.Text = null; + + private box: InputBox = null; + + private textMask: TextMask; + + private focus:boolean = false; + + private cursor:Phaser.Text; + + private text:Phaser.Text; + + private offscreenText: Phaser.Text; + + public value:string = ''; + + private inputOptions: InputOptions; + + private domElement: InputElement; + + private selection: SelectionHighlight; + + private windowScale: number = 1; + + public blockInput: boolean = true; + + public focusIn: Phaser.Signal = new Phaser.Signal(); + + public focusOut: Phaser.Signal = new Phaser.Signal(); + + get width(): number { + return this.inputOptions.width; + } + + set width(width: number) { + this.inputOptions.width = width; + this.box.resize(width); + this.textMask.resize(width); + this.updateTextAlignment(); + } + + constructor(game:Phaser.Game, x:number, y:number, inputOptions:InputOptions = {}) { + super(game, x, y); + + //Parse the options + this.inputOptions = inputOptions; + this.inputOptions.width = (typeof inputOptions.width === 'number') ? inputOptions.width : 150; + this.inputOptions.padding = (typeof inputOptions.padding === 'number') ? inputOptions.padding : 0; + this.inputOptions.textAlign = inputOptions.textAlign || 'left'; + this.inputOptions.type = inputOptions.type || InputType.text; + this.inputOptions.forceCase = (inputOptions.forceCase) ? inputOptions.forceCase : ForceCase.none; + this.inputOptions.borderRadius = (typeof inputOptions.borderRadius === 'number') ? inputOptions.borderRadius : 0; + this.inputOptions.height = (typeof inputOptions.height === 'number') ? inputOptions.height : 14; + this.inputOptions.fillAlpha = (inputOptions.fillAlpha === undefined) ? 1 : inputOptions.fillAlpha; + this.inputOptions.selectionColor = inputOptions.selectionColor || 'rgba(179, 212, 253, 0.8)'; + this.inputOptions.zoom = (!game.device.desktop) ? inputOptions.zoom || false : false; + + //create the input box + this.box = new InputBox(this.game, inputOptions); + this.setTexture(this.box.generateTexture()); + + //create the mask that will be used for the texts + this.textMask = new TextMask(this.game, inputOptions); + this.addChild(this.textMask); + + //Create the hidden dom elements + this.domElement = new InputElement(this.game, 'phaser-input-' + (Math.random() * 10000 | 0).toString(), + this.inputOptions.type, this.value, this.focusIn, this.focusOut); + this.domElement.setMax(this.inputOptions.max, this.inputOptions.min); + + this.selection = new SelectionHighlight(this.game, this.inputOptions); + this.selection.mask = this.textMask; + this.addChild(this.selection); + + if (inputOptions.placeHolder && inputOptions.placeHolder.length > 0) { + this.placeHolder = new Phaser.Text(game, this.inputOptions.padding, this.inputOptions.padding, + inputOptions.placeHolder, { + font: inputOptions.font || '14px Arial', + fontWeight: inputOptions.fontWeight || 'normal', + fill: inputOptions.placeHolderColor || '#bfbebd' + }); + this.placeHolder.mask = this.textMask; + this.addChild(this.placeHolder); + } + + this.cursor = new Phaser.Text(game, this.inputOptions.padding, this.inputOptions.padding - 2, '|', { + font: inputOptions.font || '14px Arial', + fontWeight: inputOptions.fontWeight || 'normal', + fill: inputOptions.cursorColor || '#000000' + }); + this.cursor.visible = false; + this.addChild(this.cursor); + + this.text = new Phaser.Text(game, this.inputOptions.padding, this.inputOptions.padding, '', { + font: inputOptions.font || '14px Arial', + fontWeight: inputOptions.fontWeight || 'normal', + fill: inputOptions.fill || '#000000' + }); + this.text.mask = this.textMask; + this.addChild(this.text); + + this.offscreenText = new Phaser.Text(game, this.inputOptions.padding, this.inputOptions.padding, '', { + font: inputOptions.font || '14px Arial', + fontWeight: inputOptions.fontWeight || 'normal', + fill: inputOptions.fill || '#000000' + }); + + this.updateTextAlignment(); + + this.inputEnabled = true; + this.input.useHandCursor = true; + + this.game.input.onDown.add(this.checkDown, this); + this.focusOut.add((): void => { + if (PhaserInput.KeyboardOpen) { + this.endFocus(); + if (this.inputOptions.zoom) { + this.zoomOut(); + } + } + }); + } + + private updateTextAlignment(): void { + switch (this.inputOptions.textAlign) { + case 'left': + this.text.anchor.set(0, 0); + this.text.x = this.inputOptions.padding; + if (null !== this.placeHolder) { + this.placeHolder.anchor.set(0, 0); + } + this.cursor.x = this.inputOptions.padding + this.getCaretPosition(); + break; + case 'center': + this.text.anchor.set(0.5, 0); + this.text.x = this.inputOptions.padding + this.inputOptions.width / 2; + if (null !== this.placeHolder) { + this.placeHolder.anchor.set(0.5, 0); + this.placeHolder.x = this.inputOptions.padding + this.inputOptions.width / 2; + } + this.cursor.x = this.inputOptions.padding + this.inputOptions.width / 2 - this.text.width / 2 + this.getCaretPosition(); + break; + case 'right': + this.text.anchor.set(1, 0); + this.text.x = this.inputOptions.padding + this.inputOptions.width; + if (null !== this.placeHolder) { + this.placeHolder.anchor.set(1, 0); + this.placeHolder.x = this.inputOptions.padding + this.inputOptions.width; + } + this.cursor.x = this.inputOptions.padding + this.inputOptions.width; + break; + } + } + + /** + * This is a generic input down handler for the game. + * if the input object is clicked, we gain focus on it and create the dom element + * + * If there was focus on the element previously, but clicked outside of it, the element will loose focus + * and no keyboard events will be registered anymore + * + * @param e Phaser.Pointer + */ + private checkDown(e: Phaser.Pointer): void + { + if(!this.value){ + this.resetText(); + } + if (this.input.checkPointerOver(e)) { + if (this.focus) { + this.setCaretOnclick(e); + return; + } + + if (this.inputOptions.zoom && !PhaserInput.Zoomed) { + this.zoomIn(); + } + this.startFocus(); + } else { + if (this.focus === true) { + this.endFocus(); + if (this.inputOptions.zoom) { + this.zoomOut(); + } + } + } + } + + /** + * Update function makes the cursor blink, it uses two private properties to make it toggle + * + * @returns {number} + */ + private blink:boolean = true; + private cnt: number = 0; + public update() { + this.text.update(); + if (this.placeHolder) { + this.placeHolder.update(); + } + if (!this.focus) { + return; + } + + if (this.cnt !== 30) { + return this.cnt++; + } + + this.cursor.visible = this.blink; + this.blink = !this.blink; + this.cnt = 0; + } + + /** + * Focus is lost on the input element, we disable the cursor and remove the hidden input element + */ + public endFocus() { + if(!this.focus){ + return; + } + + this.domElement.removeEventListener(); + + if(this.blockInput === true) { + this.domElement.unblockKeyDownEvents(); + } + + this.focus = false; + if (this.value.length === 0 && null !== this.placeHolder) { + this.placeHolder.visible = true; + } + this.cursor.visible = false; + + if (this.game.device.desktop) { + //Timeout is a chrome hack + setTimeout(() => { + this.domElement.blur(); + }, 0); + } else { + this.domElement.blur(); + } + + if (!this.game.device.desktop) { + PhaserInput.KeyboardOpen = false; + PhaserInput.onKeyboardClose.dispatch(); + } + } + + /** + * + */ + public startFocus() { + this.focus = true; + + if (null !== this.placeHolder) { + this.placeHolder.visible = false; + } + + if (this.game.device.desktop) { + //Timeout is a chrome hack + setTimeout(() => { + this.keyUpProcessor(); + }, 0); + } else { + this.keyUpProcessor(); + } + + if (!this.game.device.desktop) { + PhaserInput.KeyboardOpen = true; + PhaserInput.onKeyboardOpen.dispatch(); + } + } + + private keyUpProcessor():void { + this.domElement.addKeyUpListener(this.keyListener.bind(this)); + this.domElement.focus(); + + if(this.blockInput === true) { + this.domElement.blockKeyDownEvents(); + } + } + + /** + * Update the text value in the box, and make sure the cursor is positioned correctly + */ + private updateText() + { + var text: string = ''; + if (this.inputOptions.type === InputType.password) { + for (let i = 0; i < this.value.length; i++) { + text += '*'; + } + }else if (this.inputOptions.type === InputType.number) { + var val = parseInt(this.value); + if (val < parseInt(this.inputOptions.min)) { + text = this.value = this.domElement.value = this.inputOptions.min; + } else if (val > parseInt(this.inputOptions.max)) { + text = this.value = this.domElement.value = this.inputOptions.max; + } else { + text = this.value; + } + } else { + text = this.value; + } + + this.text.setText(text); + + if (this.text.width > this.inputOptions.width) { + this.text.anchor.x = 1; + this.text.x = this.inputOptions.padding + this.inputOptions.width; + } else { + switch (this.inputOptions.textAlign) { + case 'left': + this.text.anchor.set(0, 0); + this.text.x = this.inputOptions.padding; + break; + case 'center': + this.text.anchor.set(0.5, 0); + this.text.x = this.inputOptions.padding + this.inputOptions.width / 2; + break; + case 'right': + this.text.anchor.set(1, 0); + this.text.x = this.inputOptions.padding + this.inputOptions.width; + break; + } + } + } + + /** + * Updates the position of the caret in the phaser input field + */ + private updateCursor() { + if (this.text.width > this.inputOptions.width || this.inputOptions.textAlign === 'right') { + this.cursor.x = this.inputOptions.padding + this.inputOptions.width; + } else { + switch (this.inputOptions.textAlign) { + case 'left': + this.cursor.x = this.inputOptions.padding + this.getCaretPosition(); + break; + case 'center': + this.cursor.x = this.inputOptions.padding + this.inputOptions.width / 2 - this.text.width / 2 + this.getCaretPosition(); + break; + } + } + } + + /** + * Fetches the carrot position from the dom element. This one changes when you use the keyboard to navigate the element + * + * @returns {number} + */ + private getCaretPosition() { + var caretPosition: number = this.domElement.getCaretPosition(); + if (-1 === caretPosition) { + return this.text.width; + } + + var text = this.value; + if (this.inputOptions.type === InputType.password) { + text = ''; + for (let i = 0; i < this.value.length; i++) { + text += '*'; + } + } + + this.offscreenText.setText(text.slice(0, caretPosition)); + + return this.offscreenText.width; + } + + /** + * Set the caret when a click was made in the input field + * + * @param e + */ + private setCaretOnclick(e: Phaser.Pointer) { + var localX: number = (this.text.toLocal(new PIXI.Point(e.x, e.y), this.game.world)).x; + if (this.inputOptions.textAlign && this.inputOptions.textAlign === 'center') { + localX += this.text.width / 2; + } + + var characterWidth: number = this.text.width / this.value.length; + var index: number = 0; + for (let i: number = 0; i < this.value.length; i++) { + if (localX >= i * characterWidth && localX <= (i + 1) * characterWidth) { + index = i; + break; + } + } + + if (localX > (this.value.length - 1) * characterWidth) { + index = this.value.length; + } + + this.startFocus(); + + this.domElement.setCaretPosition(index); + + this.updateCursor(); + } + + /** + * This checks if a select has been made, and if so highlight it with blue + */ + private updateSelection(): void { + if (this.domElement.hasSelection) { + var text = this.value; + if (this.inputOptions.type === InputType.password) { + text = ''; + for (let i = 0; i < this.value.length; i++) { + text += '*'; + } + } + text = text.substring(this.domElement.caretStart, this.domElement.caretEnd); + this.offscreenText.setText(text); + + this.selection.updateSelection(this.offscreenText.getBounds()); + + switch (this.inputOptions.textAlign) { + case 'left': + this.selection.x = this.inputOptions.padding; + break; + case 'center': + this.selection.x = this.inputOptions.padding + this.inputOptions.width / 2 - this.text.width / 2; + break; + } + } else { + this.selection.clear(); + } + } + + private zoomIn(): void { + if (PhaserInput.Zoomed) { + return; + } + + let bounds: PIXI.Rectangle = this.getBounds(); + if (window.innerHeight > window.innerWidth) { + this.windowScale = this.game.width / (bounds.width * 1.5); + } else { + this.windowScale = (this.game.width / 2) / (bounds.width * 1.5); + } + + let offsetX: number = ((this.game.width - bounds.width * 1.5) / 2) / this.windowScale; + this.game.world.scale.set(this.game.world.scale.x * this.windowScale, this.game.world.scale.y * this.windowScale); + this.game.world.pivot.set(bounds.x - offsetX, bounds.y - this.inputOptions.padding * 2); + PhaserInput.Zoomed = true; + } + + private zoomOut(): void { + if (!PhaserInput.Zoomed) { + return; + } + + this.game.world.scale.set(this.game.world.scale.x / this.windowScale, this.game.world.scale.y / this.windowScale); + this.game.world.pivot.set(0, 0); + PhaserInput.Zoomed = false; + } + + /** + * Event fired when a key is pressed, it takes the value from the hidden input field and adds it as its own + */ + private keyListener(evt: KeyboardEvent) + { + this.value = this.getFormattedText(this.domElement.value); + if (evt.keyCode === 13) { + if(this.focusOutOnEnter) { + this.endFocus(); + } + return; + } + + this.updateText(); + this.updateCursor(); + this.updateSelection(); + + evt.preventDefault(); + } + + /** + * We overwrite the destroy method because we want to delete the (hidden) dom element when the inputField was removed + */ + public destroy(destroyChildren?: boolean) { + this.game.input.onDown.remove(this.checkDown, this); + this.focusIn.removeAll(); + this.focusOut.removeAll(); + this.domElement.destroy(); + + super.destroy(destroyChildren); + } + + /** + * Resets the text to an empty value + */ + public resetText() { + this.setText(); + } + + public setText(text: string = ''): void { + if (null !== this.placeHolder) { + if (text.length > 0) { + this.placeHolder.visible = false; + } else { + this.placeHolder.visible = true; + } + } + + this.value = this.getFormattedText(text); + this.domElement.value = this.value; + this.updateText(); + this.updateCursor(); + this.endFocus(); + } + + /** + * Returns text formatted by rules stated in inputOptions + * @param text + */ + private getFormattedText(text: string): string { + switch (this.inputOptions.forceCase) { + default: + case ForceCase.none: + return text; + case ForceCase.lower: + return text.toLowerCase(); + case ForceCase.upper: + return text.toUpperCase(); + } + } + } +} diff --git a/src/util/phaser-input-master/ts/Objects/InputBox.ts b/src/util/phaser-input-master/ts/Objects/InputBox.ts new file mode 100755 index 0000000..1ab6ff0 --- /dev/null +++ b/src/util/phaser-input-master/ts/Objects/InputBox.ts @@ -0,0 +1,56 @@ +module PhaserInput { + export class InputBox extends Phaser.Graphics { + private bgColor: number; + private borderRadius: number; + private borderColor: number; + private borderWidth: number; + private boxAlpha: number; + private boxHeight: number; + private padding: number; + private boxWidth: number; + + constructor(game: Phaser.Game, inputOptions: InputOptions) { + super(game, 0, 0); + + this.bgColor = (inputOptions.backgroundColor) ? parseInt(inputOptions.backgroundColor.slice(1), 16) : 0xffffff; + this.borderRadius = inputOptions.borderRadius || 0; + this.borderWidth = inputOptions.borderWidth || 1; + this.borderColor = (inputOptions.borderColor) ? parseInt(inputOptions.borderColor.slice(1), 16) : 0x959595; + this.boxAlpha = inputOptions.fillAlpha; + this.padding = inputOptions.padding; + + var height: number = inputOptions.height; + var width: number = inputOptions.width; + + var height: number; + if (inputOptions.font) { + //fetch height from font; + height = Math.max(parseInt(inputOptions.font.substr(0, inputOptions.font.indexOf('px')), 10), height); + } + + this.boxHeight = this.padding * 2 + height; + var width = inputOptions.width; + this.boxWidth = this.padding * 2 + width; + + this.drawBox(); + } + + public resize(newWidth: number): void { + this.boxWidth = this.padding * 2 + newWidth; + + this.drawBox(); + } + + private drawBox(): void { + this.clear() + .beginFill(this.bgColor, this.boxAlpha) + .lineStyle(this.borderWidth, this.borderColor, this.boxAlpha); + + if (this.borderRadius > 0) { + this.drawRoundedRect(0, 0, this.boxWidth, this.boxHeight, this.borderRadius); + } else { + this.drawRect(0, 0, this.boxWidth, this.boxHeight); + } + } + } +} \ No newline at end of file diff --git a/src/util/phaser-input-master/ts/Objects/SelectionHighlight.ts b/src/util/phaser-input-master/ts/Objects/SelectionHighlight.ts new file mode 100755 index 0000000..637664e --- /dev/null +++ b/src/util/phaser-input-master/ts/Objects/SelectionHighlight.ts @@ -0,0 +1,25 @@ +module PhaserInput { + export class SelectionHighlight extends Phaser.Graphics { + private inputOptions: InputOptions; + + constructor(game: Phaser.Game, inputOptions: InputOptions) { + super(game, inputOptions.padding, inputOptions.padding); + + this.inputOptions = inputOptions; + } + + public updateSelection(rect: PIXI.Rectangle): void { + var color = Phaser.Color.webToColor(this.inputOptions.selectionColor); + + this.clear(); + this.beginFill(SelectionHighlight.rgb2hex(color), color.a); + this.drawRect(rect.x, rect.y, rect.width, rect.height - this.inputOptions.padding); + } + + public static rgb2hex(color: {r: number, g: number, b: number, a: number}): number { + return parseInt(("0" + color.r.toString(16)).slice(-2) + + ("0" + color.g.toString(16)).slice(-2) + + ("0" + color.b.toString(16)).slice(-2), 16); + } + } +} \ No newline at end of file diff --git a/src/util/phaser-input-master/ts/Objects/TextMask.ts b/src/util/phaser-input-master/ts/Objects/TextMask.ts new file mode 100755 index 0000000..70b864e --- /dev/null +++ b/src/util/phaser-input-master/ts/Objects/TextMask.ts @@ -0,0 +1,32 @@ +module PhaserInput { + export class TextMask extends Phaser.Graphics { + private maskWidth: number; + private maskHeight: number; + + constructor(game: Phaser.Game, inputOptions: InputOptions) { + super(game, inputOptions.padding, inputOptions.padding); + + var height = inputOptions.height; + + if (inputOptions.font) { + //fetch height from font; + height = Math.max(parseInt(inputOptions.font.substr(0, inputOptions.font.indexOf('px')), 10), height); + } + this.maskWidth = inputOptions.width; + this.maskHeight = height * 1.3; + this.drawMask(); + } + + public resize(newWidth: number): void { + this.maskWidth = newWidth; + this.drawMask(); + } + + private drawMask(): void { + this.clear() + .beginFill(0x000000) + .drawRect(0, 0, this.maskWidth, this.maskHeight) + .endFill(); + } + } +} \ No newline at end of file diff --git a/src/util/phaser-input-master/ts/Plugin.ts b/src/util/phaser-input-master/ts/Plugin.ts new file mode 100755 index 0000000..3f6900c --- /dev/null +++ b/src/util/phaser-input-master/ts/Plugin.ts @@ -0,0 +1,53 @@ +module PhaserInput { + export var Zoomed: boolean = false; + export var KeyboardOpen: boolean = false; + export const onKeyboardOpen: Phaser.Signal = new Phaser.Signal(); + export const onKeyboardClose: Phaser.Signal = new Phaser.Signal() + + export interface InputFieldObjectFactory extends Phaser.GameObjectFactory { + inputField: (x: number, y: number, inputOptions?: PhaserInput.InputOptions, group?: Phaser.Group) => PhaserInput.InputField; + } + + export interface InputFieldObjectCreator extends Phaser.GameObjectCreator { + inputField: (x: number, y: number, inputOptions?: PhaserInput.InputOptions) => PhaserInput.InputField; + } + + export interface InputFieldGame extends Phaser.Game { + add: InputFieldObjectFactory; + make: InputFieldObjectCreator; + } + + export class Plugin extends Phaser.Plugin { + public static Zoomed: boolean = false; + public static KeyboardOpen: boolean = false; + public static onKeyboardOpen: Phaser.Signal = new Phaser.Signal(); + public static onKeyboardClose: Phaser.Signal = new Phaser.Signal(); + + constructor(game: Phaser.Game, parent: Phaser.PluginManager) { + super(game, parent); + + this.addInputFieldFactory(); + } + + /** + * Extends the GameObjectFactory prototype with the support of adding InputField. this allows us to add InputField methods to the game just like any other object: + * game.add.InputField(); + */ + private addInputFieldFactory() { + (Phaser.GameObjectFactory.prototype).inputField = function (x: number, y: number, inputOptions: PhaserInput.InputOptions, group?: Phaser.Group): PhaserInput.InputField { + if (group === undefined) { + group = this.world; + } + + var nineSliceObject = new PhaserInput.InputField(this.game, x, y, inputOptions); + + return group.add(nineSliceObject); + }; + + (Phaser.GameObjectCreator.prototype).inputField = function (x: number, y: number, inputOptions: PhaserInput.InputOptions): PhaserInput.InputField { + return new PhaserInput.InputField(this.game, x, y, inputOptions); + }; + } + + } +} diff --git a/src/util/phaser-input-master/ts/definitions.d.ts b/src/util/phaser-input-master/ts/definitions.d.ts new file mode 100755 index 0000000..fe7d469 --- /dev/null +++ b/src/util/phaser-input-master/ts/definitions.d.ts @@ -0,0 +1,2 @@ +/// +/// \ No newline at end of file diff --git a/src/util/phaser-input-master/tslint.json b/src/util/phaser-input-master/tslint.json new file mode 100755 index 0000000..0a60655 --- /dev/null +++ b/src/util/phaser-input-master/tslint.json @@ -0,0 +1,131 @@ +{ + "rules": { + "align": [ + true, + "parameters", + "statements" + ], + "ban": false, + "class-name": true, + "curly": true, + "eofline": true, + "forin": true, + "indent": [ + true, + "spaces" + ], + "interface-name": true, + "jsdoc-format": true, + "label-position": true, + "label-undefined": true, + "max-line-length": [ + true, + 200 + ], + "member-access": true, + "no-any": false, + "no-arg": true, + "no-conditional-assignment": true, + "no-consecutive-blank-lines": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-constructor-vars": true, + "no-debugger": true, + "no-duplicate-key": true, + "no-duplicate-variable": true, + "no-empty": true, + "no-eval": true, + "no-inferrable-types": false, + "no-internal-module": false, + "no-null-keyword": false, + "no-require-imports": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unreachable": true, + "no-unused-expression": true, + "no-unused-variable": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "no-var-requires": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-finally", + "check-whitespace" + ], + "quotemark": [ + true, + "single", + "avoid-escape" + ], + "radix": true, + "semicolon": [ + true, + "always" + ], + "switch-default": true, + "trailing-comma": [ + true, + { + "multiline": "never", + "singleline": "never" + } + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef": [ + true, + "call-signature", + "parameter", + "arrow-parameter", + "property-declaration", + "variable-declaration", + "member-variable-declaration" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" + } + ], + "use-strict": false, + "variable-name": [ + true, + "allow-leading-underscore", + "ban-keywords" + ], + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ] + } +} \ No newline at end of file