Android Open Source - feup-lpoo-android-tower-defense Poison Tower






From Project

Back to project page feup-lpoo-android-tower-defense.

License

The source code is released under:

MIT License

If you think the Android project feup-lpoo-android-tower-defense listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package pt.up.fe.lpoo.towerdefense;
/*from  w w w  .java2  s .  c om*/
import java.util.ArrayList;

import pt.up.fe.lpoo.framework.Image;

/**
 * This class represents the poison tower defense object. It has a large cooldown and with every attack it gives all
 *  surrounding enemies the poisoned status effect
 * @author Joao Marinheiro
 * @author Luis Cleto
 * @see DefenseObject
 */
public class PoisonTower extends DefenseObject{
  private static final float POISON_DURATION = 5.0f;
  private static final int POISON_TOWER_HP = 700;
  private static final float RELOAD_TIME = 10.0f;
  private static final double POISON_RADIUS = 150.0;
  private static final int POISON_DPS = 4;
  /** cost for building this defense */
  public static final int POISON_TOWER_COST = 70;

  /**
   * Constructor for the PoisonTower class. Only uses the superclass constructor.
   * @param xPos x position for the tower
   * @param yPos y position for the tower
   */
  public PoisonTower(int xPos, int yPos){
    super(RELOAD_TIME, POISON_TOWER_HP, xPos, yPos, POISON_RADIUS);
  }

  @Override
  protected void attack(ArrayList<Enemy> enemies) {
    for(int i=0; i < enemies.size(); i++){
      if(isWithinRadius(enemies.get(i))){
        if(!enemies.get(i).hasStatusEffect(StatusEffect.EffectType.Poisoned)){
          enemies.get(i).addStatusEffect(
              new StatusEffect(StatusEffect.EffectType.Poisoned,POISON_DURATION,POISON_DPS));
          foundEnemies = true;
        }
      }
    }
  }

  /**
   * Returns the current Image to represent the tower.
   * 
   * @return returns the Image object corresponding the current image of the tower
   */
  @Override
  public Image getCurrentImage() {
    return Assets.poisonTower;
  }

  /**
   * Indicates whether this tower can be upgraded or not
   * 
   * @return returns true if it can be upgraded, false otherwise
   */
  @Override
  public boolean isUpgradable() {
    return false;
  }

  /**
   * Returns the cost to upgrade the tower
   * 
   * @return returns the necessary credit to upgrade this tower
   */
  @Override
  public int getUpgradeCost() {
    return 0;
  }
  /**
   * Only a stub since this tower can't be upgraded yet
   */
  @Override
  public void upgrade() {
  }

  /**
   * @return returns the cost to build this tower
   */
  @Override
  public int getCost() {
    return POISON_TOWER_COST;
  }

  /**
   * Indicates whether this defense will block an enemies path or not
   * 
   * @return returns false if enemies cant walk across this defense, true otherwise
   */
  @Override
  public boolean isCrossable() {
    return false;
  }
  
  /**
   * Indicates whether this tower is part of the ground terrain or if it has a height (for visibility purposes)
   * 
   * @return returns true if the tower is at ground level, false otherwise
   */
  @Override
  public boolean isGroundObject() {
    return false;
  }
  
  /**
   * @return returns the cost required to repair the tower
   */
  @Override
  public int getRepairCost() {
    return 2*(POISON_TOWER_HP-hitpoints);
  }
}




Java Source Code List

pt.up.fe.lpoo.framework.Audio.java
pt.up.fe.lpoo.framework.FileIO.java
pt.up.fe.lpoo.framework.Game.java
pt.up.fe.lpoo.framework.Graphics.java
pt.up.fe.lpoo.framework.Image.java
pt.up.fe.lpoo.framework.Input.java
pt.up.fe.lpoo.framework.Music.java
pt.up.fe.lpoo.framework.Pool.java
pt.up.fe.lpoo.framework.Screen.java
pt.up.fe.lpoo.framework.Sound.java
pt.up.fe.lpoo.framework.implementation.AndroidAudio.java
pt.up.fe.lpoo.framework.implementation.AndroidFastRenderView.java
pt.up.fe.lpoo.framework.implementation.AndroidFileIO.java
pt.up.fe.lpoo.framework.implementation.AndroidGame.java
pt.up.fe.lpoo.framework.implementation.AndroidGraphics.java
pt.up.fe.lpoo.framework.implementation.AndroidImage.java
pt.up.fe.lpoo.framework.implementation.AndroidInput.java
pt.up.fe.lpoo.framework.implementation.AndroidMusic.java
pt.up.fe.lpoo.framework.implementation.AndroidSound.java
pt.up.fe.lpoo.framework.implementation.MultiTouchHandler.java
pt.up.fe.lpoo.framework.implementation.SingleTouchHandler.java
pt.up.fe.lpoo.framework.implementation.TouchHandler.java
pt.up.fe.lpoo.towerdefense.Animation.java
pt.up.fe.lpoo.towerdefense.Assets.java
pt.up.fe.lpoo.towerdefense.BarricadeDefense.java
pt.up.fe.lpoo.towerdefense.BoulderProjectile.java
pt.up.fe.lpoo.towerdefense.BoulderTower.java
pt.up.fe.lpoo.towerdefense.BuildingOption.java
pt.up.fe.lpoo.towerdefense.DefenseObject.java
pt.up.fe.lpoo.towerdefense.DescriptionObject.java
pt.up.fe.lpoo.towerdefense.Enemy.java
pt.up.fe.lpoo.towerdefense.FreezeTower.java
pt.up.fe.lpoo.towerdefense.GameElements.java
pt.up.fe.lpoo.towerdefense.GameObj.java
pt.up.fe.lpoo.towerdefense.Golem.java
pt.up.fe.lpoo.towerdefense.InstructionsScreen.java
pt.up.fe.lpoo.towerdefense.LevelScreen.java
pt.up.fe.lpoo.towerdefense.LevelSelectionScreen.java
pt.up.fe.lpoo.towerdefense.LoadingScreen.java
pt.up.fe.lpoo.towerdefense.MainMenuScreen.java
pt.up.fe.lpoo.towerdefense.Messages.java
pt.up.fe.lpoo.towerdefense.MusicPlayer.java
pt.up.fe.lpoo.towerdefense.PathCluster.java
pt.up.fe.lpoo.towerdefense.PoisonTower.java
pt.up.fe.lpoo.towerdefense.Projectile.java
pt.up.fe.lpoo.towerdefense.Skull.java
pt.up.fe.lpoo.towerdefense.Slime.java
pt.up.fe.lpoo.towerdefense.SplashLoadingScreen.java
pt.up.fe.lpoo.towerdefense.StatusEffect.java
pt.up.fe.lpoo.towerdefense.TarPoolDefense.java
pt.up.fe.lpoo.towerdefense.TextParser.java
pt.up.fe.lpoo.towerdefense.Tile.java
pt.up.fe.lpoo.towerdefense.TowerDefenseGame.java
pt.up.fe.lpoo.towerdefense.TurretProjectile.java
pt.up.fe.lpoo.towerdefense.TurretTower.java
pt.up.fe.lpoo.towerdefense.Wave.java