示例#1
0
        //main constructor
        public MovableAddon() : base(1)                 //use itemid 1
        {
            Movable = false;
            Visible = false;

            //default delay: 1 second
            _Delay = TimeSpan.FromSeconds(1);

            _Components = new List <MovableAddonComponent>();

            _Speed = MovableAddonSpeed.Regular;
        }
示例#2
0
        public override void Deserialize(GenericReader reader)
        {
            _Components = new List <MovableAddonComponent>();

            base.Deserialize(reader);

            int version = reader.ReadInt();

            int count = reader.ReadInt();

            for (int i = 0; i < count; i++)
            {
                _Components.Add((MovableAddonComponent)reader.ReadItem());
            }

            _Direction = (MovableAddonDirection)reader.ReadInt();

            _Controller = (MovableAddonControlComponent)reader.ReadItem();
            _Key        = (MovableAddonKey)reader.ReadItem();

                        #if ( RunUORC1 )
            _Extrema = new Rectangle3D(new Point3D(reader.ReadInt(), reader.ReadInt(), reader.ReadInt()), new Point3D(reader.ReadInt(), reader.ReadInt(), reader.ReadInt()));
                        #else
            /*To RunUO 2.0 RC1 users:  if you're getting an error here, then uncomment line 2 of this file to read:
             *
             #define RunUORC1
             *
             */
            _Extrema = reader.ReadRect3D();
                        #endif

            _Delay = TimeSpan.FromSeconds(reader.ReadDouble());

            ExhaustPowerTimeSpan = reader.ReadTimeSpan();

            _Speed = MovableAddonSpeed.Regular;
        }
示例#3
0
        public override void OnSpeech(SpeechEventArgs e)
        {
            if (!e.Handled)
            {
                Mobile m = e.Mobile;

                if (!_Addon.Contains(m) || !_Addon.HasKey(m))
                {
                    return;
                }

                MovableAddonCommand newcommand = MovableAddonCommand.Stop;
                MovableAddonSpeed   newspeed   = MovableAddonSpeed.Regular;

                bool foundacommand = false;

                foreach (string command in Enum.GetNames(typeof(MovableAddonCommand)))
                {
                    //if a command is detected
                    if (e.Speech.ToLower().IndexOf(command.ToLower()) != -1)
                    {
                        foundacommand = true;
                        //special case: stop command
                        if ((MovableAddonCommand)Enum.Parse(typeof(MovableAddonCommand), command) == MovableAddonCommand.Stop)
                        {
                            newcommand = MovableAddonCommand.Stop;
                            break;
                        }
                        else
                        {
                            //stack up all commands togetherr
                            newcommand = (MovableAddonCommand)((int)newcommand + (int)Enum.Parse(typeof(MovableAddonCommand), command));
                        }
                    }
                }

                if (foundacommand)
                {
                    foreach (string speed in Enum.GetNames(typeof(MovableAddonSpeed)))
                    {
                        //if a command is detected
                        if (e.Speech.ToLower().IndexOf(speed.ToLower()) != -1)
                        {
                            newspeed = (MovableAddonSpeed)Enum.Parse(typeof(MovableAddonSpeed), speed);
                            break;
                        }
                    }

                    Say("Your wish is my command!");

                    if (newspeed == MovableAddonSpeed.Turn)
                    {
                        if (newcommand == MovableAddonCommand.Left)
                        {
                            _Addon.Rotate(false);
                        }
                        else if (newcommand == MovableAddonCommand.Right)
                        {
                            _Addon.Rotate(true);
                        }
                        else
                        {
                            Say("Um.. wait, what?");
                        }
                    }
                    else
                    {
                        _Addon.Speed   = newspeed;
                        _Addon.Command = newcommand;
                    }

                    e.Handled = true;
                }
                else
                {
                    //special commands

                    if (e.Speech.ToLower().IndexOf("come about") != -1)
                    {
                        Say("Whoah, here we go!");
                        _Addon.Rotate(false);
                        _Addon.Rotate(false);
                        e.Handled = true;
                    }
                    else if (e.Speech.ToLower().IndexOf("land") != -1)
                    {
                        Say("Prepare to land.. watch out below!");
                        ((FlyingCarpet)_Addon).Land();
                        e.Handled = true;
                    }
                    else if (e.Speech.ToLower().IndexOf("take off") != -1)
                    {
                        Say("Make rockets go now!");
                        ((FlyingCarpet)_Addon).TakeOff();
                        e.Handled = true;
                    }
                }
            }
        }