예제 #1
0
    static void Client_Logined(Message m)
    {
        if ((bool)m.parameters[0])
        {
            LoginScreen.ConfirmedLogin((bool)m.parameters[0]);
            List <string> online = m.parameters[1] as List <string>;
            RoomFindingScreen.players.Clear();
            foreach (var v in online)
            {
                RoomFindingScreen.players.Add(v.ToString());
            }

            string[] channels = new string[] { m.parameters[2] as string };
            ChatChannel.Synchronize(channels, RoomFindingScreen.chatChannels);
        }
        else
        {
            LoginScreen.ConfirmedLogin((bool)m.parameters[0]);
        }
    }
예제 #2
0
    static void RecieveCallback(IAsyncResult result)
    {
        Socket s = result.AsyncState as Socket;

        try
        {
            int count = s.EndReceive(result);
            if (count > 0)
            {
                Message m = Message.GetData(buffer);
                switch (m.type)
                {
                case MESSAGE_TYPE.SERVER_ANSWER_LOGIN:
                {
                    Logined(m);
                    break;
                }

                case MESSAGE_TYPE.SERVER_ANSWER_GET_ONLINE_LIST:
                {
                    RoomFindingScreen.players.Clear();
                    foreach (var v in m.parameters)
                    {
                        RoomFindingScreen.players.Add(v.ToString());
                    }
                    break;
                }

                case MESSAGE_TYPE.SERVER_ANSWER_GET_CHAT_CHANNELS:
                {
                    ChatChannel.Synchronize(m.parameters, RoomFindingScreen.chatChannels);
                    break;
                }

                case MESSAGE_TYPE.SERVER_ANSWER_MESSAGE:
                {
                    int index = ChatChannel.GetIndex(m.parameters[0], RoomFindingScreen.chatChannels);
                    RoomFindingScreen.chatChannels[index].AddMessage(m.parameters[1], m.parameters[2]);
                    break;
                }

                case MESSAGE_TYPE.SERVER_ANSWER_CREATE_CHAT_CHANNEL:
                {
                    if ((bool)m.parameters[0])
                    {
                        ChannelMenu.confirmedCreation = true;
                    }
                    else
                    {
                        ChannelMenu.answer         = "\n(try another channel name)";
                        ChannelMenu.failedCreation = true;
                    }
                    break;
                }

                case MESSAGE_TYPE.SERVER_ANSWER_JOIN_CHAT_CHANNEL:
                {
                    if ((bool)m.parameters[0])
                    {
                        ChannelMenu.confirmedJoin = true;
                    }
                    else
                    {
                        ChannelMenu.answer        = "\n(try another channel name)";
                        ChannelMenu.confirmedJoin = true;
                    }
                    break;
                }

                case MESSAGE_TYPE.SERVER_ANSWER_LEAVE_CHAT_CHANNEL:
                {
                    if ((bool)m.parameters[0])
                    {
                        ChannelMenu.confirmedLeave = true;
                    }
                    else
                    {
                        ChannelMenu.answer         = "\n(try another channel name)";
                        ChannelMenu.confirmedLeave = true;
                    }
                    break;
                }

                case MESSAGE_TYPE.SERVER_ANSWER_START_GAME:
                {
                    if ((bool)m.parameters[0] == true)
                    {
                        GameStarted(m);
                    }
                    break;
                }

                case MESSAGE_TYPE.SERVER_ANSWER_MOVE:
                {
                    Moved(m);
                    break;
                }
                }
                s.BeginReceive(buffer, 0, 1024, SocketFlags.None, RecieveCallback, s);
            }
        }
        catch (Exception exception)
        {
            //Output.Write(exception);
        }
    }