public void TestSerde() { var a = new WorldJoinPacket("foo", "test", PlayerMode.Observer); var b = SerializeAndDeserialize(a); Assert.Equal(a, b); }
void HandleJoinReq(Session session, WorldJoinPacket p) { var ok = Join(session, p.Nickname, p.Mode); log.Info($"world join: id={session.ID} world={ID} ok={ok} size={sessions.Count}"); var holder = GetPlayerHolder(session); if (holder.Mode == PlayerMode.Player) { room.Join(holder.Player); } else if (holder.Mode == PlayerMode.Observer) { room.Join(holder.Observer); } else { return; } var resp = new WorldJoinResultPacket(0, session.ID); session.SendLazy(resp); }
public async Task <bool> WorldJoin(string worldID, string nickname) { var send = new WorldJoinPacket(worldID, nickname, PlayerMode.Player); var recv = await conn.SendRecv <WorldJoinPacket, WorldJoinResultPacket>(send); return(true); }
private void Start() { var conn = ConnectionManager.Instance; genUUIDButton.OnClickAsObservable().Subscribe(_ => { // 같은 클라에서 같은 uuid 생성되는게 싫을떄 // 같은 컴퓨터에서 실행할 경우 var uuid = Guid.NewGuid(); uuidField.text = uuid.ToString(); }).AddTo(this); ConnectionManager.Instance.ReadyObservable.ObserveOnMainThread().Subscribe(_ => { joinPlayerButton.interactable = true; joinObserverButton.interactable = true; }).AddTo(this); joinPlayerButton.OnClickAsObservable().Subscribe(_ => { OnJoinButtonClicked(PlayerMode.Player); }).AddTo(this); joinObserverButton.OnClickAsObservable().Subscribe(_ => { OnJoinButtonClicked(PlayerMode.Observer); }).AddTo(this); conn.Welcome.Received.ObserveOnMainThread().Subscribe(p => { var info = ConnectionInfo.Info; info.PlayerID = p.UserID; }); conn.SignUp.Received.ObserveOnMainThread().Subscribe(p => { Debug.Log($"sign up result: {p.ResultCode}"); var auth = new AuthenticationPacket(UUID); conn.SendImmediate(auth); }).AddTo(this); conn.Authentication.Received.ObserveOnMainThread().Subscribe(p => { Debug.Log($"authentication result: {p.ResultCode}"); if (p.ResultCode == 0) { Debug.Assert(mode != PlayerMode.None); var info = ConnectionInfo.Info; info.WorldID = WorldID; info.Nickname = Nickname; info.PlayerMode = mode; var join = new WorldJoinPacket(WorldID, Nickname, mode); conn.SendImmediate(join); } }).AddTo(this); conn.WorldJoin.Received.ObserveOnMainThread().Subscribe(p => { Debug.Log($"player id={p.PlayerID}"); if (p.ResultCode != 0) { var info = ConnectionInfo.Info; info.WorldID = ""; info.Nickname = ""; } // TOOD async scene loading SceneManager.LoadScene("Game", LoadSceneMode.Single); }).AddTo(this); }