Exemple #1
0
        protected override void OnMessage(MessageEventArgs e)
        {
            switch (e.Type)
            {
            case Opcode.TEXT:
            {
                JArray       dcode = JArray.Parse(e.Data);
                ClientOpcode opc   = (ClientOpcode)int.Parse(dcode[0].ToString());
                switch (opc)
                {
                case ClientOpcode.login:
                {
                    User.version  = dcode[1].ToObject <int>();
                    User.user_id  = dcode[2].ToObject <int>();
                    User.user_key = dcode[3].ToObject <string>();
                    User.Login();
                    Chat.ChatManager.Notice(User);
                    Chat.ChatManager.UpdateBoddy(this);
                    Chanel.SendList(this);
                    break;
                }

                case ClientOpcode.chat:
                {
                    Broadcast(Chat.ChatManager.Msj(dcode[1].ToString(), User));
                    break;
                }

                case ClientOpcode.room_create:
                {
                    Chanel _new_c = new Chanel();
                    _new_c.chanel_id         = new Random().Next(2, 9);
                    _new_c.chanel_name       = dcode[1].ToObject <string>();
                    _new_c.chanel_password   = dcode[2].ToObject <string>();
                    _new_c.chanel_maxplayers = dcode[3].ToObject <int>();
                    _new_c.chanel_gamemode   = dcode[4].ToObject <int>();
                    User.Is_Master           = 1;
                    _new_c.Join(User);
                    Program.Chanels.Add(_new_c);
                    Chanel.SendList(this);
                    break;
                }

                case ClientOpcode.room_join:
                {
                    int    _sala_id = dcode[1].ToObject <int>();
                    Chanel _cha     = Program.Chanels.Single(a => a.chanel_id == _sala_id);
                    if (_cha != null)
                    {
                        _cha.Join(User);
                    }
                    break;
                }

                case ClientOpcode.channel_join:
                {
                    Chanel _chan = Program.Chanels.Single(a => a.UserIn(User) == true);
                    if (_chan != null)
                    {
                        _chan.RemoveUser(User);
                    }
                    User.PlayerInfo();
                    Chat.ChatManager.UpdateBoddy(this);
                    Chanel.SendList(this);
                    break;
                }

                case ClientOpcode.mobile:
                {
                    Chanel _cha = Program.Chanels.Single(a => a.UserIn(User) == true);
                    if (_cha != null)
                    {
                        int _mobil = dcode[1].ToObject <int>();
                        _cha.ChangeMobil(User, _mobil);
                    }
                    break;
                }

                case ClientOpcode.get_my_avatars:
                {
                    User.GetAvatars();
                    break;
                }

                case ClientOpcode.equip:
                {
                    User.SendEquip(dcode[1].ToString());
                    break;
                }

                case ClientOpcode.buy:
                {
                    User.BuyItems(dcode[1].ToObject <string>(), dcode[2].ToObject <string>(), dcode[3].ToObject <int>(), dcode[4].ToObject <int>());
                    break;
                }

                case ClientOpcode.change_name:
                {
                    User.ChangeName(dcode[1].ToObject <string>());
                    User.PlayerInfo();
                    Chat.ChatManager.UpdateBoddy(this);
                    break;
                }

                case ClientOpcode.room_change_ready:
                {
                    Chanel _chan = Program.Chanels.Single(a => a.UserIn(User) == true);
                    if (_chan != null)
                    {
                        _chan.ChangeReady(User, dcode[1].ToObject <int>());
                    }
                    break;
                }

                case ClientOpcode.game_start:
                {
                    Chanel _chan = Program.Chanels.Single(a => a.UserIn(User) == true);
                    if (_chan != null)
                    {
                        _chan.GameStart();
                    }
                    break;
                }

                case ClientOpcode.game_move:
                {
                    Chanel _chan = Program.Chanels.Single(a => a.UserIn(User) == true);
                    if (_chan != null)
                    {
                        User.x         = dcode[1].ToObject <int>();
                        User.y         = dcode[2].ToObject <int>();
                        User.body_move = dcode[3].ToObject <int>();
                        User.look      = dcode[4].ToObject <int>();
                        User.ang       = dcode[5].ToObject <int>();
                        _chan.Move(User);
                    }
                    break;
                }

                case ClientOpcode.game_shoot:
                {
                    Chanel _chan = Program.Chanels.Single(a => a.UserIn(User) == true);
                    if (_chan != null)
                    {
                        _chan.GameShoot(User, dcode[1].ToObject <int>(), dcode[2].ToObject <int>(), dcode[3].ToObject <int>(), dcode[4].ToObject <int>(), dcode[5].ToObject <int>(), dcode[6].ToObject <int>(), dcode[7].ToObject <int>(), dcode[8].ToObject <int>());
                    }
                    break;
                }

                case ClientOpcode.game_pass_turn:
                {
                    Chanel _chan = Program.Chanels.Single(a => a.UserIn(User) == true);
                    if (_chan != null)
                    {
                    }
                    break;
                }

                case ClientOpcode.room_change_team:
                {
                    Chanel _chan = Program.Chanels.Single(a => a.UserIn(User) == true);
                    if (_chan != null)
                    {
                        _chan.ChangeTeam(User, dcode[1].ToObject <string>());
                    }
                    break;
                }

                default:
                {
                    Console.WriteLine("opcode: {0}", opc);
                    Console.WriteLine("data: {0}", e.Data);
                    break;
                }
                }
                break;
            }

            default:
            {
                Console.WriteLine("tp: {0}", e.Type);
                break;
            }
            }
        }