[server] join game after relogin

This commit is contained in:
2019-06-10 16:12:08 +03:00
parent caab6ba3a3
commit 94b3a94cbb
10 changed files with 71 additions and 31 deletions

View File

@@ -0,0 +1,14 @@
package ru.m.display;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
class DisplayObjectContainerExtender {
public static function removeChildSafety(self:DisplayObjectContainer, child:DisplayObject):DisplayObject {
if (self.contains(child)) {
return self.removeChild(child);
}
return null;
}
}

View File

@@ -22,8 +22,8 @@ class NetworkGame extends Game {
}
private function onGameEventProto(game:GameEventResponse):Void {
var time = game.time;
var eventStr = game.event;
var time = game.event.time;
var eventStr = game.event.event;
var event:GameEvent = Unserializer.run(eventStr);
gameEventSignal.emit(event);
}

View File

@@ -1,5 +1,6 @@
package ru.m.tankz.network;
import ru.m.tankz.proto.game.GameEventProto;
import ru.m.tankz.proto.room.SlotProto;
import ru.m.tankz.proto.room.SlotRequest;
import haxe.Serializer;
@@ -106,9 +107,11 @@ class NetworkManager {
}
public function action(tankId:Int, action:TankAction):Void {
connection.send(new Request().setGameEvent(new GameEventRequest().setTime(0).setEvent(
Serializer.run(GameEvent.ACTION(tankId, action))
)));
connection.send(new Request().setGameEvent(new GameEventRequest().setEvent(
new GameEventProto().setTime(0).setEvent(
Serializer.run(GameEvent.ACTION(tankId, action))
)))
);
}
private function connect():Void {

View File

@@ -21,6 +21,7 @@ import ru.m.tankz.render.item.EagleRenderItem;
import ru.m.tankz.render.item.IRenderItem;
import ru.m.tankz.render.item.TankRenderItem;
import ru.m.tankz.Type;
using ru.m.display.DisplayObjectContainerExtender;
class Render extends SpriteView implements IRender {
@@ -237,7 +238,7 @@ class Render extends SpriteView implements IRender {
return animate.play().then(function(animate:Animate):Void {
// ToDo: clean animates on reset
if (upperLayer.contains(animate)) {
upperLayer.removeChild(animate);
upperLayer.removeChildSafety(animate);
}
animate.dispose();
});
@@ -252,6 +253,6 @@ class Render extends SpriteView implements IRender {
view.x = point.x - view.width / 2;
view.y = point.y - view.height / 2;
upperLayer.addChild(view.content);
Timer.delay(function() upperLayer.removeChild(view.content), 1000);
Timer.delay(function() upperLayer.removeChildSafety(view.content), 1000);
}
}