Пример #1
0
    private static void PLAYER_ENTER_REPLY(byte[] bytes)
    {
        PlayerEnterReply input = PlayerEnterReply.Parser.ParseFrom(bytes);

        if (input.Ret)
        {
            if (ClientManager.Instance != null)
            {
                ClientManager.Instance.StateMachine.TriggerTransition(ConnectionFSMStateEnum.StateEnum.CONNECTED_ROOM);
            }

            string msg = "玩家成功加入战场服务器!";
            UIManager.Instance.SystemTips(msg, PanelSystemTips.MessageType.Success);
            GameRoomManager.Instance.Log($"MSG: ROOM PLAYER_ENTER_REPLY OK - " + msg);

            //载入地图(调试Only)
            if (ClientManager.Instance == null)
            {
                GameRoomManager.Instance.LoadMap();
            }
        }
        else
        {
            string msg = "玩家加入战场服务器失败!";
            // 不能使用SystemTips,因为会切换场景(scene),切换场景的时候,SystemTips无法显示
            //UIManager.Instance.SystemTips(msg, PanelSystemTips.MessageType.Error);
            UIManager.Instance.MessageBox("错误", msg, (int)PanelMessageBox.BUTTON.OK, OnClickPlayerEnterFailed);
            GameRoomManager.Instance.Log($"MSG: ROOM PLAYER_ENTER_REPLY Error - " + msg);
        }
    }
Пример #2
0
    static void PLAYER_ENTER_REPLY(byte[] bytes)
    {
        PlayerEnterReply input = PlayerEnterReply.Parser.ParseFrom(bytes);

        if (input.Ret)
        {
            string msg = "玩家成功加入大厅服务器!";
            ClientManager.Instance.LobbyManager.Log($"MSG: LOBBY PLAYER_ENTER_REPLY OK - " + msg);
            ClientManager.Instance.StateMachine.TriggerTransition(ConnectionFSMStateEnum.StateEnum.CONNECTED);
        }
        else
        {
            string msg = "玩家进入大厅失败!!!";
            // 不能使用SystemTips,因为会切换场景(scene),切换场景的时候,SystemTips无法显示
            //UIManager.Instance.SystemTips(msg, PanelSystemTips.MessageType.Error);
            UIManager.Instance.MessageBox("错误", msg, (int)PanelMessageBox.BUTTON.OK, OnClickPlayerEnterFailed);
            ClientManager.Instance.LobbyManager.Log("MSG: LOBBY PLAYER_ENTER_REPLY Error - " + msg);
        }
    }
Пример #3
0
    private static void PLAYER_ENTER(byte[] bytes)
    {
        PlayerEnter input = PlayerEnter.Parser.ParseFrom(bytes);
        PlayerInfo  pi    = new PlayerInfo(_args, input);

        //检测是否重复登录,如果发现曾经有人登录,则将前面的人踢掉
        var alreadyLoggedIn = ServerRoomManager.Instance.FindPlayerArgs(input.TokenId);

        if (alreadyLoggedIn != null)
        {
            var oldPlayer = ServerRoomManager.Instance.GetPlayer(alreadyLoggedIn);
            if (oldPlayer != null)
            {
                string    roomName  = "";
                RoomLogic roomLogic = ServerRoomManager.Instance.GetRoomLogic(oldPlayer.RoomId);
                if (roomLogic != null)
                {
                    roomName = roomLogic.RoomName;
                }
                LeaveRoomReply output = new LeaveRoomReply()
                {
                    RoomName = roomName,
                    Ret      = true,
                };
                ServerRoomManager.Instance.SendMsg(alreadyLoggedIn, ROOM_REPLY.LeaveRoomReply, output.ToByteArray());
                ServerRoomManager.Instance.RemovePlayer(alreadyLoggedIn, true);
                string msg = "Kick myself that priviously logged in."; // "踢掉之前登录的本用户.";
                ServerRoomManager.Instance.Log($"MSG: PLAYER_ENTER WARNING - " + msg + $" - {oldPlayer.Enter.Account}");
            }
        }

        ServerRoomManager.Instance.AddPlayer(_args, pi);

        {
            PlayerEnterReply output = new PlayerEnterReply()
            {
                Ret = true,
            };
            ServerRoomManager.Instance.SendMsg(_args, ROOM_REPLY.PlayerEnterReply, output.ToByteArray());
        }
    }