package rts.core.engine;
import java.util.ArrayList;
import java.util.HashMap;
import org.newdawn.slick.SlickException;
import rts.core.engine.map.Map;
/**
* This class provide engine inputs parameters.
*
* @author Vincent PIRAULT
*
*/
public class GameRound {
private Map map;
private GameGoal goal;
private ArrayList<Player> players;
private HashMap<Integer, ArrayList<Player>> playersByTeam;
private AI ai;
public GameRound(Map map, GameGoal goal) {
this.map = map;
this.goal = goal;
this.players = new ArrayList<Player>();
this.playersByTeam = new HashMap<Integer, ArrayList<Player>>();
this.ai = new AI();
}
public void update(Engine engine, int delta) throws SlickException {
for (int i = 0; i < players.size(); i++) {
if (players.get(i).isAI()) {
ai.update(engine, players.get(i), delta);
}
}
if (goal.isComplete(engine, delta)) {
engine.nextGameRound();
}
}
public void updatePlayer(Player player) {
for (int i = 0; i < players.size(); i++) {
if (players.get(i).getId() == player.getId()) {
if (!players.get(i).isPlayer()) {
players.get(i).update(player);
}
}
}
}
public void addPlayer(Player player) {
players.add(player);
if (playersByTeam.containsKey(new Integer(player.getTeamId()))) {
playersByTeam.get(new Integer(player.getTeamId())).add(player);
} else {
ArrayList<Player> a = new ArrayList<Player>();
a.add(player);
playersByTeam.put(player.getTeamId(), a);
}
}
public void removePlayer(int playerId) {
for (int i = 0; i < players.size(); i++) {
if (players.get(i).getId() == playerId) {
players.remove(i);
}
}
}
public Player getPlayer(int id) {
for (int i = 0; i < players.size(); i++) {
if (players.get(i).getId() == id) {
return players.get(i);
}
}
return null;
}
public Player getPlayer() {
for (int i = 0; i < players.size(); i++) {
if (players.get(i).isPlayer()) {
return players.get(i);
}
}
return null;
}
public Map getMap() {
return map;
}
public HashMap<Integer, ArrayList<Player>> getPlayers() {
return playersByTeam;
}
}