示例#1
0
 // KICK 8530196 0 -1 -1 -1 :You can't fly so frequently. One flight per 10 seconds is allowed.
 void ParseKick(GalaCommand command)
 {
     /*var senderId = command.Parameters[1].ToInt();
      * var s = command.Postfix;
      * var i = s.IndexOf(' ');
      * s = s.Substring(i+1);
      * AddMessage(senderId, s);*/
 }
示例#2
0
    // ACTION 8530196 8807955 :БАОБАБ gives autofocused a massage
    void ParseAction(GalaCommand command)
    {
        var senderId = command.Parameters[1].ToInt();
        var s        = command.Postfix;
        var i        = s.IndexOf(' ');

        s = s.Substring(i + 1);
        AddMessage(senderId, s);
    }
示例#3
0
 //852 2402 :Set cannon up
 void Parse852(GalaCommand command)
 {
     MenuActions.AddItem(command.Postfix, command.Parameters[0]);
 }
示例#4
0
    void OnMessageReceivedInternal(string message)
    {
        message = message.Trim();
        if (message == "")
        {
            return;
        }
        //log("<< '" + message + "'");
        Log.Galaxy("<< " + message);
        GalaCommand c = new GalaCommand(message.Trim());

        /*print("prefix: "+c.Prefix);
         * print("name: "+c.Name);
         * print("params: "+c.Parameters);
         * print("postfix: "+c.Postfix);*/

        switch (c.Name)
        {
        case "HAAAPSI":                 // приветствие
            var code = c.Parameters[0];
            authCode = SessionCodeGenerator.Generate(code);
            cmdIdent();
            ReadPrefs();
            if (!userPass.IsNullOrWhiteSpace())
            {
                cmdUser();
            }
            else
            {
                cmdRecover();
            }
            break;

        case "REGISTER":                 // добро на вход
            userId   = c.Parameters[0].Trim().ToInt();
            userPass = c.Parameters[1].Trim();
            userName = c.Parameters[2].Trim();
            cmdUser();
            planet.myUserId = userId;
            WriteUserPrefs();
            break;

        case "999":                 // auth OK
            cmdAddons();
            //PlayerPrefs.GetString("planetName", null);
            string s      = null;               //"pi100let";
            var    custom = ChatSettings.Me.CustomPlanetName;
            if (!custom.IsNullOrWhiteSpace())
            {
                s = custom;
            }
            cmdJoin(s);
            break;

        case "PING":
            cmdPong();
            break;

        case "353":                 // список юзеров. может быть несколько таких команд
            if (isWait353)
            {
                planet.Reset();
                isWait353 = false;
            }
            planet.JoinUsers(c.Postfix);
            planet.SetName(c.Parameters[2]);
            break;

        case "366":
            isWait353 = true;
            OnEnterChannel();
            break;

        case "860":                 // авторитет юзера / 860 8530196 161 1;aura/0_1;0;0;33
            planet.ParseAuthority(c.Parameters);
            break;

        case "JOIN":                 // вход перса
            planet.JoinUser(c.Parameters);
            break;

        case "PART":                 // выход перса
            planet.PartUser(c.Parameters);
            break;

        case "451":                 // ошибки
            // входили с другого устройства, нужно войти по рековери
            cmdRecover();
            break;

        case "452":
        case "432":
        case "433":
        case "601":
        case "403":
            MessageBox.Show("System Notice", c.Postfix);
            Disconnect();
            break;

        case "471":                 // планета переполнена
            var msg = c.Postfix;
            if (!joinPlanetName.IsNullOrWhiteSpace())
            {
                msg += " (" + joinPlanetName + ")";
                // на спец. кнопку вешаем собитие повторного джоина
                Action onClick = () => {
                    cmdJoin(joinPlanetName);
                    MessageBox.Dismiss();
                };
                MessageBox.EnableSpecialButton("Try Again", onClick);
            }
            MessageBox.Show("System Notice", msg);

            //Disconnect();
            break;

        case "473":
            MessageBox.Show("Fly", "Can't fly to closed planet!");
            //Disconnect();
            break;

        case "900":                 // инфа о планете
            planet.SetName(c.Parameters[0]);
            break;

        case "PRIVMSG":                 // инфа о планете
            AddMessage(c.Parameters[0].ToInt(), c.Postfix);
            break;

        case "332":                 // топик
            AddMessage(-1, "Subject: " + c.Postfix);
            break;

        case "ACTION":
            ParseAction(c);
            break;

        case "KICK":
            ParseKick(c);
            break;

        case "852":
            if (isWait852)
            {
                Reset852();
                isWait852 = false;
            }
            Parse852(c);
            break;

        case "853":
            isWait852 = true;
            Prepare852();
            break;

        default:
            break;
        }
    }