Ejemplo n.º 1
0
 /** altered attack method to spawn projectiles on ranged attack */
 protected override void attack(HittableTarget target, Boolean isMelee, Castle enemy)
 {
     if (canAttackType == CharacterEnums.EType.BOTH || canAttackType == target.myType || target.myType == CharacterEnums.EType.BOTH)
     {
         attackCounter++;
         if (attackCounter >= getAttackCount())
         {
             attackCounter = 0;
             if (isMelee)
             {
                 Logger.d(ToString() + " attacked " + target.ToString() + "(Melee " + getMeleeDamage() + " dmg)");
                 target.getHit(getMeleeDamage());
             }
             else
             {
                 Rectangle r            = getLocation();
                 int       bulletHeight = (int)(r.Center.Y + r.Height / getOffSetDivisor());
                 Logger.d(ToString() + " attacked " + target.ToString() + "(Ranged " + getRangedDamage() + " dmg)");
                 if (getFrontLocationX() > target.getFrontLocationX())
                 {
                     projectiles.Add((Projectile)Activator.CreateInstance(getProjectileType(),
                                                                          new object[] { CharacterEnums.EDirection.LEFT, new Vector2(getFrontLocationX(), bulletHeight),
                                                                                         getRangedDamage(), target, enemy }));
                 }
                 else
                 {
                     projectiles.Add((Projectile)Activator.CreateInstance(getProjectileType(),
                                                                          new object[] { CharacterEnums.EDirection.RIGHT, new Vector2(getFrontLocationX(), bulletHeight),
                                                                                         getRangedDamage(), target, enemy }));
                 }
             }
         }
     }
 }
 /** altered attack method to kill themself on attack */
 protected override void attack(HittableTarget target, Boolean isMelee, Castle enemy)
 {
     if (canAttackType == CharacterEnums.EType.BOTH || canAttackType == target.myType || target.myType == CharacterEnums.EType.BOTH)
     {
         attackCounter++;
         if (attackCounter >= getAttackCount())
         {
             attackCounter = 0;
             Logger.d(ToString() + " attacked " + target.ToString() + "(Melee " + getMeleeDamage() + " dmg)");
             target.getHit(getMeleeDamage());
             this.healthBar.sethealth(0);
         }
     }
 }
Ejemplo n.º 3
0
        public override void update(Castle enemy)
        {
            HittableTarget groundTarget = enemy.groundFrontTarget;
            HittableTarget airTarget    = enemy.airFrontTarget;

            for (int i = 0; i < projectiles.Count; i++)
            {
                if (projectiles[i].update())
                {
                    projectiles.RemoveAt(i);
                }
            }
            base.update(enemy);
        }
Ejemplo n.º 4
0
 public Bullet(CharacterEnums.EDirection direction, Vector2 startLocation, int damage, HittableTarget target, Castle enemyCastle)
     : base(direction, startLocation, damage, target, enemyCastle)
 {
     location         = startLocation;
     this.target      = target;
     this.damage      = damage;
     this.speed       = getSpeed();
     this.moving      = direction;
     this.enemyCastle = enemyCastle;
     if (moving == CharacterEnums.EDirection.LEFT)
     {
         this.speed *= -1;
     }
     text = getTexture();
 }
Ejemplo n.º 5
0
 public AirStrike(CharacterEnums.EDirection direction, Vector2 startLocation, int damage, HittableTarget target, Castle enemyCastle)
     : base(direction, startLocation, damage, target, enemyCastle)
 {
     this.target      = target;
     this.damage      = damage;
     this.enemyCastle = enemyCastle;
     targetMarker     = getTargetMarker();
     payload          = getPayload();
     if (target.myType == CharacterEnums.EType.AIR)
     {
         finalDestination = Constants.airHeight;
     }
     else
     {
         finalDestination = Constants.groundHeight;
     }
 }
Ejemplo n.º 6
0
 public override CharacterEnums.ECharacterAction determineAction(HittableCharacter me, HittableTarget frontEnemy)
 {
     if (me.facing == CharacterEnums.EDirection.RIGHT)
     {
         if (me.getFrontLocationX() + attackDistance >= frontEnemy.getFrontLocationX())
         {
             return(CharacterEnums.ECharacterAction.MELEEATTACK);
         }
     }
     else
     {
         if (me.getFrontLocationX() - attackDistance <= frontEnemy.getFrontLocationX())
         {
             return(CharacterEnums.ECharacterAction.MELEEATTACK);
         }
     }
     return(CharacterEnums.ECharacterAction.WALKFORWARD);
 }
Ejemplo n.º 7
0
 public Projectile(CharacterEnums.EDirection direction, Vector2 startLocation, int damage, HittableTarget target, Castle enemyCastle)
 {
 }
Ejemplo n.º 8
0
 public SateliteStrike(CharacterEnums.EDirection direction, Vector2 startLocation, int damage, HittableTarget target, Castle enemyCastle)
     : base(direction, startLocation, damage, target, enemyCastle)
 {
 }
Ejemplo n.º 9
0
 public TankBullet(CharacterEnums.EDirection direction, Vector2 startLocation, int damage, HittableTarget target, Castle enemyCastle)
     : base(direction, startLocation, damage, target, enemyCastle)
 {
 }
 public override CharacterEnums.ECharacterAction determineAction(HittableCharacter me, HittableTarget frontEnemy)
 {
     CharacterEnums.ECharacterAction acc = base.determineAction(me, frontEnemy);
     if (acc == CharacterEnums.ECharacterAction.MELEEATTACK)
     {
         return(CharacterEnums.ECharacterAction.WALKBACKWARD);
     }
     else
     {
         return(acc);
     }
 }