From a39b02bfe713314463b775276bb4ad26dd21d54f Mon Sep 17 00:00:00 2001 From: shmyga Date: Mon, 2 Jan 2023 14:36:44 +0300 Subject: [PATCH] refactor(server): use cpp target instead of neko --- ansible/group_vars/all.yml | 4 +-- gulpfile.js | 4 +-- package-lock.json | 8 ++--- package.json | 2 +- src/server/haxe/ru/m/tankz/server/Server.hx | 10 +++--- .../tankz/server/bundle/AssetConfigBundle.hx | 23 +++++++++++++ .../m/tankz/server/bundle/AssetLevelSource.hx | 33 +++++++++++++++++++ 7 files changed, 70 insertions(+), 14 deletions(-) create mode 100644 src/server/haxe/ru/m/tankz/server/bundle/AssetConfigBundle.hx create mode 100644 src/server/haxe/ru/m/tankz/server/bundle/AssetLevelSource.hx diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 14cc1f7..b7328cf 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -9,7 +9,7 @@ deploy_repo_version: develop deploy_npm: yes service_name: "{{ project_name }}" -service_work_dir: "{{ deploy_current_dir }}/target/server/neko" -service_command: "/usr/bin/neko {{ service_work_dir }}/{{ project_name }}.n {{ service_host }}" +service_work_dir: "{{ deploy_current_dir }}/target/server/cpp" +service_command: "{{ service_work_dir }}/{{ project_name }} {{ service_host }}" service_user: www-data service_control_user: "{{ project_user }}" diff --git a/gulpfile.js b/gulpfile.js index df318e0..f184922 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -142,7 +142,7 @@ const editor = new Project( */ const server = new Project( Project.BuildSystem.HAXE, - Project.Platform.NEKO, + Project.Platform.CPP, config.branch({ name: 'server', sources: ['src/server/haxe'], @@ -172,7 +172,7 @@ const defaultSeries = [ module.exports['editor:flash:html'], module.exports['editor:html5:build'], - module.exports['server:neko:build'], + module.exports['server:cpp:build'], ]; if (System.isLinux) { diff --git a/package-lock.json b/package-lock.json index a0ef905..ea1add1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "gulp": "^4.0.0", "gulp-add": "0.0.2", "gulp-clean": "^0.4.0", - "gulp-haxetool": "0.1.3", + "gulp-haxetool": "^0.1.9", "yargs": "^13.2.4" } }, @@ -3296,9 +3296,9 @@ } }, "node_modules/gulp-haxetool": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/gulp-haxetool/-/gulp-haxetool-0.1.3.tgz", - "integrity": "sha512-oaJIOHc1TGBsFEjuVV6ON1050umCZbpy61ph1Qt6/p+f5NO2WWnbVFhoH+0dL2GedCHEiuihbzpVzV1DT9jsXg==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/gulp-haxetool/-/gulp-haxetool-0.1.9.tgz", + "integrity": "sha512-ABS3nWVrGMA0iLnIoOHl06zp6OOB9BCE5Nda0cpuaKVX2LGMPnJMhxPJNDQXvMhYTDnX90z2EpyIFDH6Pyv37A==", "dev": true, "dependencies": { "ansi-colors": "^1.1.0", diff --git a/package.json b/package.json index 4e41d25..9de84c4 100755 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "gulp": "^4.0.0", "gulp-add": "0.0.2", "gulp-clean": "^0.4.0", - "gulp-haxetool": "0.1.3", + "gulp-haxetool": "^0.1.9", "yargs": "^13.2.4" }, "haxeDependencies": { diff --git a/src/server/haxe/ru/m/tankz/server/Server.hx b/src/server/haxe/ru/m/tankz/server/Server.hx index 41542e3..bb67926 100755 --- a/src/server/haxe/ru/m/tankz/server/Server.hx +++ b/src/server/haxe/ru/m/tankz/server/Server.hx @@ -2,12 +2,12 @@ package ru.m.tankz.server; import haxe.io.Bytes; import haxework.log.TraceLogger; -import neko.net.ThreadServer; +import cpp.net.ThreadServer; import ru.m.tankz.bundle.CachedLevelBundle; import ru.m.tankz.bundle.IConfigBundle; import ru.m.tankz.bundle.ILevelBundle; -import ru.m.tankz.server.bundle.ServerConfigBundle; -import ru.m.tankz.server.bundle.ServerLevelSource; +import ru.m.tankz.server.bundle.AssetConfigBundle; +import ru.m.tankz.server.bundle.AssetLevelSource; import ru.m.tankz.server.game.GameManager; import ru.m.tankz.server.game.IGameManager; import ru.m.tankz.server.session.GameSession; @@ -48,8 +48,8 @@ class Server extends ThreadServer { #end L.d(TAG, 'Running'); L.i(TAG, 'Build: ${CompilationOption.get("build")}'); - configBundle = new ServerConfigBundle(); - levelBundle = new CachedLevelBundle(new ServerLevelSource()); + configBundle = new AssetConfigBundle(); + levelBundle = new CachedLevelBundle(new AssetLevelSource()); levelBundle.load(); gameManager = new GameManager(); var host:String = Sys.args().length > 0 ? Sys.args()[0] : "0.0.0.0"; diff --git a/src/server/haxe/ru/m/tankz/server/bundle/AssetConfigBundle.hx b/src/server/haxe/ru/m/tankz/server/bundle/AssetConfigBundle.hx new file mode 100644 index 0000000..1bd6640 --- /dev/null +++ b/src/server/haxe/ru/m/tankz/server/bundle/AssetConfigBundle.hx @@ -0,0 +1,23 @@ +package ru.m.tankz.server.bundle; + +import openfl.Assets; +import ru.m.tankz.bundle.IConfigBundle; +import ru.m.tankz.config.Config; +import ru.m.tankz.Type; +import yaml.Parser; +import yaml.Yaml; + +class AssetConfigBundle implements IConfigBundle { + + private var _cache:Map = new Map(); + + public function new() {} + + public function get(type:GameType):Config { + if (!_cache.exists(type)) { + var source:ConfigSource = Yaml.parse(Assets.getText('config/${type}.yaml'), Parser.options().useObjects()); + _cache.set(type, Config.fromSource(type, source)); + } + return _cache.get(type); + } +} diff --git a/src/server/haxe/ru/m/tankz/server/bundle/AssetLevelSource.hx b/src/server/haxe/ru/m/tankz/server/bundle/AssetLevelSource.hx new file mode 100644 index 0000000..d594e72 --- /dev/null +++ b/src/server/haxe/ru/m/tankz/server/bundle/AssetLevelSource.hx @@ -0,0 +1,33 @@ +package ru.m.tankz.server.bundle; + +import openfl.Assets; +import openfl.utils.AssetType; +import ru.m.tankz.bundle.ILevelBundle; +import ru.m.tankz.config.Config; +import ru.m.tankz.Type; +import ru.m.tankz.util.LevelUtil; + +class AssetLevelSource implements ILevelSource { + + public function new() {} + + public function resolveMeta(id:PackId):LevelPackMeta { + var bytes = Assets.getBytes('level/${id}.zip'); + return LevelUtil.getMeta(bytes); + } + + public function resolve(id:PackId):LevelPack { + var bytes = Assets.getBytes('level/${id}.zip'); + return LevelUtil.unpack(bytes); + } + + public function list():Array { + var result = []; + for (path in Assets.list(AssetType.BINARY)) { + if (StringTools.startsWith(path, "level")) { + result.push(PackId.fromString(path.split("/").pop().split(".").shift())); + } + } + return result; + } +}