示例#1
0
 public void attack(Unit unit) {
   if (!hasAttacked) {
     unit.takeHit(attack + terrain.getAttackBonus());
     if (speed >= unit.speed + Constants.speedNeededForDoubleAttack)
       unit.takeHit(attack + terrain.getAttackBonus());
     hasAttacked = true;
   }
 }
示例#2
0
 public void setTerrain(TileSprite newTerr) {
   if (terrain != null) terrain.currentUnit = null;
   else if (newTerr != null) {
     terrain = newTerr;
     terrain.currentUnit = this;
   } else {
     terrain = newTerr;
   }
 }
示例#3
0
  public boolean moveTo(int x, int y, TileSprite targetTile) {
    if (!hasMoved) {
      if (targetTile.getUnit() != null) {
        System.err.println("Multiple Units ERR");
        return false;
      }

      targetTile.setUnit(this);
      terrain.setUnit(null);
      terrain = targetTile;
      hasMoved = true;

      return true;
    }
    return false;
  }
示例#4
0
  protected void takeHit(int damage) {
    int tmp = damage - (defense + terrain.getDefenseBonus());
    if (tmp < 0) tmp = 0;

    health -= tmp;
    System.out.println("New HP: " + health);

    if (health <= 0) {
      die();
    }
  }
示例#5
0
 protected void die() {
   terrain.setUnit(null);
   terrain = null;
   alive = false;
 }