diff --git a/gulpfile.js b/gulpfile.js index 59936c9..4df69b2 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,11 +1,8 @@ const gulp = require('gulp'); -const zip = require('gulp-zip'); -const foreach = require('gulp-foreach'); const gulpClean = require('gulp-clean'); const Config = require('./config.json'); const packageInfo = require('./package.json'); const {System, Sdk, Haxe, Project} = require('gulp-haxetool'); -const path = require('path'); const dateformat = require('dateformat'); const argv = require('yargs').argv; const publish = require('./tasks/gulp-publish'); @@ -26,19 +23,6 @@ exports.generate = function generate() { }); }; -exports.levels = function levels() { - return gulp.src("./src/common/level/*").pipe(foreach(function (stream, file) { - const type = file.path.substr(file.path.lastIndexOf(path.sep) + 1); - gulp.src("./src/common/level/" + type + "/*").pipe(foreach(function (stream, file) { - const name = file.path.substr(file.path.lastIndexOf(path.sep) + 1); - gulp.src("./src/common/level/" + type + "/" + name + "/*") - .pipe(zip(`${type}_${name}.zip`)) - .pipe(gulp.dest("./target/levels")); - })); - return stream; - })); -}; - /** * base config */ @@ -59,7 +43,6 @@ const config = new Project.Config({ ], assets: [ 'src/common/resources', - 'target/levels' ], flags: [ //'proto_debug', @@ -168,7 +151,6 @@ module.exports.publish = publish(packageInfo.name, packageInfo.version, Config.P */ const defaultSeries = [ exports.clean, - exports.levels, exports.generate, module.exports['client:flash:build'], module.exports['client:flash:html'], diff --git a/package-lock.json b/package-lock.json index 6cdc39c..edb0646 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,24 @@ { "name": "tankz", - "version": "0.15.1", + "version": "0.16.12", "lockfileVersion": 1, "requires": true, "dependencies": { "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", "dev": true }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -74,6 +83,12 @@ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", "dev": true }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -93,6 +108,151 @@ "buffer-equal": "^1.0.0" } }, + "archiver": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", + "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "async": "^2.6.3", + "buffer-crc32": "^0.2.1", + "glob": "^7.1.4", + "readable-stream": "^3.4.0", + "tar-stream": "^2.1.0", + "zip-stream": "^2.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -232,12 +392,12 @@ "dev": true }, "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.14" } }, "async-done": { @@ -351,6 +511,12 @@ } } }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -379,6 +545,43 @@ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, + "bl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-3.0.0.tgz", + "integrity": "sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A==", + "dev": true, + "requires": { + "readable-stream": "^3.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, "bluebird": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", @@ -401,6 +604,12 @@ "type-is": "~1.5.1" }, "dependencies": { + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, "depd": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/depd/-/depd-0.4.5.tgz", @@ -475,6 +684,16 @@ "integrity": "sha1-jfPNyiW/fVs1QtYVRdcwBT/OYEo=", "dev": true }, + "buffer": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -506,9 +725,9 @@ "dev": true }, "bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", "dev": true }, "cache-base": { @@ -529,25 +748,44 @@ } }, "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "dev": true, "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" }, "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true + }, + "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.1.0", + "once": "^1.3.1" + } } } }, @@ -639,6 +877,43 @@ } } }, + "cli-progress": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.1.0.tgz", + "integrity": "sha512-kyJpr4D/TJpxJbXvlv564Aaapsz02b/INF3Wh0F2+o+baeTzw5ylhUR6FyQh7M/nFEubD1QYkydVPBOYkYQfKA==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -791,12 +1066,74 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true + }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, + "compress-commons": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", + "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^3.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -905,6 +1242,53 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "requires": { + "buffer": "^5.1.0" + } + }, + "crc32-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", + "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", + "dev": true, + "requires": { + "crc": "^3.4.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -1006,6 +1390,12 @@ "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", "dev": true }, + "defer-to-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", + "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==", + "dev": true + }, "define-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", @@ -1620,53 +2010,11 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true }, "fs-extra": { "version": "5.0.0", @@ -2325,10 +2673,25 @@ "dev": true }, "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "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" + }, + "dependencies": { + "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.1.0", + "once": "^1.3.1" + } + } + } }, "get-value": { "version": "2.0.6", @@ -2483,36 +2846,22 @@ } }, "got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "dev": true, "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", "decompress-response": "^3.3.0", "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" } }, "graceful-fs": { @@ -3028,76 +3377,119 @@ } }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true } } }, - "gulp-foreach": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/gulp-foreach/-/gulp-foreach-0.1.0.tgz", - "integrity": "sha1-JUer/RobdfVptUGUGQ7xwLAolTg=", + "gulp-gzip": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/gulp-gzip/-/gulp-gzip-1.4.2.tgz", + "integrity": "sha512-ZIxfkUwk2XmZPTT9pPHrHUQlZMyp9nPhg2sfoeN27mBGpi7OaHnOD+WCN41NXjfJQ69lV1nQ9LLm1hYxx4h3UQ==", "dev": true, "requires": { - "gulp-util": "~2.2.14", - "through2": "~0.6.3" + "ansi-colors": "^1.0.1", + "bytes": "^3.0.0", + "fancy-log": "^1.3.2", + "plugin-error": "^1.0.0", + "stream-to-array": "^2.3.0", + "through2": "^2.0.3" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" } }, "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true } } }, "gulp-haxetool": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/gulp-haxetool/-/gulp-haxetool-0.0.20.tgz", - "integrity": "sha512-ePL/TktdKuThiNY6I/UGiM9FH5gXucQDFBM42OhrUSWASEwdPOJUK3T39SXMX0taUngLpn3RNwHk8LbnA/rl3A==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/gulp-haxetool/-/gulp-haxetool-0.1.0.tgz", + "integrity": "sha512-HTR8fUf/si6udIVD8OrH18d8inAZdZkAvX2lP5L+XWlyVDoRyIF0GTpkTJzuKezv5BGzNRjVn5cx9cQ7MwSJsQ==", "dev": true, "requires": { "ansi-colors": "^1.1.0", "async": "^2.6.0", + "cli-progress": "^3.0.0", "fancy-log": "^1.3.2", "fs-extra": "^5.0.0", - "got": "^8.3.0", + "got": "^9.6.0", "gulp": "^4.0.0", "gulp-debian": "^0.1.9", + "gulp-gzip": "^1.4.2", "gulp-rename": "^1.2.2", "gulp-spawn": "^0.4.0", + "gulp-tar": "^3.0.0", "gulp-webserver": "^0.9.1", + "gulp-zip": "^5.0.0", "lodash.defaults": "^4.2.0", "lodash.template": "^4.4.0", "plugin-error": "^1.0.1", - "progress": "^2.0.0", "promise-streams": "^2.1.1", "tail": "^1.2.3", - "tar": "^4.4.1", + "tar": "^4.4.10", "through2": "^2.0.3", "tmp-file": "^2.0.1", "unzip-stream": "^0.3.0", @@ -3130,22 +3522,22 @@ "dev": true }, "lodash.template": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", - "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "requires": { - "lodash._reinterpolate": "~3.0.0", + "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" } }, "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "requires": { - "lodash._reinterpolate": "~3.0.0" + "lodash._reinterpolate": "^3.0.0" } }, "plugin-error": { @@ -3215,9 +3607,9 @@ } }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true } } @@ -3252,6 +3644,87 @@ } } }, + "gulp-tar": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-tar/-/gulp-tar-3.0.0.tgz", + "integrity": "sha512-vgUeodtzF5QY4i74QEYHUVZN9YCY3OOTZhMWYHC3J76T1n/lMltJYupbNI1UZyYin7rwdLjV+dZDiN2w6Pjc6Q==", + "dev": true, + "requires": { + "archiver": "^3.1.1", + "plugin-error": "^1.0.1", + "through2": "^3.0.1", + "vinyl": "^2.1.0" + }, + "dependencies": { + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + } + } + }, "gulp-util": { "version": "2.2.20", "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", @@ -3431,27 +3904,12 @@ "sparkles": "^1.0.0" } }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "dev": true - }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -3500,9 +3958,9 @@ "dev": true }, "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==", "dev": true }, "http-errors": { @@ -3529,6 +3987,12 @@ "integrity": "sha1-6V8uQdsHNfwhZS94J6XuMuY8g6g=", "dev": true }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", @@ -3566,16 +4030,6 @@ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "dev": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } - }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", @@ -3749,18 +4203,6 @@ } } }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -3779,12 +4221,6 @@ "is-unc-path": "^1.0.0" } }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "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", @@ -3842,16 +4278,6 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", @@ -3889,9 +4315,9 @@ "dev": true }, "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", "dev": true, "requires": { "json-buffer": "3.0.0" @@ -4026,9 +4452,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "lodash._basecopy": { @@ -4153,6 +4579,12 @@ "lodash.keys": "~2.4.1" } }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, "lodash.escape": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", @@ -4164,6 +4596,12 @@ "lodash.keys": "~2.4.1" } }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", @@ -4185,6 +4623,12 @@ "lodash._objecttypes": "~2.4.1" } }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, "lodash.keys": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", @@ -4227,6 +4671,12 @@ "lodash.escape": "~2.4.1" } }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "dev": true + }, "lodash.values": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", @@ -4439,9 +4889,9 @@ "dev": true }, "minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.5.0.tgz", + "integrity": "sha512-9FwMVYhn6ERvMR8XFdOavRz4QK/VJV8elU1x50vYexf9lslDcWe/f4HBRxCPd185ekRSjU6CfYyJCECa/CQy7Q==", "dev": true, "requires": { "safe-buffer": "^5.1.2", @@ -4607,15 +5057,10 @@ } }, "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz", + "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==", + "dev": true }, "now-and-later": { "version": "2.0.0", @@ -4829,9 +5274,9 @@ } }, "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, "p-defer": { @@ -4846,12 +5291,6 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true - }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", @@ -4870,15 +5309,6 @@ "p-limit": "^2.0.0" } }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -5004,37 +5434,21 @@ } }, "plexer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/plexer/-/plexer-1.0.2.tgz", - "integrity": "sha512-YvKSr441x/P9tNuNHUyDWGUSnzsCNXox425j14/3+YcwMyVnJs11qiz/ZWti/y+UNhCFu4SkDSelHYY5hXpifQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/plexer/-/plexer-1.0.3.tgz", + "integrity": "sha512-U8iVMgA9Asku2az1HCoYUywL54hypBQ0d2svuDb3aO8MsuvhQKz/I3db2WtZcRQWe42N/3E8Pru/F/WvzIh6UA==", "dev": true, "requires": { - "debug": "2.6.1", "isstream": "^0.1.2", "readable-stream": "^2.0.2" }, "dependencies": { - "debug": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", - "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -5149,12 +5563,6 @@ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "promise-streams": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/promise-streams/-/promise-streams-2.1.1.tgz", @@ -5197,17 +5605,6 @@ "integrity": "sha1-EIirr53MCuWuRbcJ5sa1iIsjkjw=", "dev": true }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -5222,6 +5619,14 @@ "requires": { "bytes": "1", "iconv-lite": "0.4.4" + }, + "dependencies": { + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + } } }, "read-pkg": { @@ -5805,15 +6210,6 @@ } } }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -5931,11 +6327,14 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true + "stream-to-array": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", + "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", + "dev": true, + "requires": { + "any-promise": "^1.1.0" + } }, "string-width": { "version": "3.1.0", @@ -6041,6 +6440,47 @@ "yallist": "^3.0.3" } }, + "tar-stream": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.0.tgz", + "integrity": "sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw==", + "dev": true, + "requires": { + "bl": "^3.0.0", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -6141,12 +6581,6 @@ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", "dev": true }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, "tiny-lr": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.1.4.tgz", @@ -6227,6 +6661,12 @@ } } }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -6532,12 +6972,6 @@ "prepend-http": "^2.0.0" } }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "dev": true - }, "use": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", @@ -6884,6 +7318,45 @@ "requires": { "buffer-crc32": "~0.2.3" } + }, + "zip-stream": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.2.tgz", + "integrity": "sha512-ykebHGa2+uzth/R4HZLkZh3XFJzivhVsjJt8bN3GvBzLaqqrUdRacu+c4QtnUgjkkQfsOuNE1JgLKMCPNmkKgg==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^2.1.1", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } } } } diff --git a/package.json b/package.json index b8cea06..59a2df2 100755 --- a/package.json +++ b/package.json @@ -7,9 +7,7 @@ "gulp": "^4.0.0", "gulp-add": "0.0.2", "gulp-clean": "^0.4.0", - "gulp-foreach": "^0.1.0", "gulp-haxetool": "0.1.0", - "gulp-zip": "^5.0.0", "yargs": "^13.2.4" }, "haxeDependencies": { diff --git a/src/client/haxe/ru/m/tankz/bundle/LevelBundle.hx b/src/client/haxe/ru/m/tankz/bundle/LevelBundle.hx index 3e6dd18..aa529fe 100644 --- a/src/client/haxe/ru/m/tankz/bundle/LevelBundle.hx +++ b/src/client/haxe/ru/m/tankz/bundle/LevelBundle.hx @@ -1,6 +1,7 @@ package ru.m.tankz.bundle; import openfl.Assets; +import openfl.utils.AssetType; import ru.m.tankz.config.Config; import ru.m.tankz.Type; import ru.m.tankz.util.LevelUtil; @@ -12,7 +13,7 @@ class LevelBundle implements ILevelBundle { public function new() {} private function resolve(id:PackId):LevelPack { - var bytes = Assets.getBytes('levels/${id}.zip'); + var bytes = Assets.getBytes('resources/level/${id}.zip'); return { id: id, data: LevelUtil.unpack(bytes).map(function(level) { @@ -28,4 +29,14 @@ class LevelBundle implements ILevelBundle { } return _cache.get(id); } + + public function list():Array { + var result = []; + for (path in Assets.list(AssetType.BINARY)) { + if (StringTools.startsWith(path, "resources/level")) { + result.push(PackId.fromString(path.split("/").pop().split(".").shift())); + } + } + return result; + } } diff --git a/src/client/haxe/ru/m/tankz/local/LocalGame.hx b/src/client/haxe/ru/m/tankz/local/LocalGame.hx index 66fa986..fe6b1d3 100644 --- a/src/client/haxe/ru/m/tankz/local/LocalGame.hx +++ b/src/client/haxe/ru/m/tankz/local/LocalGame.hx @@ -33,7 +33,7 @@ class LocalGame extends GameRunner { } } if (humansTeams.length == 1 && result.winner == humansTeams[0]) { - var progress = gameStorage.get(new PackId(result.state.type)); + var progress = gameStorage.get(result.level.packId); progress.completeLevel(result.level.id, result.state.presetId); gameStorage.set(progress); } diff --git a/src/client/haxe/ru/m/tankz/view/LevelFrame.hx b/src/client/haxe/ru/m/tankz/view/LevelFrame.hx index 6484591..5c8993a 100644 --- a/src/client/haxe/ru/m/tankz/view/LevelFrame.hx +++ b/src/client/haxe/ru/m/tankz/view/LevelFrame.hx @@ -12,6 +12,8 @@ import ru.m.tankz.game.GameState; import ru.m.tankz.storage.GameStorage; import ru.m.tankz.Type.PackId; +using ru.m.tankz.view.ViewUtil; + @:template class LevelFrame extends FrameView { public static inline var ID = "level"; @@ -35,7 +37,7 @@ import ru.m.tankz.Type.PackId; } override public function onShow(data:PackId):Void { - header.text = data.type; + header.text = data.toPackLabel(); pack = levelBundle.get(data); levels.data = pack.data; } diff --git a/src/client/haxe/ru/m/tankz/view/MenuFrame.hx b/src/client/haxe/ru/m/tankz/view/MenuFrame.hx index 04fe352..2d31faf 100644 --- a/src/client/haxe/ru/m/tankz/view/MenuFrame.hx +++ b/src/client/haxe/ru/m/tankz/view/MenuFrame.hx @@ -1,9 +1,11 @@ package ru.m.tankz.view; +import haxework.view.data.DataView; import haxework.view.form.ButtonView; import haxework.view.form.LabelView; import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameView; +import ru.m.tankz.bundle.ILevelBundle; import ru.m.tankz.game.GameInit; import ru.m.tankz.game.GameState; import ru.m.tankz.network.NetworkManager; @@ -12,15 +14,19 @@ import ru.m.tankz.view.network.RoomFrame; import ru.m.tankz.view.network.RoomListFrame; import ru.m.tankz.view.popup.LoginPopup; +using ru.m.tankz.view.ViewUtil; + @:template class MenuFrame extends FrameView { public static var ID(default, never):String = "menu"; - @:provide var gameInit:GameInit; - @:provide var switcher:FrameSwitcher; - @:provide var network:NetworkManager; - @:provide var appUpdater:Updater; + @:provide static var gameInit:GameInit; + @:provide static var switcher:FrameSwitcher; + @:provide static var network:NetworkManager; + @:provide static var appUpdater:Updater; + @:provide static var levelBundle:ILevelBundle; + @:view var packs:DataView; @:view var username:LabelView; @:view("login") var loginButton:ButtonView; @:view("logout") var logoutButton:ButtonView; @@ -40,6 +46,9 @@ import ru.m.tankz.view.popup.LoginPopup; updateButton.text = 'Update ${appUpdater.bundle.version}'; } }); + var list = levelBundle.list(); + list.sort(function(a:PackId, b:PackId) return a.toPackLabel() > b.toPackLabel() ? 1 : -1); + packs.data = list; } override public function onHide():Void { @@ -47,9 +56,16 @@ import ru.m.tankz.view.popup.LoginPopup; network.stateSignal.disconnect(onConnectionState); } - private function startGame(type:GameType):Void { - gameInit = LOCAL({state: new GameState(type), level: null}); - switcher.change(LevelFrame.ID, new PackId(type)); + private function packButtonFactory(index:Int, packId:PackId):ButtonView { + var result = new ButtonView(); + result.style = "button.menu"; + result.text = packId.toPackLabel(); + return result; + } + + private function startGame(packId:PackId):Void { + gameInit = LOCAL({state: new GameState(packId.type), level: null}); + switcher.change(LevelFrame.ID, packId); } private function startNetwork():Void { diff --git a/src/client/haxe/ru/m/tankz/view/MenuFrame.yaml b/src/client/haxe/ru/m/tankz/view/MenuFrame.yaml index f2a6060..d4b4572 100644 --- a/src/client/haxe/ru/m/tankz/view/MenuFrame.yaml +++ b/src/client/haxe/ru/m/tankz/view/MenuFrame.yaml @@ -1,79 +1,74 @@ --- views: - - $type: haxework.view.group.VGroupView - style: container - overflow.y: scroll - views: - - $type: haxework.view.group.VGroupView - layout.margin: 10 - layout.hAlign: center - views: - - $type: haxework.view.form.LabelView - text: Tank'z - style: font - font.size: 100 - geometry.margin.bottom: 30 - - $type: haxework.view.form.ButtonView - style: button.menu - +onPress: ~startGame('classic') - text: Classic - - $type: haxework.view.form.ButtonView - style: button.menu - +onPress: ~startGame('dota') - text: DotA - - $type: haxework.view.form.ButtonView - style: button.menu - +onPress: ~startGame('death') - text: DeathMatch - - $type: haxework.view.SpriteView - style: line - geometry.width: 250 - geometry.margin: [0, 10] - visible: false - - $type: haxework.view.form.ButtonView - style: button.menu - +onPress: ~switcher.change('record') - text: Records - visible: false - - id: network - $type: haxework.view.form.ButtonView - style: button.menu - +onPress: ~startNetwork() - text: Network - visible: false - - $type: haxework.view.form.LabelView - geometry.hAlign: right - geometry.vAlign: top - geometry.position: absolute - geometry.margin: [0, 20, 20, 0] - style: text.box - text: $r:text:version - - $type: haxework.view.group.HGroupView - style: panel - layout.margin: 10 - views: - - id: settings - $type: haxework.view.form.ButtonView - style: button.settings - +onPress: ~switcher.change('settings') + - $type: haxework.view.group.VGroupView + style: container + overflow.y: scroll + views: + - $type: haxework.view.group.VGroupView + layout.margin: 10 + layout.hAlign: center + views: + - $type: haxework.view.form.LabelView + text: Tank'z + style: font + font.size: 100 + geometry.margin.bottom: 30 + - id: packs + $type: haxework.view.data.DataView + layout: + $type: haxework.view.layout.VerticalLayout + margin: 10 + factory: ~packButtonFactory + +onDataSelect: ~startGame - $type: haxework.view.SpriteView - geometry.width: 50% - - id: username - $type: haxework.view.form.LabelView - style: text - - id: login - $type: haxework.view.form.ButtonView - style: button.login - +onPress: ~login() - - id: logout - $type: haxework.view.form.ButtonView - style: button.logout - +onPress: ~logout() + style: line + geometry.width: 250 + geometry.margin: [0, 10] visible: false - - $type: haxework.view.SpriteView - geometry.width: 50% - - id: update - $type: haxework.view.form.ButtonView - style: button.active - +onPress: ~appUpdate() + - $type: haxework.view.form.ButtonView + style: button.menu + +onPress: ~switcher.change('record') + text: Records visible: false + - id: network + $type: haxework.view.form.ButtonView + style: button.menu + +onPress: ~startNetwork() + text: Network + visible: false + - $type: haxework.view.form.LabelView + geometry.hAlign: right + geometry.vAlign: top + geometry.position: absolute + geometry.margin: [0, 20, 20, 0] + style: text.box + text: $r:text:version + - $type: haxework.view.group.HGroupView + style: panel + layout.margin: 10 + views: + - id: settings + $type: haxework.view.form.ButtonView + style: button.settings + +onPress: ~switcher.change('settings') + - $type: haxework.view.SpriteView + geometry.width: 50% + - id: username + $type: haxework.view.form.LabelView + style: text + - id: login + $type: haxework.view.form.ButtonView + style: button.login + +onPress: ~login() + - id: logout + $type: haxework.view.form.ButtonView + style: button.logout + +onPress: ~logout() + visible: false + - $type: haxework.view.SpriteView + geometry.width: 50% + - id: update + $type: haxework.view.form.ButtonView + style: button.active + +onPress: ~appUpdate() + visible: false diff --git a/src/client/haxe/ru/m/tankz/view/ViewUtil.hx b/src/client/haxe/ru/m/tankz/view/ViewUtil.hx index ba61851..fe9ff25 100644 --- a/src/client/haxe/ru/m/tankz/view/ViewUtil.hx +++ b/src/client/haxe/ru/m/tankz/view/ViewUtil.hx @@ -1,5 +1,6 @@ package ru.m.tankz.view; +import ru.m.tankz.Type.PackId; import openfl.Assets; import ru.m.control.DeviceAction; import ru.m.tankz.config.Config; @@ -40,6 +41,10 @@ class ViewUtil { return result.join(oneline ? " " : "\n"); } + public static function toPackLabel(packId:PackId):String { + return packId.name != PackId.DEFAULT ? '${packId.type} #${packId.name}' : packId.type; + } + public static function toActionLabel(action:TankAction):String { return switch (action) { case MOVE(d): 'MOVE_$d'; diff --git a/src/common/haxe/ru/m/tankz/Type.hx b/src/common/haxe/ru/m/tankz/Type.hx index 3e4693e..5da2b6d 100644 --- a/src/common/haxe/ru/m/tankz/Type.hx +++ b/src/common/haxe/ru/m/tankz/Type.hx @@ -80,6 +80,10 @@ abstract PackId(Array) { return new PackId(value[0], value[1]); } + @:from static public function fromString(value:String):PackId { + return fromArray(value.split("_")); + } + @:to public inline function toString():String { return '${type}_${name}'; } diff --git a/src/common/haxe/ru/m/tankz/bundle/ILevelBundle.hx b/src/common/haxe/ru/m/tankz/bundle/ILevelBundle.hx index 90b44a6..66939fc 100644 --- a/src/common/haxe/ru/m/tankz/bundle/ILevelBundle.hx +++ b/src/common/haxe/ru/m/tankz/bundle/ILevelBundle.hx @@ -5,4 +5,5 @@ import ru.m.tankz.Type; interface ILevelBundle { public function get(id:PackId):LevelPack; + public function list():Array; } diff --git a/src/common/haxe/ru/m/tankz/util/LevelUtil.hx b/src/common/haxe/ru/m/tankz/util/LevelUtil.hx index 5b3110b..ee2e928 100644 --- a/src/common/haxe/ru/m/tankz/util/LevelUtil.hx +++ b/src/common/haxe/ru/m/tankz/util/LevelUtil.hx @@ -1,5 +1,9 @@ package ru.m.tankz.util; +import haxe.zip.Tools; +import haxe.io.BytesOutput; +import haxe.zip.Writer; +import flash.utils.ByteArray; import haxe.io.Bytes; import haxe.io.BytesInput; import haxe.zip.Entry; @@ -87,8 +91,32 @@ class LevelUtil { return level; } + private static function compress(level:LevelConfig):Entry { + var content = LevelUtil.dumps(null, level); + var bytes = Bytes.ofString(content); + var crc = haxe.crypto.Crc32.make(bytes); + var result:Entry = { + fileName: '${formatLevel(level.id)}.txt', + fileSize: bytes.length, + fileTime : Date.now(), + compressed : false, + dataSize : bytes.length, + data : bytes, + crc32 : crc, + }; + Tools.compress(result, 9); + return result; + } + public static function unpack(bytes:Bytes):Array { var files = Reader.readZip(new BytesInput(bytes)); return Lambda.array(files.map(extract)); } + + public static function pack(data:Array):Bytes { + var output = new BytesOutput(); + var writer = new Writer(output); + writer.write(Lambda.list(data.map(compress))); + return output.getBytes(); + } } diff --git a/src/common/resources/level/classic_modern.zip b/src/common/resources/level/classic_modern.zip new file mode 100644 index 0000000..e7a5d52 Binary files /dev/null and b/src/common/resources/level/classic_modern.zip differ diff --git a/src/common/resources/level/classic_standard.zip b/src/common/resources/level/classic_standard.zip new file mode 100644 index 0000000..bba7a99 Binary files /dev/null and b/src/common/resources/level/classic_standard.zip differ diff --git a/src/common/resources/level/death_standard.zip b/src/common/resources/level/death_standard.zip new file mode 100644 index 0000000..664e4ea Binary files /dev/null and b/src/common/resources/level/death_standard.zip differ diff --git a/src/common/resources/level/dota_standard.zip b/src/common/resources/level/dota_standard.zip new file mode 100644 index 0000000..8685991 Binary files /dev/null and b/src/common/resources/level/dota_standard.zip differ diff --git a/src/editor/haxe/ru/m/tankz/editor/Editor.hx b/src/editor/haxe/ru/m/tankz/editor/Editor.hx index bf0d022..d6678bd 100644 --- a/src/editor/haxe/ru/m/tankz/editor/Editor.hx +++ b/src/editor/haxe/ru/m/tankz/editor/Editor.hx @@ -19,6 +19,7 @@ class Editor { @:provide static var resources:IResources; @:provide static var theme:ITheme; @:provide static var switcher:FrameSwitcher; + @:provide static var storage:EditorStorage; public static function main() { L.push(new haxework.log.TraceLogger()); @@ -39,6 +40,7 @@ class Editor { Provider.setFactory(IConfigBundle, ConfigBundle); Provider.setFactory(ILevelBundle, LevelBundle); + storage = new EditorStorage(); var view = new EditorView(); Root.bind(view); diff --git a/src/editor/haxe/ru/m/tankz/editor/EditorStorage.hx b/src/editor/haxe/ru/m/tankz/editor/EditorStorage.hx new file mode 100644 index 0000000..234cf00 --- /dev/null +++ b/src/editor/haxe/ru/m/tankz/editor/EditorStorage.hx @@ -0,0 +1,22 @@ +package ru.m.tankz.editor; + +import haxe.DynamicAccess; +import haxework.storage.SharedObjectStorage; +import ru.m.tankz.Type; + +class EditorStorage extends SharedObjectStorage { + private static inline var VERSION = 2; + + public function new() { + super('editor_${VERSION}'); + } + + public function packList():Array { + var result = []; + var data:DynamicAccess = so.data; + for (id in data.keys()) { + result.push(PackId.fromString(id)); + } + return result; + } +} diff --git a/src/editor/haxe/ru/m/tankz/editor/FileUtil.hx b/src/editor/haxe/ru/m/tankz/editor/FileUtil.hx index 73095b3..9752b7b 100644 --- a/src/editor/haxe/ru/m/tankz/editor/FileUtil.hx +++ b/src/editor/haxe/ru/m/tankz/editor/FileUtil.hx @@ -1,19 +1,18 @@ package ru.m.tankz.editor; -import promhx.Deferred; -import flash.events.ProgressEvent; -import flash.events.IOErrorEvent; import flash.events.Event; +import flash.events.IOErrorEvent; +import flash.events.ProgressEvent; import flash.net.FileReference; +import haxe.io.Bytes; +import promhx.Deferred; import promhx.Promise; - typedef FileContent = { var name:String; - var content:String; + var content:Bytes; } - class FileUtil { public static function browse():Promise { @@ -30,10 +29,9 @@ class FileUtil { }); file.addEventListener(Event.COMPLETE, function(event:Event) { var f:FileReference = cast event.target; - var data = f.data.readUTFBytes(f.data.length); d.resolve({ name: f.name, - content: data + content: Bytes.ofData(f.data), }); }); file.browse(); @@ -42,7 +40,6 @@ class FileUtil { public static function save(content:FileContent):Void { var file = new FileReference(); - file.save(content.content, content.name); + file.save(content.content.getData(), content.name); } - } diff --git a/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.hx b/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.hx index e29aeea..be82e52 100644 --- a/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.hx +++ b/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.hx @@ -1,19 +1,18 @@ package ru.m.tankz.editor.view; -import haxework.view.list.LabelListItem; +import ru.m.tankz.util.LevelUtil; import haxework.view.data.DataView; import haxework.view.form.InputView; import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameView; +import haxework.view.list.LabelListItem; import haxework.view.list.ListView; import ru.m.tankz.bundle.IConfigBundle; import ru.m.tankz.config.Config; -import ru.m.tankz.editor.FileUtil; import ru.m.tankz.editor.view.map.BrickView; import ru.m.tankz.editor.view.map.MapEditView; import ru.m.tankz.editor.view.map.SpawnPointView; import ru.m.tankz.Type; -import ru.m.tankz.util.LevelUtil; using ru.m.tankz.view.ViewUtil; @@ -24,6 +23,7 @@ using ru.m.tankz.view.ViewUtil; public var level(default, set):LevelConfig; private var fileName:String; + private var pack:LevelPack; @:view var levels:ListView; @:view var levelName:InputView; @@ -36,6 +36,7 @@ using ru.m.tankz.view.ViewUtil; @:provide var configBundle:IConfigBundle; @:provide var config:Config; @:provide static var switcher:FrameSwitcher; + @:provide static var storage:EditorStorage; public function new() { super(ID); @@ -43,8 +44,12 @@ using ru.m.tankz.view.ViewUtil; override public function onShow(data:LevelPack):Void { super.onShow(data); - type = data.id.type; - levels.data = data.data; + pack = data; + type = pack.id.type; + levels.data = pack.data; + if (pack.data.length > 0) { + level = pack.data[0]; + } } private function set_type(value:GameType):GameType { @@ -104,20 +109,14 @@ using ru.m.tankz.view.ViewUtil; updateSelected(null, point); } - private function open():Void { - FileUtil.browse().then(function(content:FileContent) { - fileName = content.name; - level = LevelUtil.loads(content.content); - }); - } - private function save():Void { var data = mapView.data; + data.id = level.id; + data.packId = pack.id; data.name = levelName.text; - FileUtil.save({ - name: fileName, - content: LevelUtil.dumps(config, data), - }); + pack.data[data.id] = data; + levels.data = pack.data; + storage.write(pack.id, pack); } private function applySize():Void { @@ -129,4 +128,23 @@ using ru.m.tankz.view.ViewUtil; heightInput.text = Std.string(config.map.grid.height); mapView.gridSize = null; } + + private function addLevel():Void { + var level = LevelUtil.empty(config.map.grid, 0); + level.id = pack.data.length; + level.packId = pack.id; + pack.data.push(level); + levels.data = pack.data; + this.level = level; + } + + private function removeLevel():Void { + if (level != null) { + pack.data.remove(level); + levels.data = pack.data; + if (pack.data.length > 0) { + this.level = pack.data[0]; + } + } + } } diff --git a/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.yaml b/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.yaml index 78aa424..adf6a7d 100644 --- a/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.yaml +++ b/src/editor/haxe/ru/m/tankz/editor/view/PackFrame.yaml @@ -3,14 +3,20 @@ views: - $type: haxework.view.group.HGroupView geometry.stretch: true views: - - id: levels - $type: haxework.view.list.VListView - geometry.width: 200 + - $type: haxework.view.group.VGroupView geometry.height: 100% - factory: ~levelViewFactory - +onItemSelect: ~onLevelSelect - scroll: - $type: haxework.view.list.VScrollBarView + views: + - id: levels + $type: haxework.view.list.VListView + geometry.width: 200 + geometry.height: 100% + factory: ~levelViewFactory + +onItemSelect: ~onLevelSelect + scroll: + $type: haxework.view.list.VScrollBarView + - $type: haxework.view.form.ButtonView + text: + + +onPress: ~addLevel() - $type: haxework.view.group.VGroupView geometry.stretch: true views: @@ -69,22 +75,20 @@ views: overflow.x: crop overflow.y: crop views: - - $type: ru.m.tankz.view.game.GameViewContainer - views: - - id: mapView - $type: ru.m.tankz.editor.view.map.MapEditView + - $type: ru.m.tankz.view.game.GameViewContainer + views: + - id: mapView + $type: ru.m.tankz.editor.view.map.MapEditView - $type: haxework.view.group.HGroupView style: panel layout.margin: 10 views: - $type: haxework.view.SpriteView geometry.width: 100% - - id: openButton - $type: haxework.view.form.ButtonView - text: Open - +onPress: ~open() - - id: saveButton - $type: haxework.view.form.ButtonView + - $type: haxework.view.form.ButtonView + text: Remove + +onPress: ~removeLevel() + - $type: haxework.view.form.ButtonView text: Save +onPress: ~save() - $type: haxework.view.form.ButtonView diff --git a/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.hx b/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.hx index c4fed06..5a2dd2f 100644 --- a/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.hx +++ b/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.hx @@ -1,20 +1,22 @@ package ru.m.tankz.editor.view; import haxework.view.data.DataView; -import haxework.view.form.ButtonView; import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameView; import ru.m.tankz.bundle.ILevelBundle; import ru.m.tankz.config.Config; +import ru.m.tankz.editor.FileUtil; import ru.m.tankz.Type; +import ru.m.tankz.util.LevelUtil; @:template class PackListFrame extends FrameView { public static inline var ID = "pack_list"; - @:view("packs") var packView:DataView; + @:view("packs") var packView:DataView; @:provide static var levelBundle:ILevelBundle; @:provide static var switcher:FrameSwitcher; + @:provide static var storage:EditorStorage; public function new() { super(ID); @@ -22,20 +24,49 @@ import ru.m.tankz.Type; override public function onShow(data:Dynamic):Void { super.onShow(data); - packView.data = [ - levelBundle.get(new PackId("classic")), - levelBundle.get(new PackId("dota")), - levelBundle.get(new PackId("death")), - ]; + packView.data = storage.packList(); } - private function packViewFactory(index:Int, value:LevelPack):ButtonView { - var result = new ButtonView(); - result.text = value.id; - return result; + private function onPackAction(value:PackId, action:String):Void { + switch action { + case "export": + var pack:LevelPack = storage.read(value); + FileUtil.save({ + name: '${value}.zip', + content: LevelUtil.pack(pack.data), + }); + case "edit": + switcher.change(PackFrame.ID, storage.read(value)); + case "delete": + storage.delete(value); + packView.data = storage.packList(); + case _: + } } - private function onPackSelect(value:LevelPack):Void { - switcher.change(PackFrame.ID, value); + private function create():Void { + var levelPack:LevelPack = { + id: new PackId("classic", "modern"), + data: [], + } + storage.write(levelPack.id, levelPack); + packView.data.push(levelPack.id); + packView.data = packView.data; + } + + private function open():Void { + FileUtil.browse().then(function(file:FileContent) { + var packId = PackId.fromArray(file.name.split("/").pop().split(".").shift().split("_")); + var levelPack:LevelPack = { + id: packId, + data: LevelUtil.unpack(file.content).map(function(level) { + level.packId = packId; + return level; + }), + }; + storage.write(levelPack.id, levelPack); + packView.data.push(levelPack.id); + packView.data = packView.data; + }); } } diff --git a/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.yaml b/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.yaml index 848ee99..392020e 100644 --- a/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.yaml +++ b/src/editor/haxe/ru/m/tankz/editor/view/PackListFrame.yaml @@ -1,17 +1,22 @@ --- views: - - id: packs - $type: haxework.view.data.DataView - geometry.width: 100% - geometry.height: 100% - geometry.padding: 30 - overflow.y: scroll - layout: - $type: haxework.view.layout.TailLayout - rowSize: 10 - margin: 5 - factory: ~packViewFactory - +onDataSelect: ~onPackSelect + - $type: haxework.view.group.VGroupView + style: container + layout.margin: 10 + views: + - $type: haxework.view.form.ButtonView + text: New + +onPress: ~create() + - id: packs + $type: haxework.view.data.DataView + layout: + $type: haxework.view.layout.VerticalLayout + margin: 5 + factory: ~ru.m.tankz.editor.view.PackView.factory + +onDataAction: ~onPackAction + - $type: haxework.view.form.ButtonView + text: Open + +onPress: ~open() - $type: haxework.view.group.HGroupView style: panel layout.margin: 10 diff --git a/src/editor/haxe/ru/m/tankz/editor/view/PackView.hx b/src/editor/haxe/ru/m/tankz/editor/view/PackView.hx new file mode 100644 index 0000000..c77490a --- /dev/null +++ b/src/editor/haxe/ru/m/tankz/editor/view/PackView.hx @@ -0,0 +1,50 @@ +package ru.m.tankz.editor.view; + +import haxework.signal.Signal; +import haxework.view.data.DataView; +import haxework.view.form.ButtonView; +import haxework.view.group.HGroupView; +import haxework.view.list.ListView; +import ru.m.tankz.Type; + +using ru.m.tankz.view.ViewUtil; + +@:template class PackView extends HGroupView implements IListItemView { + + public var item_index(default, default):Int; + public var data(default, set):PackId; + + private var actionSignal(get, null):Signal2; + + @:view var label:ButtonView; + + private function set_data(value:PackId):PackId { + data = value; + label.text = data.toPackLabel(); + return data; + } + + private function get_actionSignal():Signal2 { + var dataView:DataView = cast parent; + return dataView.onDataAction; + } + + private function export():Void { + actionSignal.emit(data, "export"); + } + + private function edit():Void { + actionSignal.emit(data, "edit"); + } + + private function delete():Void { + actionSignal.emit(data, "delete"); + } + + public static function factory(index:Int, value:PackId):PackView { + var result = new PackView(); + result.item_index = index; + result.data = value; + return result; + } +} diff --git a/src/editor/haxe/ru/m/tankz/editor/view/PackView.yaml b/src/editor/haxe/ru/m/tankz/editor/view/PackView.yaml new file mode 100644 index 0000000..54c52e3 --- /dev/null +++ b/src/editor/haxe/ru/m/tankz/editor/view/PackView.yaml @@ -0,0 +1,14 @@ +--- +layout.margin: 5 +views: + - $type: haxework.view.form.ButtonView + style: button.prev + +onPress: ~export() + - id: label + $type: haxework.view.form.ButtonView + geometry.width: 250 + +onPress: ~edit() + - $type: haxework.view.form.ButtonView + style: button.close + +onPress: ~delete() +