Пример #1
0
        public void CreateJoinRoom(Socket CreateJoinSocket,JSONObjects HandShake)
        {
            bool isNewRoom = true;
            int RoomID = 0;
            foreach (var room in ChowkaRoom)
            {
                if (room.Value < MaxPlayer)
                {
                    if (ChowkaRoomState[room.Key] == eChowkaRoomState.CREATED)
                    {
                        isNewRoom = false;
                        RoomID = room.Key;
                        ChowkaRoom[room.Key]++;
                        HandShake.WhoIAm = ChowkaRoom[room.Key];
                        if (ChowkaRoom[room.Key] == MaxPlayer)
                            ChowkaRoomState[room.Key] = eChowkaRoomState.STARTING;
                        foreach (var roomindex in RoomKey)
                        {
                            if (roomindex.Value == RoomID)
                            {
                                SocketKey.Add(CreateJoinSocket, roomindex.Key);
                                break;
                            }
                        }
                        break;
                    }
                }
            }
            if (isNewRoom)
            {
                RoomID = GenerateRoomNo();
                RoomKey.Add(RoomIndex, RoomID);
                SocketKey.Add(CreateJoinSocket, RoomIndex);
                ChowkaRoom.Add(RoomID, 1);
                ChowkaRoomState.Add(RoomID,eChowkaRoomState.CREATED);
                
                RoomIndex++;
                HandShake.WhoIAm = 1;
            }
            HandShake.RoomID = RoomID;

                        
        }
Пример #2
0
        /// <summary>
        /// Broadcasts a given message to every one except the one who created it & removes the socket.
        /// </summary>
        public void SendToAllExceptOne(string MessageData, Socket ExceptSocket, int SendRoom, bool remove)
        {
            if (remove)
            {
                foreach (var pair in SocketKey)
                {
                    if (pair.Value == SendRoom)
                    {
                        if (null != pair.Key)
                        {
                            if (pair.Key != ExceptSocket)
                            {
                                if (!ChowkaWebSocket[ExceptSocket])
                                    pair.Key.Send(Send(MessageData));
                                else
                                {
                                    JSONObjects SendMessage = new JSONObjects() { ServerMessage = MessageData };
                                    try
                                    {
                                        pair.Key.Send(Send(SendMessage.ToJsonString()));
                                    }
                                    catch (Exception ex)
                                    {
                                    }
                                }

                            }
                        }

                    }
                }
                SocketKey.Remove(ExceptSocket);
                PingKey.Remove(ExceptSocket);
                Console.WriteLine("connection close with:" + ExceptSocket.RemoteEndPoint);
                ExceptSocket.Close();
                
            }
        }