[common] add EntityBuilder
This commit is contained in:
@@ -18,6 +18,7 @@ import ru.m.tankz.proto.pack.Response;
|
||||
import ru.m.tankz.sound.SoundManager;
|
||||
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;
|
||||
@@ -33,6 +34,7 @@ class Init {
|
||||
@:provide static var settingsStorage:SettingsStorage;
|
||||
@:provide static var multiplayerStorage:MultiplayerStorage;
|
||||
@:provide static var gameStorage:GameStorage;
|
||||
@:provide static var recordStorage:RecordStorage;
|
||||
@:provide static var soundManager:SoundManager;
|
||||
@:provide static var networkManager:NetworkManager;
|
||||
@:provide static var controlFactory:IControlFactory;
|
||||
@@ -62,10 +64,15 @@ class Init {
|
||||
settingsStorage = new SettingsStorage();
|
||||
multiplayerStorage = new MultiplayerStorage();
|
||||
gameStorage = new GameStorage();
|
||||
recordStorage = new RecordStorage();
|
||||
soundManager = new SoundManager();
|
||||
controlFactory = new ClientControlFactory();
|
||||
popupManager = new PopupManager();
|
||||
|
||||
for (record in recordStorage) {
|
||||
L.w("RECORD", '${record.id}. ${record.date}');
|
||||
}
|
||||
|
||||
popupManager.showAnimateFactory = function(v) return new UnFadeAnimate(v, 100);
|
||||
popupManager.closeAnimateFactory = function(v) return new FadeAnimate(v, 100);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package ru.m.tankz.render;
|
||||
|
||||
import ru.m.tankz.core.EntityType;
|
||||
import flash.display.DisplayObjectContainer;
|
||||
import flash.display.Graphics;
|
||||
import flash.display.Sprite;
|
||||
@@ -15,7 +16,7 @@ import ru.m.tankz.game.GameEvent;
|
||||
import ru.m.tankz.game.IGame;
|
||||
import ru.m.tankz.render.RenderItem;
|
||||
|
||||
class Render extends SpriteView implements GameListener {
|
||||
class Render extends SpriteView implements GameListener implements EngineListener {
|
||||
|
||||
private var backgroundLayer:Sprite;
|
||||
private var groundLayer:Sprite;
|
||||
@@ -97,6 +98,23 @@ class Render extends SpriteView implements GameListener {
|
||||
clearLayer(upperLayer);
|
||||
}
|
||||
|
||||
public function onSpawn(entity:EntityType):Void {
|
||||
switch entity {
|
||||
case EAGLE(eagle):
|
||||
var item = new EagleItem(eagle);
|
||||
items.set(eagle.key, item);
|
||||
entryLayer.addChild(item.view);
|
||||
item.update();
|
||||
case _:
|
||||
}
|
||||
}
|
||||
|
||||
public function onCollision(entity:EntityType, with:EntityType):Void {
|
||||
}
|
||||
|
||||
public function onMove(entity:EntityType):Void {
|
||||
}
|
||||
|
||||
public function onGameEvent(event:GameEvent):Void {
|
||||
switch event {
|
||||
case SPAWN(TANK(tank)):
|
||||
@@ -110,11 +128,11 @@ class Render extends SpriteView implements GameListener {
|
||||
items.set(bullet.key, item);
|
||||
entryLayer.addChild(item.view);
|
||||
item.update();
|
||||
case SPAWN(EAGLE(eagle)):
|
||||
/*case SPAWN(EAGLE(eagle)):
|
||||
var item = new EagleItem(eagle);
|
||||
items.set(eagle.key, item);
|
||||
entryLayer.addChild(item.view);
|
||||
item.update();
|
||||
item.update();*/
|
||||
case SPAWN(BONUS(bonus)):
|
||||
var item = new BonusItem(bonus);
|
||||
items.set(bonus.key, item);
|
||||
|
||||
28
src/client/haxe/ru/m/tankz/storage/RecordStorage.hx
Normal file
28
src/client/haxe/ru/m/tankz/storage/RecordStorage.hx
Normal file
@@ -0,0 +1,28 @@
|
||||
package ru.m.tankz.storage;
|
||||
|
||||
import haxe.DynamicAccess;
|
||||
import haxework.storage.SharedObjectStorage;
|
||||
import ru.m.tankz.game.record.GameRecord;
|
||||
|
||||
@:yield class RecordStorage extends SharedObjectStorage {
|
||||
|
||||
private static inline var VERSION = 1;
|
||||
|
||||
public function new() {
|
||||
super('record_${VERSION}');
|
||||
}
|
||||
|
||||
public function save(record:GameRecord):Void {
|
||||
trace(record.id);
|
||||
trace(record.date);
|
||||
trace(record.events);
|
||||
write(record.id, record);
|
||||
}
|
||||
|
||||
public function iterator():Iterator<GameRecord> {
|
||||
var data:DynamicAccess<String> = so.data;
|
||||
for (id in data.keys()) {
|
||||
@yield return read(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import ru.m.tankz.network.NetworkManager;
|
||||
import ru.m.tankz.render.Render;
|
||||
import ru.m.tankz.sound.SoundManager;
|
||||
import ru.m.tankz.storage.GameStorage;
|
||||
import ru.m.tankz.storage.RecordStorage;
|
||||
import ru.m.tankz.view.common.IGamePanel;
|
||||
|
||||
class GameFrame extends GroupView implements GameListener {
|
||||
@@ -28,7 +29,8 @@ class GameFrame extends GroupView implements GameListener {
|
||||
@:provide var state:GameState;
|
||||
@:provide("result") var result:GameState;
|
||||
@:provide var switcher:FrameSwitcher;
|
||||
@:provide var storage:GameStorage;
|
||||
@:provide var gameStorage:GameStorage;
|
||||
@:provide var recordStorage:RecordStorage;
|
||||
|
||||
private var game:IGame;
|
||||
private var runner:GameRunner;
|
||||
@@ -49,6 +51,7 @@ class GameFrame extends GroupView implements GameListener {
|
||||
private function start(state:GameState):Void {
|
||||
game = new Game(state.type);
|
||||
game.connect(render);
|
||||
game.engine.connect(render);
|
||||
game.connect(soundManager);
|
||||
game.connect(this);
|
||||
if (panel != null) {
|
||||
@@ -79,14 +82,15 @@ class GameFrame extends GroupView implements GameListener {
|
||||
public function onGameEvent(event:GameEvent):Void {
|
||||
switch event {
|
||||
case GameEvent.COMPLETE(state, winner):
|
||||
L.w("RECORD", Std.string(recorder.data));
|
||||
// ToDo:
|
||||
//recordStorage.save(recorder.record);
|
||||
result = state;
|
||||
this.state = switch runner.next() {
|
||||
case Some(s):
|
||||
// ToDo:
|
||||
var progress = storage.get(game.type);
|
||||
var progress = gameStorage.get(game.type);
|
||||
progress.completeLevel(result.levelId, result.presetId);
|
||||
storage.set(progress);
|
||||
gameStorage.set(progress);
|
||||
s;
|
||||
case None: null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user