Esempio n. 1
0
        private void OnJoinRoomRequest(ProtobufPacket <JoinRoomRequestPacket> packet)
        {
            JoinRoomRequestPacket request = packet.ProtobufMessage;
            JoinRoomAnswerPacket  send    = new JoinRoomAnswerPacket();

            bool result = NetworkLobby.JoinRoom(request.RoomName, request.UserName, out MNetworkRoom room);

            // Packet Data Set
            send.Success  = result;
            send.RoomName = request.RoomName;

            Debug.Log($"S:[{packet.Serial}] Request to join the room. Name: [{request.UserName}] Room: [{request.RoomName}] Result: [{send.Success}]");

            if (result == true)
            {
                ChattingAnswerPacket joinMessage = new ChattingAnswerPacket();

                joinMessage.Text = $"{request.UserName} 님이 방에 참가했습니다.";

                SendPacket(new ProtobufPacket <ChattingAnswerPacket>(packet.Serial, PacketEnum.ProcessType.Data,
                                                                     (int)MessageType.ChattingAnswer, joinMessage), room.SerialList);
            }

            SendPacket(new ProtobufPacket <JoinRoomAnswerPacket>(packet.Serial, PacketEnum.ProcessType.Data,
                                                                 (int)MessageType.JoinRoomAnswer, send));
        }
Esempio n. 2
0
        private void OnCreateAndJoinRoomRequest(ProtobufPacket <CreateAndJoinRoomRequestPacket> packet)
        {
            CreateAndJoinRoomRequestPacket request = packet.ProtobufMessage;
            CreateAndJoinRoomAnswerPacket  send    = new CreateAndJoinRoomAnswerPacket();

            // Packet Data Set

            bool success1 = NetworkLobby.AddRoom(request.RoomName, new MNetworkRoom(request.RoomName));
            bool success2 = NetworkLobby.JoinRoom(request.RoomName, request.UserName, out MNetworkRoom room);

            Debug.Log($"S:[{packet.Serial}] Room creation request. Room: [{request.RoomName}] Result: [{send.Success}]");
            Debug.Log($"S:[{packet.Serial}] Request to join the room. Name: [{request.UserName}] Room: [{request.RoomName}] Result: [{send.Success}]");

            if (success1 && success2 == true)
            {
                ChattingAnswerPacket joinMessage = new ChattingAnswerPacket();

                joinMessage.Text = $"{request.UserName} 님이 방에 참가했습니다.";

                SendPacket(new ProtobufPacket <ChattingAnswerPacket>(packet.Serial, PacketEnum.ProcessType.Data,
                                                                     (int)MessageType.ChattingAnswer, joinMessage), room.SerialList);
            }

            send.Success  = success1 && success2;
            send.RoomName = request.RoomName;

            SendPacket(new ProtobufPacket <CreateAndJoinRoomAnswerPacket>(packet.Serial, PacketEnum.ProcessType.Data,
                                                                          (int)MessageType.CreateAndJoinRoomAnswer, send));
        }
Esempio n. 3
0
        private void OnChattingRequest(ProtobufPacket <ChattingRequestPacket> packet)
        {
            ChattingRequestPacket request = packet.ProtobufMessage;
            ChattingAnswerPacket  send    = new ChattingAnswerPacket();

            // Packet Data Set

            MNetworkPlayer sender = NetworkLobby.FindPlayer(request.Sender);

            if (sender == null)
            {
                return;
            }

            MNetworkRoom room = NetworkLobby.FindRoom(sender.RoomKey);

            if (room == null)
            {
                return;
            }

            send.Text = $"[{Time.TimeLogHMS}] [{request.Sender}] : {request.Text}";

            Debug.Log($"S:[{packet.Serial}] Chat: <[{sender.RoomKey}]{send.Text}>");

            SendPacket(new ProtobufPacket <ChattingAnswerPacket>(packet.Serial, PacketEnum.ProcessType.Data,
                                                                 (int)MessageType.ChattingAnswer, send), room.SerialList);
        }
        public void OnChattingAnswer(ProtobufPacket <ChattingAnswerPacket> packet)
        {
            ChattingAnswerPacket answer = packet.ProtobufMessage;

            Debug.Log(answer.Text);

            OnChatting?.Invoke(this, answer.Text);
        }
Esempio n. 5
0
        private void OnExitRoomRequest(ProtobufPacket <ExitRoomRequestPacket> packet)
        {
            ExitRoomRequestPacket request = packet.ProtobufMessage;
            ExitRoomAnswerPacket  send    = new ExitRoomAnswerPacket();

            // Packet Data Set

            MNetworkRoom   targetRoom   = NetworkLobby.FindRoom(request.RoomName);
            MNetworkPlayer targetPlayer = NetworkLobby.FindPlayer(request.UserName);

            bool result = NetworkLobby.ExitFromRoom(targetRoom, targetPlayer);

            send.Success = result;

            Debug.Log($"S:[{packet.Serial}] Room exit request. Name: [{request.UserName}] Room: [{request.RoomName}] Result: [{send.Success}]");

            if (targetRoom.PlayerCount == 0)
            {
                if (NetworkLobby.DeleteRoom(request.RoomName) == true)
                {
                    Debug.Log($"Room deleted. Room: [{request.RoomName}]");
                }
            }
            else
            {
                ChattingAnswerPacket exitMessage = new ChattingAnswerPacket();

                exitMessage.Text = $"{targetPlayer.UserName} 님이 방에서 나갔습니다.";

                SendPacket(new ProtobufPacket <ChattingAnswerPacket>(packet.Serial, PacketEnum.ProcessType.Data,
                                                                     (int)MessageType.ChattingAnswer, exitMessage), targetRoom.SerialList);
            }

            SendPacket(new ProtobufPacket <ExitRoomAnswerPacket>(packet.Serial, PacketEnum.ProcessType.Data,
                                                                 (int)MessageType.ExitRoomAnswer, send));
        }