Exemple #1
0
        public override void Behaviour(float fElapsedTime, DynamicGameObject player = null)
        {
            if (Health <= 0)
            {
                vx             = 0;
                vy             = 0;
                SolidVsDynamic = false;
                IsAttackable   = false;
                // Patrol = Enum.Actions.Left;
                return;
            }



            if (player != null)
            {
                Ticker++;

                StateTick -= fElapsedTime;



                if (StateTick <= 0.0f) // för att inte göra beslut så ofta.
                {
                    StateTick += 1.0f;
                }



                //if (!IsAttackable)
                //{
                //    Ticker = 0;
                //}

                //
                //if (State == Enum.LastStage.StayUp && Ticker < 120)
                //{
                //    State = Enum.LastStage.MovingDown;
                //}
                //else if (State == Enum.LastStage.MovingDown && Ticker > 120)
                //{
                //    State = Enum.LastStage.StayDown;
                //}
                //else if (State == Enum.LastStage.StayDown && Ticker > 150)
                //{
                //    State = Enum.LastStage.MovingUp;
                //}
                //else if (State == Enum.LastStage.MovingUp && Ticker > 270)
                //{
                //    State = Enum.LastStage.StayUp;
                //}
                //else if (Ticker >= 300)
                //{
                //    Ticker = 0;
                //}
                if (Ticker < 60)
                {
                    State = Enum.LastStage.MovingDown;
                }
                else if (Ticker < 120)
                {
                    State = Enum.LastStage.MovingUp;

                    if (Ticker < 118)
                    {
                        TurnedTo = Enum.PlayerOrientation.Left;
                    }
                }
                else if (Ticker < 160)
                {
                    TurnedTo = Enum.PlayerOrientation.Right;
                }
                else if (Ticker >= 180)
                {
                    Ticker = 0;
                }



                //



                if (py < 12 || py > 13)
                {
                    if (py < 12)
                    {
                        py = 12;
                    }
                    if (py > 13)
                    {
                        py = 13;
                    }
                }

                if (State == Enum.LastStage.MovingDown)
                {
                    if (vy <= 0)
                    {
                    }
                    vy = 2;

                    //if (py != 13)
                    //{
                    //    //py = py + 0.20f;
                    //    py = 13;
                    //}
                }
                else if (State == Enum.LastStage.MovingUp)
                {
                    if (vy >= 0)
                    {
                    }
                    vy = -2;
                }



                vx = 0;
                if (py <= FromCor)
                {
                    vy = 0;
                    py = 12;
                }
                if (py >= ToCor)
                {
                    vy = 0;
                    py = 13;
                }


                //reset IsAttackable
                if (!IsAttackable && py == 13)
                {
                    IsAttackable = true;
                }


                // Switch X
                if (py == 13.0f)
                {
                    Core.Aggregate.Instance.IsUnderGround = true;
                    Core.Aggregate.Instance.IsMoving      = false;
                }
                else if (py == 12.0f)
                {
                    Core.Aggregate.Instance.IsAboveGround = true;
                    Core.Aggregate.Instance.IsMoving      = false;
                }
                else
                {
                    Core.Aggregate.Instance.IsMoving      = true;
                    Core.Aggregate.Instance.IsUnderGround = false;
                    Core.Aggregate.Instance.IsAboveGround = false;
                }



                //if (State == Enum.LastStage.StayUp)
                //{
                //    py = 12.0f;
                //}
                //else if (State == Enum.LastStage.MovingUp)
                //{
                //    if (py > 12.0f)
                //    {
                //        py = py - 0.025f;
                //    }
                //    else
                //    {
                //        py = 12.0f;
                //    }
                //}
                //else if (State == Enum.LastStage.StayDown)
                //{
                //    py = 13.0f;
                //}
                //else if (State == Enum.LastStage.MovingDown)
                //{
                //    if (py < 13.0f)
                //    {
                //        py = py + 0.025f;
                //    }
                //    else
                //    {
                //        py = 13.0f;
                //    }
                //}
            }
        }
Exemple #2
0
        public override void Behaviour(float fElapsedTime, DynamicGameObject player = null)
        {
            if (Health <= 0)
            {
                vx             = 0;
                vy             = 0;
                SolidVsDynamic = false;
                IsAttackable   = false;
                return;
            }

            //Temp, för test i demo endast. Byt ut när boss är bra först

            if (player != null)
            {
                Ticker++;

                StateTick -= fElapsedTime;

                if (StateTick <= 0.0f) // för att inte göra beslut så ofta.
                {
                    StateTick += 1.0f;
                }



                if (Ticker < 60)
                {
                    State = Enum.LastStage.MovingDown;
                }
                else if (Ticker < 120)
                {
                    State = Enum.LastStage.MovingUp;
                }
                else if (Ticker >= 180)
                {
                    Ticker = 0;
                }



                if (py < 12 || py > 13)
                {
                    if (py < 12)
                    {
                        py = 12;
                    }
                    if (py > 13)
                    {
                        py = 13;
                    }
                }

                if (State == Enum.LastStage.MovingDown)
                {
                    if (vy <= 0)
                    {
                    }
                    vy = 2;

                    //if (py != 13)
                    //{

                    //    py = 13;
                    //}
                }
                else if (State == Enum.LastStage.MovingUp)
                {
                    if (vy >= 0)
                    {
                    }
                    vy = -2;
                }



                vx = 0;
                if (py <= FromCor)
                {
                    vy = 0;
                    py = 12;
                }
                if (py >= ToCor)
                {
                    vy = 0;
                    py = 13;
                }
            }
            //end temp
        }