[proto] add game and event proto
This commit is contained in:
@@ -10,7 +10,7 @@ import ru.m.data.IDataSource;
|
||||
import ru.m.puzzlez.core.GameEvent;
|
||||
import ru.m.puzzlez.core.GameState;
|
||||
import ru.m.puzzlez.core.Id;
|
||||
import ru.m.puzzlez.proto.core.GameProto;
|
||||
import ru.m.puzzlez.proto.game.GameProto;
|
||||
import ru.m.puzzlez.proto.core.UserProto;
|
||||
import ru.m.puzzlez.proto.pack.GameCreateRequest;
|
||||
import ru.m.puzzlez.proto.pack.GameJoinRequest;
|
||||
@@ -62,6 +62,11 @@ import ru.m.puzzlez.proto.pack.Response;
|
||||
connection.send(new Request().setGameJoin(new GameJoinRequest().setGameId(state.id)));
|
||||
}
|
||||
|
||||
public function sendGameAction(action:GameAction):Void {
|
||||
// ToDo: send action
|
||||
//connection.send(new Request().setGameEvent());
|
||||
}
|
||||
|
||||
private function onConnectionChange(event:ConnectionEvent):Void {
|
||||
L.i("network", '${event}');
|
||||
switch event {
|
||||
@@ -90,7 +95,8 @@ import ru.m.puzzlez.proto.pack.Response;
|
||||
gameSignal.emit(game);
|
||||
} else if (packet.hasGameEvent()) {
|
||||
for (event in packet.gameEvent.events) {
|
||||
gameEventSignal.emit(Unserializer.run(event.event));
|
||||
// ToDo: convert event?
|
||||
//gameEventSignal.emit(Unserializer.run(event.event));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,17 +7,17 @@ import ru.m.puzzlez.core.IGame;
|
||||
|
||||
class NetworkGame implements IGame {
|
||||
public var state(default, null):GameState;
|
||||
public var signal(default, null):Signal<GameEvent>;
|
||||
public var events(default, null):Signal<GameEvent>;
|
||||
|
||||
@:provide private var network:Network;
|
||||
|
||||
public function new(state:GameState) {
|
||||
this.state = state;
|
||||
signal = new Signal();
|
||||
events = new Signal();
|
||||
}
|
||||
|
||||
private function onEvent(event:GameEvent):Void {
|
||||
signal.emit(event);
|
||||
public function action(action:GameAction):Void {
|
||||
network.sendGameAction(action);
|
||||
}
|
||||
|
||||
public function start():Void {
|
||||
@@ -36,6 +36,10 @@ class NetworkGame implements IGame {
|
||||
|
||||
public function dispose():Void {
|
||||
stop();
|
||||
signal.dispose();
|
||||
events.dispose();
|
||||
}
|
||||
|
||||
private function onEvent(event:GameEvent):Void {
|
||||
events.emit(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import hw.view.IView;
|
||||
import ru.m.puzzlez.core.GameEvent;
|
||||
|
||||
interface IRender extends IView<Dynamic> {
|
||||
public var signal(default, null):Signal<GameEvent>;
|
||||
public var actions(default, null):Signal<GameAction>;
|
||||
public var scale(get, set):Float;
|
||||
public var manager(default, null):RenderManager;
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import ru.m.puzzlez.storage.SettingsStorage;
|
||||
|
||||
class Render extends SpriteView implements IRender {
|
||||
|
||||
public var signal(default, null):Signal<GameEvent>;
|
||||
public var actions(default, null):Signal<GameAction>;
|
||||
public var scale(get, set):Float;
|
||||
public var manager(default, null):RenderManager;
|
||||
|
||||
@@ -69,7 +69,7 @@ class Render extends SpriteView implements IRender {
|
||||
content.addChild(container);
|
||||
manager = new RenderManager(content, container);
|
||||
progress = new ProgressView();
|
||||
signal = new Signal();
|
||||
actions = new Signal();
|
||||
tableView = new Sprite();
|
||||
tableView.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
|
||||
imageView = new CompleteView();
|
||||
@@ -80,7 +80,7 @@ class Render extends SpriteView implements IRender {
|
||||
|
||||
public function onGameEvent(event:GameEvent):Void {
|
||||
switch event {
|
||||
case START(state) | RESUME(state):
|
||||
case START(state, resume):
|
||||
onStart(state);
|
||||
case CHANGE(PART_UPDATE(id, TABLE(point))):
|
||||
var part:PartView = parts[id];
|
||||
@@ -203,21 +203,21 @@ class Render extends SpriteView implements IRender {
|
||||
activePoint = RenderUtil.convertPoint(tableView.globalToLocal(point));
|
||||
tableView.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
|
||||
tableView.stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
|
||||
signal.emit(ACTION(PART_TAKE(playerId, activePart.id)));
|
||||
actions.emit(PART_TAKE(playerId, activePart.id));
|
||||
}
|
||||
}
|
||||
|
||||
private function onMouseMove(event:MouseEvent):Void {
|
||||
var newPoint:Point = RenderUtil.convertPoint(tableView.globalToLocal(new FlashPoint(event.stageX, event.stageY)));
|
||||
var partPosition = activePart.position.add(newPoint).subtract(activePoint);
|
||||
signal.emit(ACTION(PART_MOVE(playerId, activePart.id, partPosition.clone())));
|
||||
actions.emit(PART_MOVE(playerId, activePart.id, partPosition.clone()));
|
||||
activePoint = newPoint;
|
||||
}
|
||||
|
||||
private function onMouseUp(event:MouseEvent):Void {
|
||||
var newPoint:Point = RenderUtil.convertPoint(tableView.globalToLocal(new FlashPoint(event.stageX, event.stageY)));
|
||||
var partPosition = activePart.position.add(newPoint).subtract(activePoint);
|
||||
signal.emit(ACTION(PART_PUT(playerId, activePart.id, partPosition.clone())));
|
||||
actions.emit(PART_PUT(playerId, activePart.id, partPosition.clone()));
|
||||
tableView.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
|
||||
tableView.stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
|
||||
activePart = null;
|
||||
|
||||
@@ -38,9 +38,9 @@ import ru.m.puzzlez.view.popup.PreviewPopup;
|
||||
} else {
|
||||
game = new Game(state);
|
||||
}
|
||||
game.signal.connect(render.onGameEvent);
|
||||
game.signal.connect(onGameEvent);
|
||||
render.signal.connect(game.signal.emit);
|
||||
game.events.connect(render.onGameEvent);
|
||||
game.events.connect(onGameEvent);
|
||||
render.actions.connect(game.action);
|
||||
game.start();
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ import ru.m.puzzlez.view.popup.PreviewPopup;
|
||||
save();
|
||||
}
|
||||
if (game != null) {
|
||||
render.signal.disconnect(game.signal.emit);
|
||||
render.actions.disconnect(game.action);
|
||||
game.stop();
|
||||
game.dispose();
|
||||
game = null;
|
||||
|
||||
Reference in New Issue
Block a user