Exemple #1
0
        private void SendReconnect()
        {
            CBReconnectRequest msg = new CBReconnectRequest();

            msg.SessionID = "";//TODO:LAST SESSION ID
            msg.Token     = serverInfo.Token;
            SendMessage <CBReconnectRequest, CBReconnectReply>(msg, (rep) =>
            {
                if (rep.RoomState == (int)RoomData.State.Dismiss)
                {
                    room.SetState(0, rep.RoomState, 0);
                    MessageBox.Show("房间已解散", "点击确认,退出房间!", MessageBoxStyle.OK, (res) =>
                    {
                        GF.GetProxy <HallProxy>().CancelReconnect(1, 1);
                        GF.ChangeState <HallState>();
                    });
                    return;
                }

                Reset();
                isLogin = true;

                room.SetData(rep.RoomInfo);
                room.SetCards(rep.Cards);
                room.SetPlayers(rep.PlayerInfos);
                room.SetState(rep.WhoseTurn, rep.RoomState, rep.LeftCardCount);

                SendEvent(EventDef.SOS.Reconnected);
            });
        }
Exemple #2
0
        void OnReconnect(string sessionID, CBReconnectRequest msg)
        {
            Logger.Log($"{sessionID} Reconnect with token: {msg.Token} ");

            UserData user = null;

            if (!m_users.TryGetValue(msg.Token, out user))
            {
                Logger.LogError($"RECONNECT => {sessionID}'s token {msg.Token} is wrong, refuse reconnect.");
                return;
            }

            if (GetProxy <RoomProxy>().GetRoom(user.roomID) == null)
            {
                Logger.LogError($"RECONNECT => {sessionID}'s token {msg.Token} is wrong, refuse reconnect.");
                CBReconnectReply rep = new CBReconnectReply();
                rep.RoomState = (int)SOS.SOS_Logic.State.Dismiss;
                SendMessage(sessionID, rep);
                return;
            }

            SOS.SOS_Logic sosLogic = GetProxy <BattleServerProxy>().GetSosLogic(user.roomID);

            user.SetSessionID(sessionID);
            if (sosLogic.state == SOS.SOS_Logic.State.Started)
            {
                user.SetState(UserState.Battle);
            }
            else
            {
                user.SetState(UserState.Login);
            }

            CBReconnectReply reply = sosLogic.GetReconnectData(user.uid);

            SendMessage(sessionID, reply);
        }