diff --git a/gulpfile.js b/gulpfile.js index e89975b..19532aa 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -87,7 +87,7 @@ const client = new Project( config.branch({ name: 'client', sources: [ - 'src/fixes/haxe', + //'src/fixes/haxe', 'src/client/haxe', ], main: 'ru.m.tankz.Client', @@ -124,7 +124,7 @@ const editor = new Project( config.branch({ name: 'editor', sources: [ - 'src/fixes/haxe', + //'src/fixes/haxe', 'src/client/haxe', 'src/editor/haxe', ], diff --git a/package.json b/package.json index 4a7e31c..b8cea06 100755 --- a/package.json +++ b/package.json @@ -14,14 +14,13 @@ }, "haxeDependencies": { "haxework": "git@bitbucket.org:shmyga/haxework.git", - "lime": "7.6.1", - "openfl": "8.9.3", + "lime": "7.5.0", + "openfl": "8.9.1", "hxcpp": "4.0.52", "promhx": "1.1.0", "protohx": "0.4.6", "yaml": "1.3.0", "orm": "2.1.0", - "yield": "2.0.0", "haxe-crypto": "0.0.7", "svg": "1.1.2" } diff --git a/src/client/haxe/ru/m/tankz/storage/RecordStorage.hx b/src/client/haxe/ru/m/tankz/storage/RecordStorage.hx index 0f5f149..287d3e6 100644 --- a/src/client/haxe/ru/m/tankz/storage/RecordStorage.hx +++ b/src/client/haxe/ru/m/tankz/storage/RecordStorage.hx @@ -4,7 +4,7 @@ import haxe.DynamicAccess; import haxework.storage.SharedObjectStorage; import ru.m.tankz.game.record.GameRecord; -@:yield class RecordStorage extends SharedObjectStorage { +class RecordStorage extends SharedObjectStorage { private static inline var VERSION = 1; @@ -23,17 +23,19 @@ import ru.m.tankz.game.record.GameRecord; super.delete('${id}.info'); } - public function iterator():Iterator { + public function list():Array { + var result = []; var data:DynamicAccess = so.data; for (id in data.keys()) { try { if (StringTools.endsWith(id, '.info')) { - @yield return read(id); + result.push(read(id)); } } catch (error:Dynamic) { L.w("RecordStorage", 'read ', error); delete(id); } } + return result; } } diff --git a/src/client/haxe/ru/m/tankz/view/RecordFrame.hx b/src/client/haxe/ru/m/tankz/view/RecordFrame.hx index 146ad84..7b0d132 100644 --- a/src/client/haxe/ru/m/tankz/view/RecordFrame.hx +++ b/src/client/haxe/ru/m/tankz/view/RecordFrame.hx @@ -20,7 +20,7 @@ import ru.m.tankz.storage.RecordStorage; } override public function onShow(_:Dynamic):Void { - var data = Lambda.array(recordStorage); + var data = recordStorage.list(); data.sort(function(a:GameRecordInfo, b:GameRecordInfo) return Std.int(b.date.getTime() - a.date.getTime())); this.data.data = data; } diff --git a/src/common/haxe/ru/m/tankz/bonus/DestroyTeamBonus.hx b/src/common/haxe/ru/m/tankz/bonus/DestroyTeamBonus.hx index 4854479..215bbdd 100644 --- a/src/common/haxe/ru/m/tankz/bonus/DestroyTeamBonus.hx +++ b/src/common/haxe/ru/m/tankz/bonus/DestroyTeamBonus.hx @@ -15,7 +15,7 @@ class DestroyTeamBonus extends BaseBonus { override public function apply(playerId:PlayerId, game:IGame, engine:IEngine):Void { var tank:Tank = engine.getEntity(game.getPlayer(playerId).tankId); if (tank != null) { - for (t in engine.iterTanks(tank.playerId.team.alienTank())) { + for (t in engine.getTanks(tank.playerId.team.alienTank())) { game.gameEventSignal.emit(DESTROY(TANK(t.id, {tankId: tank.id}))); } } diff --git a/src/common/haxe/ru/m/tankz/engine/Engine.hx b/src/common/haxe/ru/m/tankz/engine/Engine.hx index d2b1269..ede8b59 100755 --- a/src/common/haxe/ru/m/tankz/engine/Engine.hx +++ b/src/common/haxe/ru/m/tankz/engine/Engine.hx @@ -12,7 +12,7 @@ import ru.m.tankz.engine.IEngine; import ru.m.tankz.map.Grid; import ru.m.tankz.map.LevelMap; -@:yield @:dispatcher(EngineListener) class Engine implements IEngine { +@:dispatcher(EngineListener) class Engine implements IEngine { public var config(default, default):Config; public var map(default, null):LevelMap; @@ -157,12 +157,14 @@ import ru.m.tankz.map.LevelMap; moveSignal.dispose(); } - public function iterTanks(filter:Tank->Bool):Iterator { + public function getTanks(filter:Tank->Bool):Array { + var result = []; for (entity in entities) { var tank:Tank = EntityTypeResolver.as(entity, Tank); if (tank != null && filter(tank)) { - @yield return tank; + result.push(tank); } } + return result; } } diff --git a/src/common/haxe/ru/m/tankz/engine/IEngine.hx b/src/common/haxe/ru/m/tankz/engine/IEngine.hx index a4e7a92..b5ef596 100644 --- a/src/common/haxe/ru/m/tankz/engine/IEngine.hx +++ b/src/common/haxe/ru/m/tankz/engine/IEngine.hx @@ -33,7 +33,7 @@ interface IEngine { public function update():Void; - public function iterTanks(filter:Tank->Bool):Iterator; + public function getTanks(filter:Tank->Bool):Array; public function connect(listener:EngineListener):Void; diff --git a/src/common/haxe/ru/m/tankz/game/GameUtil.hx b/src/common/haxe/ru/m/tankz/game/GameUtil.hx index 50e7435..ed0fdea 100644 --- a/src/common/haxe/ru/m/tankz/game/GameUtil.hx +++ b/src/common/haxe/ru/m/tankz/game/GameUtil.hx @@ -61,7 +61,7 @@ class GameUtil { public static function freezeTeam(game:IGame, engine:IEngine, teamId:TeamId, duration:Float):Void { game.getTeam(teamId).freezing = true; - for (tank in engine.iterTanks(teamId.teamTank())) { + for (tank in engine.getTanks(teamId.teamTank())) { tank.freezing = true; tank.stop(); game.gameEventSignal.emit(STOP(TANK(tank.id))); @@ -69,7 +69,7 @@ class GameUtil { } game.ticker.emit(function() { game.getTeam(teamId).freezing = false; - for (tank in engine.iterTanks(teamId.teamTank())) { + for (tank in engine.getTanks(teamId.teamTank())) { tank.freezing = false; game.gameEventSignal.emit(CHANGE(TANK_FREEZE(tank.id, tank.freezing))); }