コード例 #1
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;
                    }
                }
            }
        }
コード例 #2
0
        public override void Attack()
        {
            kinetics.velocity = Vector2.Zero;
            kinetics.orientations.SetOrientation(Movement.Orientate(kinetics, Avatar.Instance().kinetics, 60));
            if (attackTimer.Ready())
            {
                FireBall fireBall = new FireBall(kinetics.position, kinetics.orientations.GetVecOrientation() * 10, 30, false);
                LevelManager.Instance().getCurrentLevel().InsertGameObject(fireBall);
                SoundManager.Instance().AddSound(new SFX("SFX\\fireball"));
                attackTimer.Reset();

                thought = new SearchAndDestroy(this, Avatar.Instance());
            }
        }
コード例 #3
0
 public Enemy(int hp, int speed, int damage, AttackType attackType, string enemyColor, Weapons weapon, int roundSpawned, int score)
 {
     this.HP           = hp;
     this.Speed        = speed;
     this.Damage       = damage;
     this.AttackType   = attackType;
     this.EnemyColor   = enemyColor;
     this.Weapon       = weapon;
     this.RoundSpawned = roundSpawned;
     this.Score        = score;
     InitializeAnimation();
     if (this.AttackType == AttackType.Ranged)
     {
         thought = new SearchAndDestroy(this, Avatar.Instance(), 500, 150);
     }
     else
     {
         thought = new SearchAndDestroy(this, Avatar.Instance(), 500, 50);
     }
 }
コード例 #4
0
        void InitializeAnimation()
        {
            kinetics          = Kinetic.ZERO();
            kinetics.position = new Vector2(100, 100);
            Kinetic.SetBoundingBoxDimensions(ref kinetics.boundingBox, Game1.content.Load <Texture2D>(@"Enemy\Up\enemy-up-2"));

            Animation Up = new Animation();

            Up.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Up\enemy-up-2"));
            Up.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Up\enemy-up-1"));
            Up.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Up\enemy-up-2"));
            Up.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Up\enemy-up-3"));
            Up.SetTime(10);
            Up.SetFrame(0);

            Animation Down = new Animation();

            Down.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Down\enemy-wc-down-2"));
            Down.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Down\enemy-wc-down-1"));
            Down.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Down\enemy-wc-down-2"));
            Down.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Down\enemy-wc-down-3"));
            Down.SetTime(10);
            Down.SetFrame(0);

            Animation Left = new Animation();

            Left.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Left\wc-left-2"));
            Left.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Left\wc-left-1"));
            Left.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Left\wc-left-2"));
            Left.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Left\wc-left-3"));
            Left.SetTime(10);
            Left.SetFrame(0);

            Animation Right = new Animation();

            Right.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Right\wc-right-2"));
            Right.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Right\wc-right-1"));
            Right.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Right\wc-right-2"));
            Right.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Right\wc-right-3"));
            Right.SetTime(10);
            Right.SetFrame(0);

            Animation Idle = new Animation();

            Idle.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Up\enemy-up-2"));
            Idle.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Down\enemy-wc-down-2"));
            Idle.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Left\wc-left-3"));
            Idle.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\Right\wc-right-3"));
            Idle.SetTime(10);
            Idle.SetFrame(0);


            walk = new DirectionAnimationPacket();
            walk.InitializeAnimation(Up, DirectionAnimationPacket.Animations.UP);
            walk.InitializeAnimation(Down, DirectionAnimationPacket.Animations.DOWN);
            walk.InitializeAnimation(Left, DirectionAnimationPacket.Animations.LEFT);
            walk.InitializeAnimation(Right, DirectionAnimationPacket.Animations.RIGHT);
            walk.InitializeAnimation(Idle, DirectionAnimationPacket.Animations.IDLE);
            walk.setAnimation(DirectionAnimationPacket.Animations.IDLE);

            Animation AttackUp    = new Animation();
            int       attackSpeed = 3;
            Texture2D temp        = Game1.content.Load <Texture2D>(@"Enemy\AttackUp\enemy-attack-up-1");

            AttackUp.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackUp\enemy-attack-up-1"));
            AttackUp.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackUp\enemy-attack-up-2"));
            AttackUp.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackUp\enemy-attack-up-3"));
            AttackUp.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackUp\enemy-attack-up-4"));
            AttackUp.SetTime(attackSpeed);
            AttackUp.Offset(new Vector2(-64, -64));
            AttackUp.SetFrame(0);

            Animation AttackDown = new Animation();

            AttackDown.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackDown\enemy-attack-down-1"));
            AttackDown.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackDown\enemy-attack-down-2"));
            AttackDown.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackDown\enemy-attack-down-3"));
            AttackDown.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackDown\enemy-attack-down-4"));
            AttackDown.SetTime(attackSpeed);
            AttackDown.SetFrame(0);

            Animation AttackLeft = new Animation();

            AttackLeft.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackLeft\enemy-attack-left-1"));
            AttackLeft.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackLeft\enemy-attack-left-2"));
            AttackLeft.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackLeft\enemy-attack-left-3"));
            AttackLeft.SetTime(attackSpeed);
            AttackLeft.Offset(new Vector2(-64, -64));
            AttackLeft.SetFrame(0);

            Animation AttackRight = new Animation();

            AttackRight.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackRight\enemy-attack-right-1"));
            AttackRight.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackRight\enemy-attack-right-2"));
            AttackRight.AddFrame(Game1.content.Load <Texture2D>(@"Enemy\AttackRight\enemy-attack-right-3"));
            AttackRight.SetTime(attackSpeed);
            AttackRight.Offset(new Vector2(-0, -64));
            AttackRight.SetFrame(0);

            attack = new DirectionAnimationPacket();
            attack.InitializeAnimation(AttackUp, DirectionAnimationPacket.Animations.UP);
            attack.InitializeAnimation(AttackDown, DirectionAnimationPacket.Animations.DOWN);
            attack.InitializeAnimation(AttackLeft, DirectionAnimationPacket.Animations.LEFT);
            attack.InitializeAnimation(AttackRight, DirectionAnimationPacket.Animations.RIGHT);
            attack.setAnimation(DirectionAnimationPacket.Animations.RIGHT);

            thought = new SearchAndDestroy(this, Avatar.Instance());
        }