Ejemplo n.º 1
0
 public override void Update(Level lvl, GameTime gt)
 {
     if (Active)
     {
         UpdateCounter += (int)gt.ElapsedGameTime.Milliseconds;
     }
     if (UpdateCounter > UpdateDelay)
     {
         StaticSpawnableEffect.AddSpawnableEffect(SpawnableEffect_Type.TINY_STARS, Position, 50, false);
         UpdatePositionRectangle();
         UpdateAnimations(gt);
         UpdateCounter = 0;
     }
 }
Ejemplo n.º 2
0
        public void Update(Level lvl, GameTime gt, Vector2 OwnerPosition)
        {
            if (Active)
            {
                UpdateCounter += gt.ElapsedGameTime.Milliseconds;
                WaitCounter   += gt.ElapsedGameTime.Milliseconds;
            }

            if (Active && UpdateCounter >= UpdateDelay)
            {
                UpdateCounter = 0;

                switch (ProjectileState)
                {
                case Projectile_State.IN_MOTION:
                    Movement();
                    Gravity();
                    LevelCollision(lvl, gt);
                    if (lvl.LevelProjectileObjectCollision(this, gt))
                    {
                        Active   = false;
                        Position = Vector2.Zero;
                    }
                    Position += Velocity;
                    StaticSpawnableEffect.AddSpawnableEffect(SpawnableEffect_Type.FIRE_SPARK, Position, 75, 1);
                    if (WaitCounter >= Wait * 2)
                    {
                        Active = false;
                    }
                    break;

                case Projectile_State.CHARGING:
                    Position = OwnerPosition;
                    if (WaitCounter >= Wait)
                    {
                        WaitCounter     = 0;
                        ProjectileState = Projectile_State.IN_MOTION;
                        SetProjectileTrajectory();
                        if (!GoingRight)
                        {
                            Velocity.X = -Velocity.X;
                        }
                    }
                    break;
                }
            }
            UpdatePositionRectangle();
            UpdateAnimations(gt);
        }
Ejemplo n.º 3
0
        public override void Update(Level lvl, GameTime gt)
        {
            if (Active)
            {
                UpdateCounter             += (int)gt.ElapsedGameTime.Milliseconds;
                LockAnimationStateCounter += (int)gt.ElapsedGameTime.Milliseconds;
            }

            if (Health <= 0)
            {
                this.Kill(gt);
            }

            if (UpdateCounter >= UpdateDelay && UpdateCounter >= Wait && Active)
            {
                Gravity();
                LevelCollision(lvl, gt);
                Position += Velocity;
                UpdatePositionRectangle();
                VelocityDecay();

                if (ResetVelocityY)
                {
                    Velocity.Y     = 0;
                    ResetVelocityY = false;
                }
                if (gt.TotalGameTime.TotalMilliseconds < HealthInvunerabilityTimer && Health > 0)
                {
                    StaticSpawnableEffect.AddSpawnableEffect(SpawnableEffect_Type.BUBBLE, Position, 20, 1);
                }
                //Update states
                switch (GameObjectState)
                {
                case GameObject_State.Air:
                    if (Velocity.Y < 0)
                    {
                        ChangeAnimationState(Animation_State.jumping);
                    }
                    else if (Velocity.Y > 0)
                    {
                        ChangeAnimationState(Animation_State.falling);
                    }
                    break;

                case GameObject_State.onGround:
                    if (Velocity.X != 0)
                    {
                        ChangeAnimationState(Animation_State.running);
                    }
                    else if (Velocity.X == 0 && ((Keyboard.GetState().IsKeyDown(Keys.A) || Keyboard.GetState().IsKeyDown(Keys.D))))
                    {
                        ChangeAnimationState(Animation_State.byWall);
                    }
                    else
                    {
                        ChangeAnimationState(Animation_State.idle);
                    }
                    if (Velocity.X > 0)
                    {
                        GoingRight = true;
                    }
                    else if (Velocity.X < 0)
                    {
                        GoingRight = false;
                    }
                    UsedAirRoll = false;
                    break;

                case GameObject_State.Flying:
                    break;

                case GameObject_State.AirRoll:
                    if (gt.TotalGameTime.TotalMilliseconds >= AirRollTimer)
                    {
                        ChangeGameObjectState(GameObject_State.Air);
                        Velocity /= 3;
                    }
                    StaticSpawnableEffect.AddSpawnableEffect(SpawnableEffect_Type.TINY_STARS, Position, 90, 1);
                    break;

                case GameObject_State.Death:
                    if (gt.TotalGameTime.TotalMilliseconds >= DeathDelayTimer)
                    {
                        Active = false;
                    }
                    break;
                }
                Wait          = 0;
                UpdateCounter = 0;
            }
            UpdateAnimations(gt);
        }
Ejemplo n.º 4
0
        public void Behaviour(GameTime gt, Player ThePlayer, Level lvl)
        {
            if (Active && GameObjectState != GameObject_State.Death)
            {
                counterEnemyCycle += (int)gt.ElapsedGameTime.Milliseconds;
            }
            if (GameObjectState != GameObject_State.Death)
            {
                switch (Type)
                {
                //Jumper
                case EnemyType.Purple:
                    if (counterEnemyCycle >= EnemyCycleTimer)
                    {
                        Jump(gt);
                        counterEnemyCycle = 0;

                        if (!GoingRight && GameObjectState == GameObject_State.Air)
                        {
                            Velocity.X = 5;
                        }
                        else if (GoingRight && GameObjectState == GameObject_State.Air)
                        {
                            Velocity.X = -5;
                        }
                        GoingRight = !GoingRight;
                    }
                    break;

                //Shooter
                case EnemyType.Orange:
                    FacePlayer(ThePlayer);
                    if (counterEnemyCycle >= EnemyCycleTimer)
                    {
                        ShootProjectile();
                        counterEnemyCycle = 0;
                    }
                    break;

                //Thwomp
                case EnemyType.DarkGray:
                    FacePlayer(ThePlayer);
                    if (GameObjectState == GameObject_State.onGround)
                    {
                        StaticSpawnableEffect.AddSpawnableEffect(SpawnableEffect_Type.SMOKE_PUFF_RIGHT, new Vector2(Position.X, Position.Y + Hitbox.Height / 2), 300, true, false, 3, 0);
                        StaticSpawnableEffect.AddSpawnableEffect(SpawnableEffect_Type.SMOKE_PUFF_LEFT, new Vector2(Position.X, Position.Y + Hitbox.Height / 2), 300, true, false, -3, 0);

                        ChangeAnimationState(Animation_State.falldamage);
                        LockAnimation(Animations[ActiveAnimation]);
                        Velocity.Y      = -4;
                        GameObjectState = GameObject_State.Jumping;
                        Wait            = 1000;
                    }
                    else if (GameObjectState == GameObject_State.Flying)
                    {
                        Velocity.Y = 0;

                        if (Position.X - ThePlayer.Position.X < 50 && Position.X - ThePlayer.Position.X > -50)
                        {
                            GameObjectState = GameObject_State.Air;
                        }
                    }
                    else if (GameObjectState == GameObject_State.Air)
                    {
                        Velocity.Y += 1;
                    }
                    else if (GameObjectState == GameObject_State.Jumping)
                    {
                        ChangeAnimationState(Animation_State.jumping);
                        Velocity.Y = -4;
                        if (SpawnPoint.Y - Position.Y > 3)
                        {
                            GameObjectState = GameObject_State.Flying;
                        }
                    }
                    break;

                //FireWalker
                case EnemyType.DarkRed:
                    if (counterEnemyCycle >= EnemyCycleTimer)
                    {
                        Velocity.X        = 4;
                        counterEnemyCycle = 0;
                    }
                    break;
                    //Yoyo fiende. Pappas idé.
                }
            }
        }