Android Open Source - feup-lpoo-android-tower-defense Wave






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  . jav a2s .c  o m*/
import java.util.ArrayList;
import java.util.LinkedList;

/**
 * This class contains the information regarding the content of enemy waves, organizing them in enemy stacks.
 * @author Joao Marinheiro
 * @author Luis Cleto
 */
public class Wave {
  private ArrayList<LinkedList<Enemy>> enemyStacks;
  private ArrayList<Integer> stackDeploymentTimes;
  private ArrayList<Integer> unitDelayTimePerStack;
  private ArrayList<Integer> stackElapsedTimes;
  private ArrayList<Boolean> stackStarted;
  private long elapsedTime = 0;
  /** indicates if the wave has been started yet or not */
  public boolean started = false;
  /** indicates if the wave is finished yet or not */
  public boolean finished = false;


  /**
   * Default constructor for the Wave class. Initializes all variables.
   */
  public Wave(){
    enemyStacks = new ArrayList<LinkedList<Enemy>>();
    stackDeploymentTimes = new ArrayList<Integer>();
    unitDelayTimePerStack = new ArrayList<Integer>();
    stackElapsedTimes = new ArrayList<Integer>();
    stackStarted = new ArrayList<Boolean>();
  }
  /**
   * Adds a new stack of enemies to the wave with the given deployment time and delay between each enemy
   * 
   * @param enemyStack stack of enemies to be added to the wave
   * @param deploymentTime time when the stack is supposed to start being deployed after wave start (miliseconds)
   * @param unitDelay time interval between deploying enemies of the stack (miliseconds)
   */
  public void addEnemyStack(LinkedList<Enemy> enemyStack, int deploymentTime, int unitDelay){
    enemyStacks.add(enemyStack);
    stackDeploymentTimes.add(deploymentTime);
    unitDelayTimePerStack.add(unitDelay);
    stackElapsedTimes.add(0);
    stackStarted.add(false);
  }
  
  /**
   * If the wave has started, updates all the stacks of enemies, adding the deployed enemies to the game elements
   * @param updateTime elapsed time since last update
   */
  public void update(float updateTime){
    if(started){
      int elapsedMilis = (int)(updateTime*10f);
      elapsedTime += elapsedMilis;
      
      for(int i=0; i < enemyStacks.size(); i++){
        if(elapsedTime >= stackDeploymentTimes.get(i)){
          stackElapsedTimes.set(i, stackElapsedTimes.get(i) + elapsedMilis);
          while((stackElapsedTimes.get(i) >= unitDelayTimePerStack.get(i) || !stackStarted.get(i)) 
              && !enemyStacks.get(i).isEmpty()){
            if(stackStarted.get(i))
              stackElapsedTimes.set(i, stackElapsedTimes.get(i) - unitDelayTimePerStack.get(i));
            else
              stackStarted.set(i, true);
            LevelScreen.gameElems.addEnemy(enemyStacks.get(i).remove());
          }
        }

      }

      finished = true;
      for(int i=0; i < enemyStacks.size(); i++){
        if(enemyStacks.get(i).size() > 0)
          finished = false;
      }
    }

  }

}




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