[proto] update

This commit is contained in:
2020-05-15 21:16:23 +03:00
parent 75c6e835c2
commit c878bd60d9
10 changed files with 106 additions and 173 deletions

View File

@@ -1,11 +1,14 @@
package ru.m.puzzlez.net;
import haxe.Unserializer;
import com.hurlant.crypto.extra.UUID;
import com.hurlant.crypto.prng.Random;
import hw.connect.ConnectionFactory;
import hw.connect.IConnection;
import hw.signal.Signal;
import hw.storage.SharedObjectStorage;
import ru.m.puzzlez.core.GameEvent;
import ru.m.puzzlez.proto.core.GameProto;
import ru.m.puzzlez.proto.core.UserProto;
import ru.m.puzzlez.proto.pack.LoginRequest;
import ru.m.puzzlez.proto.pack.Request;
@@ -15,12 +18,21 @@ import ru.m.puzzlez.proto.pack.Response;
public var user(default, null):UserProto;
public var userSignal(default, null):Signal<UserProto> = new Signal();
public var gameList(default, null):Array<GameProto>;
public var gameListSignal(default, null):Signal<Array<GameProto>> = new Signal();
public var game(default, null):GameProto;
public var gameSignal(default, null):Signal<GameProto> = new Signal();
public var gameEventSignal(default, null):Signal<GameEvent> = new Signal();
private var connection:IConnection<Request, Response>;
private var storage:SharedObjectStorage;
private static var USER_KEY = "user";
public function new() {
gameList = [];
storage = new SharedObjectStorage("netwok");
if (storage.exists(USER_KEY)) {
user = storage.read(USER_KEY);
@@ -35,7 +47,7 @@ import ru.m.puzzlez.proto.pack.Response;
}
public function login():Void {
connection.send(new Request().setLogin(new LoginRequest().setName(user.name).setUuid(user.uuid)));
connection.send(new Request().setLogin(new LoginRequest().setUser(user)));
}
private function onConnectionChange(event:ConnectionEvent):Void {
@@ -55,6 +67,19 @@ import ru.m.puzzlez.proto.pack.Response;
user = packet.login.user;
storage.write(USER_KEY, user);
userSignal.emit(user);
} else if (packet.hasLogout()) {
user = null;
userSignal.emit(user);
} else if (packet.hasGameList()) {
gameList = packet.gameList.games;
gameListSignal.emit(gameList);
} else if (packet.hasGame()) {
game = packet.game.game;
gameSignal.emit(game);
} else if (packet.hasGameEvent()) {
for (event in packet.gameEvent.events) {
gameEventSignal.emit(Unserializer.run(event.event));
}
}
}
}