BuildingQueue.java :  » Port » android-starcraft » hotheart » starcraft » units » Android Open Source

Android Open Source » Port » android starcraft 
android starcraft » hotheart » starcraft » units » BuildingQueue.java
package hotheart.starcraft.units;

import hotheart.starcraft.core.StarcraftCore;

public class BuildingQueue {
  public static final int QUEUE_MAX_LENGTH = 9;

  Unit unit;

  int[] queue = new int[QUEUE_MAX_LENGTH];
  int[] buildTime = new int[QUEUE_MAX_LENGTH];

  int count = 0;

  public BuildingQueue(Unit parent) {
    unit = parent;
  }

  public synchronized void update() {
    if (count > 0) {
      if (buildTime[0] <= 0) {
        onBuilded(queue[0]);
        remove(0);
      } else
        buildTime[0]--;
    }
  }

  public synchronized final int getQueueCount() {
    return count;
  }

  public synchronized void add(int unitId, int build) throws Exception {
    if (count == 9)
      throw new Exception("Queue is full");

    buildTime[count] = build;
    queue[count] = unitId;
    count++;
  }

  public synchronized void remove(int index) {
    if (count > 0) {
      for (int i = 1; i < count; i++) {
        queue[i - 1] = queue[i];
        buildTime[i - 1] = buildTime[i];
      }
      count--;
    }
  }

  protected void onBuilded(int unitId) {
    StarcraftCore.context.addUnit(Unit.Factory.getUnit(unitId,
        unit.teamColor), unit.getPosX(), unit.getPosY());
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.