Exemplo n.º 1
0
    private static void LEAVE_ROOM(byte[] bytes)
    {
        LeaveRoom input = LeaveRoom.Parser.ParseFrom(bytes);

        bool      ret       = false;
        RoomLogic roomLogic = ServerRoomManager.Instance.GetRoomLogic(input.RoomId);

        if (roomLogic != null)
        {
            var pi = ServerRoomManager.Instance.GetPlayer(_args);
            if (pi != null)
            { // 把当前玩家在房间的状态设置为离线
                roomLogic.Offline(pi.Enter.TokenId);

                string account = pi.Enter.Account;
                ServerRoomManager.Instance.Log($"MSG: LEAVE_ROOM OK - Player leaves the battlefield! Account:{account} - Room:{roomLogic.RoomName}"); // 玩家离开战场!
            }

            // 通知大厅
            ServerRoomManager.Instance.UpdateRoomInfoToLobby(roomLogic);
            ret = true;
        }
        else
        {
            ServerRoomManager.Instance.Log($"MSG: LEAVE_ROOM Error - Battlefield is not found! RoomId:{input.RoomId}"); // 战场没有找到
        }

        LeaveRoomReply output = new LeaveRoomReply()
        {
            Ret = ret,
        };

        ServerRoomManager.Instance.SendMsg(_args, ROOM_REPLY.LeaveRoomReply, output.ToByteArray());
    }
Exemplo n.º 2
0
    private static void LEAVE_ROOM_REPLY(byte[] bytes)
    {
        LeaveRoomReply input = LeaveRoomReply.Parser.ParseFrom(bytes);

        if (ClientManager.Instance == null)
        {
            Application.Quit();
        }
        else if (!input.IsKicked)
        {
            GameRoomManager.Instance.Log($"MSG: LEAVE_ROOM_REPLY OK - ");
        }
        else
        {
            GameRoomManager.Instance.Log($"MSG: LEAVE_ROOM_REPLY OK - Kicked out!");
        }
    }
Exemplo n.º 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());
        }
    }