From 50a0cee044fddf72494ee4dcc6ffc118736e2d66 Mon Sep 17 00:00:00 2001 From: shmyga Date: Fri, 24 May 2019 15:43:00 +0300 Subject: [PATCH] [network] update --- ansible/roles/build/tasks/main.yml | 2 +- gulpfile.js | 10 +- package-lock.json | 636 +++++++++++++----- package.json | 3 +- src/client/haxe/ru/m/tankz/Init.hx | 32 +- .../haxe/ru/m/tankz/network/NetworkManager.hx | 13 +- .../ru/m/tankz/view/network/GameItemView.hx | 4 +- .../ru/m/tankz/view/network/GameListFrame.hx | 4 +- .../ru/m/tankz/view/network/GameRoomFrame.hx | 10 +- .../m/tankz/view/network/GameRoomFrame.yaml | 9 +- .../ru/m/tankz/view/network/PlayerItemView.hx | 24 + .../m/tankz/view/network/PlayerItemView.yaml | 8 + .../haxe/ru/m/connect/js/JsConnection.hx | 10 +- src/server/haxe/ru/m/tankz/server/Server.hx | 2 +- .../ru/m/tankz/server/game/GameManager.hx | 3 +- .../haxe/ru/m/tankz/server/game/ServerGame.hx | 6 +- .../ru/m/tankz/server/session/GameSession.hx | 60 +- .../ru/m/tankz/server/session/ISession.hx | 1 + .../ru/m/tankz/server/session/ProtoSession.hx | 11 +- 19 files changed, 621 insertions(+), 227 deletions(-) create mode 100644 src/client/haxe/ru/m/tankz/view/network/PlayerItemView.hx create mode 100644 src/client/haxe/ru/m/tankz/view/network/PlayerItemView.yaml diff --git a/ansible/roles/build/tasks/main.yml b/ansible/roles/build/tasks/main.yml index fc11f17..ab426cc 100644 --- a/ansible/roles/build/tasks/main.yml +++ b/ansible/roles/build/tasks/main.yml @@ -6,6 +6,6 @@ remote_src: true - name: "Gulp build" - command: "/usr/local/lib/npm/bin/gulp default" + command: "/usr/local/lib/npm/bin/gulp default --host shmyga.ru" args: chdir: "{{ deploy_release_dir }}" diff --git a/gulpfile.js b/gulpfile.js index 7ffac29..2497393 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -4,7 +4,7 @@ const Config = require('./config.json'); const packageInfo = require('./package.json'); const {Sdk, Haxe, Project, FlashPlayer} = require('gulp-haxetool'); const dateformat = require('dateformat'); - +const argv = require('yargs').argv; // ToDo: update default in gulp-haxetool FlashPlayer.VERSION = '32'; @@ -49,11 +49,13 @@ const config = new Project.Config({ 'src/common/resources' ], macros: [ - //'yield.parser.Parser.auto()', // ToDo: bug with extraParams.hxml in yield library `CompilationOption.set('build','${dateformat(new Date(), 'yyyy-mm-dd HH:MM:ss')}')`, ] }); +const host = argv.host || 'localhost'; +const port = argv.port || 5000; + /** * client */ @@ -83,6 +85,10 @@ const client = new Project( //'dev_layout', //'bitmap_text', ], + macros: [ + `CompilationOption.set('host','${host}')`, + `CompilationOption.set('port',${port})`, + ] }), module.exports.generate ).bind(module, gulp); diff --git a/package-lock.json b/package-lock.json index 23a07c0..a43ef29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "tankz", - "version": "0.10.0", + "version": "0.11.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -634,29 +634,29 @@ } }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "3.1.0", + "strip-ansi": "5.2.0", + "wrap-ansi": "5.1.0" }, "dependencies": { "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "4.1.0" } } } @@ -764,6 +764,21 @@ "object-visit": "1.0.1" } }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -833,13 +848,13 @@ } }, "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, "requires": { "debug": "2.6.9", - "finalhandler": "1.1.0", + "finalhandler": "1.1.2", "parseurl": "1.3.3", "utils-merge": "1.0.1" } @@ -884,6 +899,19 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "1.0.5", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + }, "cuid": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz", @@ -1128,6 +1156,12 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -1214,6 +1248,42 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "6.0.5", + "get-stream": "4.1.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -1394,9 +1464,9 @@ } }, "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "requires": { "debug": "2.6.9", @@ -1404,7 +1474,7 @@ "escape-html": "1.0.3", "on-finished": "2.3.0", "parseurl": "1.3.3", - "statuses": "1.3.1", + "statuses": "1.5.0", "unpipe": "1.0.0" } }, @@ -1604,9 +1674,9 @@ } }, "fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz", + "integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==", "dev": true, "requires": { "minipass": "2.3.5" @@ -1845,7 +1915,7 @@ "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": "2.1.2" } }, "ignore-walk": { @@ -1854,7 +1924,7 @@ "dev": true, "optional": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "3.0.4" } }, "inflight": { @@ -1870,8 +1940,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -1883,9 +1952,8 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "isarray": { @@ -1898,16 +1966,14 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", @@ -1932,7 +1998,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -1949,9 +2014,9 @@ "dev": true, "optional": true, "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" } }, "node-pre-gyp": { @@ -1978,8 +2043,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "npm-bundled": { @@ -1994,8 +2059,8 @@ "dev": true, "optional": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" } }, "npmlog": { @@ -2013,8 +2078,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -2049,8 +2113,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "path-is-absolute": { @@ -2112,8 +2176,7 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -2231,9 +2294,9 @@ "dev": true }, "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-stdin": { @@ -2451,6 +2514,35 @@ "vinyl-fs": "3.0.3" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, "gulp-cli": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", @@ -2475,6 +2567,119 @@ "semver-greatest-satisfied-range": "1.1.0", "v8flags": "3.1.1", "yargs": "7.1.0" + }, + "dependencies": { + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.3", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + } + } + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "3.0.0" } } } @@ -2812,9 +3017,9 @@ } }, "gulp-haxetool": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/gulp-haxetool/-/gulp-haxetool-0.0.17.tgz", - "integrity": "sha512-lVnOMgl2FDRv5n28+SraS/rCFk2Hrp2Te0ke/qJrEroaxWoiqMXSiRuJws9Jey/7QuqB8tE5EoJju/Qo258Tsw==", + "version": "0.0.19", + "resolved": "https://registry.npmjs.org/gulp-haxetool/-/gulp-haxetool-0.0.19.tgz", + "integrity": "sha512-DpIadM5wwQSiQCNRPiaa7iecIccLDPVRY6xNzFTo2g9yyI4ccW4v3ITlaAh92jL9v5J7aEdc8HxnefDFKUI9Kg==", "dev": true, "requires": { "ansi-colors": "1.1.0", @@ -3022,7 +3227,7 @@ "integrity": "sha1-4JmSFl2XxYZWFtZCoWAVKbA2cGQ=", "dev": true, "requires": { - "connect": "3.6.6", + "connect": "3.7.0", "connect-livereload": "0.4.1", "gulp-util": "2.2.20", "isarray": "0.0.1", @@ -3156,14 +3361,6 @@ "inherits": "2.0.3", "setprototypeof": "1.1.0", "statuses": "1.5.0" - }, - "dependencies": { - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - } } }, "http-parser-js": { @@ -3226,9 +3423,9 @@ } }, "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, "is": { @@ -3358,13 +3555,10 @@ } }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-glob": { "version": "4.0.0", @@ -3437,6 +3631,12 @@ "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", "dev": true }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, "is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -3607,12 +3807,12 @@ } }, "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "2.0.0" } }, "lead": { @@ -3653,6 +3853,24 @@ "strip-bom": "2.0.0" } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "3.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", @@ -3895,6 +4113,15 @@ "kind-of": "6.0.2" } }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -3934,6 +4161,25 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "0.1.3", + "mimic-fn": "2.1.0", + "p-is-promise": "2.1.0" + }, + "dependencies": { + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + } + } + }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -4002,6 +4248,12 @@ "mime-db": "1.40.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -4148,6 +4400,12 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, "no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", @@ -4214,6 +4472,15 @@ "once": "1.4.0" } }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -4397,12 +4664,14 @@ } }, "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { - "lcid": "1.0.0" + "execa": "1.0.0", + "lcid": "2.0.0", + "mem": "4.3.0" } }, "p-cancelable": { @@ -4411,6 +4680,12 @@ "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", "dev": true }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -4423,6 +4698,24 @@ "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", "dev": true }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "2.2.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "2.2.0" + } + }, "p-timeout": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", @@ -4432,6 +4725,12 @@ "p-finally": "1.0.0" } }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -4491,6 +4790,12 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", @@ -5003,9 +5308,9 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "resolve": { @@ -5141,12 +5446,6 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true } } }, @@ -5218,6 +5517,21 @@ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -5440,9 +5754,9 @@ } }, "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, "stream-exhaust": { @@ -5464,29 +5778,29 @@ "dev": true }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" }, "dependencies": { "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "4.1.0" } } } @@ -5515,6 +5829,12 @@ "is-utf8": "0.2.1" } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", @@ -5553,7 +5873,7 @@ "dev": true, "requires": { "chownr": "1.1.1", - "fs-minipass": "1.2.5", + "fs-minipass": "1.2.6", "minipass": "2.3.5", "minizlib": "1.2.1", "mkdirp": "0.5.1", @@ -6281,34 +6601,44 @@ } }, "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "ansi-styles": "3.2.1", + "string-width": "3.1.0", + "strip-ansi": "5.2.0" }, "dependencies": { "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "color-convert": "1.9.3" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "4.1.0" } } } @@ -6326,9 +6656,9 @@ "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yallist": { @@ -6338,47 +6668,49 @@ "dev": true }, "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", "dev": true, "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", + "cliui": "5.0.0", + "find-up": "3.0.0", + "get-caller-file": "2.0.5", + "os-locale": "3.1.0", "require-directory": "2.1.1", - "require-main-filename": "1.0.1", + "require-main-filename": "2.0.0", "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "5.0.0" + "string-width": "3.1.0", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "13.1.0" }, "dependencies": { - "camelcase": { + "find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "3.0.0" + } } } }, "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==", "dev": true, "requires": { - "camelcase": "3.0.0" + "camelcase": "5.3.1", + "decamelize": "1.2.0" }, "dependencies": { "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true } } diff --git a/package.json b/package.json index 555d406..3e538cc 100755 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "gulp": "^4.0.0", "gulp-add": "0.0.2", "gulp-clean": "^0.4.0", - "gulp-haxetool": "^0.0.19" + "gulp-haxetool": "^0.0.19", + "yargs": "^13.2.4" }, "haxeDependencies": { "haxework": "git@bitbucket.org:shmyga/haxework.git", diff --git a/src/client/haxe/ru/m/tankz/Init.hx b/src/client/haxe/ru/m/tankz/Init.hx index 79c447c..191e676 100644 --- a/src/client/haxe/ru/m/tankz/Init.hx +++ b/src/client/haxe/ru/m/tankz/Init.hx @@ -20,11 +20,6 @@ import ru.m.tankz.storage.GameStorage; import ru.m.tankz.storage.MultiplayerStorage; import ru.m.tankz.storage.RecordStorage; import ru.m.tankz.storage.SettingsStorage; -#if flash -import flash.Lib; -#elseif html5 -import js.Browser; -#end class Init { @@ -41,19 +36,16 @@ class Init { @:provide static var popupManager:PopupManager; @:provide static var connection:IConnection; - private static function getHost():String { + private static function buildConnection():IConnection { + var host:String = CompilationOption.get("host"); + var port:Int = CompilationOption.get("port"); + L.d("Init", 'connect to $host:$port'); #if flash - var url = Lib.current.loaderInfo.url; - var r:EReg = ~/(app|https?):\/\/?([-_\w\d\.]+)(:\d+)?\/?/; - if (r.match(url) && !(r.matched(1) == "app")) { - return r.matched(2); - } else { - return "localhost"; - } + return new ru.m.connect.flash.FlashConnection(host, port, Response); #elseif html5 - return Browser.location.hostname; + return new ru.m.connect.js.JsConnection(host, port + (ru.m.connect.js.JsConnection.isSecured() ? 1 : 0), Response); #else - return "localhost"; + return new ru.m.connect.desktop.DesktopConnection(host, port, Response); #end } @@ -72,15 +64,7 @@ class Init { popupManager.showAnimateFactory = function(v) return new UnFadeAnimate(v, 100); popupManager.closeAnimateFactory = function(v) return new FadeAnimate(v, 100); - var host:String = getHost(); - L.d('Init', 'host: ${host}'); - #if flash - connection = new ru.m.connect.flash.FlashConnection(host, 5000, Response); - #elseif html5 - connection = new ru.m.connect.js.JsConnection(host, 5000, Response); - #else - connection = new ru.m.connect.desktop.DesktopConnection(host, 5000, Response); - #end + connection = buildConnection(); networkManager = new NetworkManager(); } } diff --git a/src/client/haxe/ru/m/tankz/network/NetworkManager.hx b/src/client/haxe/ru/m/tankz/network/NetworkManager.hx index 5135741..d4f6171 100644 --- a/src/client/haxe/ru/m/tankz/network/NetworkManager.hx +++ b/src/client/haxe/ru/m/tankz/network/NetworkManager.hx @@ -133,18 +133,21 @@ class NetworkManager { listGameSignal.emit(packet.listGame.games); } else if (packet.hasCreateGame()) { game = packet.createGame.game; - gameSignal.emit(packet.createGame.game); + gameSignal.emit(game); } else if (packet.hasJoinGame()) { - game = packet.createGame.game; - gameSignal.emit(packet.joinGame.game); + game = packet.joinGame.game; + gameSignal.emit(game); } else if (packet.hasLeaveGame()) { if (packet.leaveGame.user.uuid == user.uuid) { + game = null; gameSignal.emit(null); } else { - gameSignal.emit(packet.leaveGame.game); + game = packet.leaveGame.game; + gameSignal.emit(game); } } else if (packet.hasStartGame()) { - gameSignal.emit(packet.startGame.game); + game = packet.startGame.game; + gameSignal.emit(game); } } } diff --git a/src/client/haxe/ru/m/tankz/view/network/GameItemView.hx b/src/client/haxe/ru/m/tankz/view/network/GameItemView.hx index 85bffb2..4042ee3 100644 --- a/src/client/haxe/ru/m/tankz/view/network/GameItemView.hx +++ b/src/client/haxe/ru/m/tankz/view/network/GameItemView.hx @@ -2,7 +2,7 @@ package ru.m.tankz.view.network; import haxework.view.LabelView; import haxework.view.HGroupView; -import haxework.view.list.ListView.IListItemView; +import haxework.view.list.ListView; import ru.m.tankz.proto.core.GameProto; @:template class GameItemView extends HGroupView implements IListItemView { @@ -14,7 +14,7 @@ import ru.m.tankz.proto.core.GameProto; private function set_data(value:GameProto):GameProto { data = value; - label.text = '${value.id}. ${value.type} - ${value.level} (${value.creator.name})'; + label.text = '[${value.creator.name}] ${value.type} ${value.level} (${value.players.length})'; return data; } diff --git a/src/client/haxe/ru/m/tankz/view/network/GameListFrame.hx b/src/client/haxe/ru/m/tankz/view/network/GameListFrame.hx index c1b0a4f..2be2152 100644 --- a/src/client/haxe/ru/m/tankz/view/network/GameListFrame.hx +++ b/src/client/haxe/ru/m/tankz/view/network/GameListFrame.hx @@ -43,7 +43,9 @@ import ru.m.tankz.proto.core.GameProto; } private function onGame(game:GameProto):Void { - switcher.change(GameRoomFrame.ID); + if (game != null) { + switcher.change(GameRoomFrame.ID); + } } private function selectGame(game:GameProto):Void { diff --git a/src/client/haxe/ru/m/tankz/view/network/GameRoomFrame.hx b/src/client/haxe/ru/m/tankz/view/network/GameRoomFrame.hx index 4637e68..413ee2c 100644 --- a/src/client/haxe/ru/m/tankz/view/network/GameRoomFrame.hx +++ b/src/client/haxe/ru/m/tankz/view/network/GameRoomFrame.hx @@ -1,22 +1,30 @@ package ru.m.tankz.view.network; import haxework.view.frame.FrameSwitcher; +import haxework.view.list.VListView; import haxework.view.TextView; import haxework.view.VGroupView; import ru.m.tankz.network.NetworkManager; import ru.m.tankz.proto.core.GameProto; +import ru.m.tankz.proto.core.UserProto; @:template class GameRoomFrame extends VGroupView { public static inline var ID = "game_room"; @:view var info:TextView; + @:view var players:VListView; @:provide var switcher:FrameSwitcher; @:provide var network:NetworkManager; private function refresh(game:GameProto):Void { - info.text = '${game.id}. ${game.type}'; + if (game != null) { + info.text = '[${game.creator.name}] ${game.type} ${game.level} (${game.players.length})'; + players.data = game.players; + } else { + Timer.delay(function() switcher.change(GameListFrame.ID), 1); + } } public function onShow():Void { diff --git a/src/client/haxe/ru/m/tankz/view/network/GameRoomFrame.yaml b/src/client/haxe/ru/m/tankz/view/network/GameRoomFrame.yaml index 741d658..beea6b8 100644 --- a/src/client/haxe/ru/m/tankz/view/network/GameRoomFrame.yaml +++ b/src/client/haxe/ru/m/tankz/view/network/GameRoomFrame.yaml @@ -10,11 +10,16 @@ views: skinId: text.header text: Game Room - id: info - $type: haxework.view.TextView + $type: haxework.view.LabelView + geometry.size.width: 100% + skinId: text.box + - id: players + $type: haxework.view.list.VListView geometry.size.stretch: true + factory: $code:ru.m.tankz.view.network.PlayerItemView.factory - $type: haxework.view.HGroupView skinId: panel views: - $type: haxework.view.ButtonView skinId: button.close - +onPress: $code:switcher.change('start') + +onPress: $code:network.leaveGame() diff --git a/src/client/haxe/ru/m/tankz/view/network/PlayerItemView.hx b/src/client/haxe/ru/m/tankz/view/network/PlayerItemView.hx new file mode 100644 index 0000000..0dba9c1 --- /dev/null +++ b/src/client/haxe/ru/m/tankz/view/network/PlayerItemView.hx @@ -0,0 +1,24 @@ +package ru.m.tankz.view.network; + +import haxework.view.HGroupView; +import haxework.view.LabelView; +import haxework.view.list.ListView; +import ru.m.tankz.proto.core.UserProto; + +@:template class PlayerItemView extends HGroupView implements IListItemView { + + public var item_index(default, default):Int; + public var data(default, set):UserProto; + + @:view var label:LabelView; + + private function set_data(value:UserProto):UserProto { + data = value; + label.text = '${value.name}'; + return data; + } + + public static function factory():PlayerItemView { + return new PlayerItemView(); + } +} diff --git a/src/client/haxe/ru/m/tankz/view/network/PlayerItemView.yaml b/src/client/haxe/ru/m/tankz/view/network/PlayerItemView.yaml new file mode 100644 index 0000000..e579753 --- /dev/null +++ b/src/client/haxe/ru/m/tankz/view/network/PlayerItemView.yaml @@ -0,0 +1,8 @@ +--- +geometry.size.width: 100% +geometry.size.height: 48 +views: + - id: label + $type: haxework.view.LabelView + geometry.size.stretch: true + skinId: text.box diff --git a/src/common/haxe/ru/m/connect/js/JsConnection.hx b/src/common/haxe/ru/m/connect/js/JsConnection.hx index 3c4da44..4337dd6 100644 --- a/src/common/haxe/ru/m/connect/js/JsConnection.hx +++ b/src/common/haxe/ru/m/connect/js/JsConnection.hx @@ -21,13 +21,13 @@ class JsConnection extends BaseConnection { this.port = port; connected = false; } + + public static function isSecured():Bool { + return Browser.location.protocol == "https"; + } private function buildSocket(host:String, port:Int):WebSocket { - var protocol = switch Browser.location.protocol { - case 'http:': 'ws:'; - case 'https:': 'wss:'; - case _: 'ws:'; - } + var protocol = isSecured() ? "wss:" : "ws:"; return new WebSocket('$protocol//$host:$port'); } diff --git a/src/server/haxe/ru/m/tankz/server/Server.hx b/src/server/haxe/ru/m/tankz/server/Server.hx index 0af0ae2..28f67d0 100755 --- a/src/server/haxe/ru/m/tankz/server/Server.hx +++ b/src/server/haxe/ru/m/tankz/server/Server.hx @@ -52,7 +52,7 @@ class Server extends ThreadServer { Provider.setFactory(ILevelBundle, ServerLevelBundle); Provider.setFactory(IControlFactory, NoneControlFactory); gameManager = new GameManager(); - var host:String = Sys.args().length > 0 ? Sys.args()[0] : "localhost"; + var host:String = Sys.args().length > 0 ? Sys.args()[0] : "0.0.0.0"; var port:Int = Sys.args().length > 1 ? Std.parseInt(Sys.args()[1]) : 5000; var wserver = new Server(); L.i(TAG, 'Start on ${host}:${port}'); diff --git a/src/server/haxe/ru/m/tankz/server/game/GameManager.hx b/src/server/haxe/ru/m/tankz/server/game/GameManager.hx index b10dd8a..7cd5060 100644 --- a/src/server/haxe/ru/m/tankz/server/game/GameManager.hx +++ b/src/server/haxe/ru/m/tankz/server/game/GameManager.hx @@ -1,8 +1,7 @@ package ru.m.tankz.server.game; -import ru.m.tankz.proto.core.GameStateProto; -import ru.m.tankz.game.GameState; import ru.m.tankz.proto.core.GameProto; +import ru.m.tankz.proto.core.GameStateProto; import ru.m.tankz.proto.core.UserProto; import ru.m.tankz.server.game.IGameManager; diff --git a/src/server/haxe/ru/m/tankz/server/game/ServerGame.hx b/src/server/haxe/ru/m/tankz/server/game/ServerGame.hx index 2f5ea5a..a8ed68c 100644 --- a/src/server/haxe/ru/m/tankz/server/game/ServerGame.hx +++ b/src/server/haxe/ru/m/tankz/server/game/ServerGame.hx @@ -1,18 +1,18 @@ package ru.m.tankz.server.game; import ru.m.tankz.game.Game; -//import ru.m.tankz.game.GameRunner; +import ru.m.tankz.game.GameRunner; import ru.m.tankz.game.GameState; import ru.m.tankz.proto.core.GameProto; class ServerGame extends Game { - //public var runner(default, null):GameRunner; + public var runner(default, null):GameRunner; public var proto(default, null):GameProto; public function new(proto:GameProto) { super(new GameState(proto.type, 0, proto.level)); this.proto = proto; - //runner = new GameRunner(this); + runner = new GameRunner(this); } } diff --git a/src/server/haxe/ru/m/tankz/server/session/GameSession.hx b/src/server/haxe/ru/m/tankz/server/session/GameSession.hx index 264aeaa..56f7fcc 100644 --- a/src/server/haxe/ru/m/tankz/server/session/GameSession.hx +++ b/src/server/haxe/ru/m/tankz/server/session/GameSession.hx @@ -26,8 +26,15 @@ class GameSession extends ProtoSession implements GameManager public var user(default, null):UserProto; public var gameId(default, null):Int; + private var tag(get, never):String; + + private function get_tag():String { + return '[${id}|${user == null ? '-' : user.name}|${gameId == -1 ? '-' : Std.string(gameId)}]'; + } + public function new(socket:Socket) { super(socket, Request); + gameId = -1; } private function sendError(code:Int, message:String):Void { @@ -40,12 +47,25 @@ class GameSession extends ProtoSession implements GameManager } override public function send(packet:Response):Void { - L.d(TAG, 'send: ${user == null ? '' : user.name} - ${packet}'); - super.send(packet); + L.d(TAG, '$tag send: ${packet}'); + try { + super.send(packet); + } catch (error:Dynamic) { + L.e(TAG, '$tag send ', error); + } + } + + private function logout():Void { + gameId = -1; + gameManager.disconnect(this); + if (user != null) { + gameManager.leave(user); + user = null; + } } override private function onRequest(request:Request):Void { - L.d(TAG, 'onRequest: ${user == null ? '' : user.name} - ${request}'); + L.d(TAG, '$tag onRequest: ${request}'); try { if (!request.hasLogin() && user == null) { throw "Not Authorized"; @@ -59,11 +79,7 @@ class GameSession extends ProtoSession implements GameManager send(new Response().setLogin(new LoginResponse().setUser(user))); // logout } else if (request.hasLogout()) { - gameManager.disconnect(this); - if (user != null) { - gameManager.leave(user); - user = null; - } + logout(); send(new Response().setLogout(new LogoutResponse())); // create } else if (request.hasCreateGame()) { @@ -85,23 +101,21 @@ class GameSession extends ProtoSession implements GameManager gameManager.start(gameId); } } catch (error:Dynamic) { - L.e(TAG, "onRequest ", error); + L.e(TAG, '$tag onRequest ', error); sendError(500, LoggerUtil.printError(error)); } } override public function disconnect():Void { - gameId = null; - gameManager.disconnect(this); - if (user != null) { - gameManager.leave(user); - user = null; - } + L.d(TAG, '$tag disconnect'); + logout(); super.disconnect(); } public function onCreate(game:ServerGame):Void { - send(new Response().setListGame(listGame())); + if (gameId == -1) { + send(new Response().setListGame(listGame())); + } } public function onChange(game:ServerGame, change:GameChange):Void { @@ -109,21 +123,29 @@ class GameSession extends ProtoSession implements GameManager switch change { case JOIN(user): if (user.uuid == this.user.uuid) { - gameId = gameId = game.proto.id; + gameId = game.proto.id; } send(new Response().setJoinGame(new JoinGameResponse().setGame(game.proto).setUser(user))); case LEAVE(user): if (user.uuid == this.user.uuid) { - gameId = null; + gameId = -1; } send(new Response().setLeaveGame(new LeaveGameResponse().setGame(game.proto).setUser(user))); case START: send(new Response().setStartGame(new StartGameResponse().setGame(game.proto))); } + } else { + // ToDo: change game event + send(new Response().setListGame(listGame())); } } public function onDelete(game:ServerGame):Void { - send(new Response().setListGame(listGame())); + if (gameId == -1) { + send(new Response().setListGame(listGame())); + } else if (gameId == game.proto.id) { + gameId = -1; + send(new Response().setLeaveGame(new LeaveGameResponse().setGame(game.proto).setUser(user))); + } } } diff --git a/src/server/haxe/ru/m/tankz/server/session/ISession.hx b/src/server/haxe/ru/m/tankz/server/session/ISession.hx index dc18339..ae97bec 100644 --- a/src/server/haxe/ru/m/tankz/server/session/ISession.hx +++ b/src/server/haxe/ru/m/tankz/server/session/ISession.hx @@ -3,6 +3,7 @@ package ru.m.tankz.server.session; import haxe.io.Bytes; interface ISession { + public var id(default, null):Int; public function pushData(bytes:Bytes):Void; public function disconnect():Void; } diff --git a/src/server/haxe/ru/m/tankz/server/session/ProtoSession.hx b/src/server/haxe/ru/m/tankz/server/session/ProtoSession.hx index 4bd78e7..c86af2e 100644 --- a/src/server/haxe/ru/m/tankz/server/session/ProtoSession.hx +++ b/src/server/haxe/ru/m/tankz/server/session/ProtoSession.hx @@ -19,11 +19,15 @@ class ProtoSession implements ISession { "" ].join("\n"); + private static var idCounter:Int = 0; + + public var id(default, null):Int; public var connection(default, null):IConnection; private var socket:Socket; private var request:Class; public function new(socket:Socket, request:Class) { + this.id = ++idCounter; this.socket = socket; this.request = request; } @@ -41,7 +45,6 @@ class ProtoSession implements ISession { } else { connection = new NekoConnection(socket, request); } - connection.handler.connect(onConnectionEvent); connection.receiveHandler.connect(onRequest); return connection; } @@ -60,11 +63,7 @@ class ProtoSession implements ISession { } public function disconnect():Void { - connection.handler.emit(ConnectionEvent.DISCONNECTED); - } - - private function onConnectionEvent(event:ConnectionEvent):Void { - L.d(TAG, 'onConnectionEvent: ${event}'); + connection.disconnect(); } private function onRequest(request:I):Void {