예제 #1
0
        public override void Update()
        {
            float speed = 5;

            kinetics.velocity.X = ControllerInput.Instance().Sticks.Right.X *speed;
            kinetics.velocity.Y = -ControllerInput.Instance().Sticks.Right.Y *speed;

            if (ControllerInput.Instance().GetKey(Keys.Left).Held)
            {
                kinetics.velocity.X = -speed;
            }

            if (ControllerInput.Instance().GetKey(Keys.Right).Held)
            {
                kinetics.velocity.X = speed;
            }

            if (ControllerInput.Instance().GetKey(Keys.Down).Held)
            {
                kinetics.velocity.Y = speed;
            }

            if (ControllerInput.Instance().GetKey(Keys.Up).Held)
            {
                kinetics.velocity.Y = -speed;
            }

            Attack();

            LevelBoundingBox();

            kinetics.Update();

            if (Melee)
            {
                if (currentAnimation.Finished())
                {
                    currentAnimation = walk;
                    currentAnimation.Reset();
                    Melee = false;
                }
            }

            if (Magic)
            {
                if (currentAnimation.Finished())
                {
                    currentAnimation = walk;
                    currentAnimation.Reset();
                    Magic = false;
                }
            }

            currentAnimation.Update(kinetics);
            if (Vector2.Distance(kinetics.position, Avatar.Instance().kinetics.position) < 50)
            {
                Avatar.Instance().health.grow(.05f);
            }
        }
예제 #2
0
        public override void Attack()
        {
            if (waitTimer >= 0)
            {
                if (waitTimer <= 0)
                {
                    if (this.AttackType == AttackType.Ranged)
                    {
                        thought = new SearchAndDestroy(this, Avatar.Instance(), 500, 150);
                    }
                    else
                    {
                        thought = new SearchAndDestroy(this, Avatar.Instance(), 500, 50);
                    }
                }
                waitTimer--;
                return;
            }
            attackTimer++;

            kinetics.velocity = Vector2.Zero;
            kinetics.orientations.SetOrientation(Movement.Orientate(kinetics, Avatar.Instance().kinetics, 60));

            if (attackTimer > 20)
            {
                if (this.AttackType == AttackType.Melee)
                {
                    current = attack;
                    if (current.Finished())
                    {
                        DamageBox damageBox = new DamageBox(kinetics.position + kinetics.orientations.GetVecOrientation() * 3, kinetics.orientations.GetVecOrientation(), kinetics.orientations.GetVecOrientation(), 30, false);
                        LevelManager.Instance().getCurrentLevel().InsertGameObject(damageBox);
                        SoundManager.Instance().AddSound(new SFX("SFX\\swing"));
                        attackTimer = 0;
                        current.Reset();
                        current   = walk;
                        waitTimer = 20;
                    }
                }

                if (this.AttackType == AttackType.Ranged)
                {
                    FireBall damageBox = new FireBall(kinetics.position + kinetics.orientations.GetVecOrientation() * 3, kinetics.orientations.GetVecOrientation() * 10, 30, false);
                    LevelManager.Instance().getCurrentLevel().InsertGameObject(damageBox);
                    SoundManager.Instance().AddSound(new SFX("SFX\\fireball"));
                    attackTimer = 0;
                    if (current.Finished())
                    {
                        current.Reset();
                        current   = walk;
                        waitTimer = 20;
                    }
                }
            }
        }
예제 #3
0
        public override void Update()
        {
            float speed = 5;

            hurtTimer.Update();
            if (hurtTimer.Ready())
            {
                color = Color.White;
                hurtTimer.Reset();
                hurtTimer.Puase();
            }
            kinetics.velocity.X = ControllerInput.Instance().Sticks.Left.X *speed;
            kinetics.velocity.Y = -ControllerInput.Instance().Sticks.Left.Y *speed;

            if (ControllerInput.Instance().GetKey(Keys.Left).Held)
            {
                kinetics.velocity.X = -speed;
            }

            if (ControllerInput.Instance().GetKey(Keys.Right).Held)
            {
                kinetics.velocity.X = speed;
            }

            if (ControllerInput.Instance().GetKey(Keys.Down).Held)
            {
                kinetics.velocity.Y = speed;
            }

            if (ControllerInput.Instance().GetKey(Keys.Up).Held)
            {
                kinetics.velocity.Y = -speed;
            }

            Attack();

            LevelBoundingBox();

            kinetics.Update();

            if (Melee)
            {
                if (currentAnimation.Finished())
                {
                    currentAnimation = walk;
                    currentAnimation.Reset();
                    Melee = false;
                }
            }

            if (Magic)
            {
                if (currentAnimation.Finished())
                {
                    currentAnimation = walk;
                    currentAnimation.Reset();
                    Magic = false;
                }
            }

            currentAnimation.Update(kinetics);
        }