evil-inside/src/ei/game/player/PlayerHandler.java

129 lines
2.8 KiB
Java
Raw Normal View History

package ei.game.player;
import java.util.ArrayList;
import ei.engine.scene.Node;
2007-05-07 11:43:47 +00:00
import ei.game.gamestate.EndGameState;
public class PlayerHandler {
// The instance of this class
//private static PlayerHandler instance;
// The player list
private ArrayList<Player> players;
private Node playerNode;
// economy stuff
private static final int fundsDelay = 60*30;
private static final int funds = 1000;
private int fundsTimmer;
2007-05-07 13:03:05 +00:00
private Player gaia;
/**
* Creates a PlayerHandler
*
*/
public PlayerHandler(){
players = new ArrayList<Player>();
playerNode = new Node("PlayerNode");
fundsTimmer = 0;
}
/**
* Returns a node with all the players units
*
* @return A node with all the players units
*/
public Node getNode(){
return playerNode;
}
/**
* Add a player to the handler
*
* @param p The player to add to the handler
* @return true if added else false
*/
public boolean addPlayer(Player p){
if(!players.contains(p)){
players.add(p);
playerNode.add(p.getNode());
return true;
}
return false;
}
/**
* Removes a player from the handler
* @param p The player to remove
* @return true if succesful else false
*/
public boolean removePlayer(Player p){
if(players.contains(p)){
players.remove(p);
playerNode.remove(p.getNode());
return true;
}
return false;
}
public void update(){
2007-05-07 11:33:49 +00:00
//****** ECONOMY **************
// sends the funds to the players
fundsTimmer++;
if(fundsTimmer >= fundsDelay){
for(int i=0; i<players.size() ;i++){
int maintenance = 0;
for(int j=0; j<players.get(i).unitCount() ;j++){
maintenance += players.get(i).getUnit(j).getMaintenanceCost();
}
int kredit = funds - maintenance;
if(kredit > 0){
players.get(i).addKredits(kredit);
}
}
fundsTimmer = 0;
}
2007-05-07 11:33:49 +00:00
//*******************************
// updates the players
for(int i=0; i<players.size() ;i++){
2007-05-07 11:33:49 +00:00
if(players.get(i).defeated()){
players.get(i).kilAll();
2007-05-07 11:43:47 +00:00
players.get(i).endGame(EndGameState.DEFEAT);
players.remove(i);
if(players.size() == 1){
players.get(0).endGame(EndGameState.VICTORY);
}
2007-05-07 11:33:49 +00:00
}
else{
players.get(i).update();
}
}
2007-05-07 13:03:05 +00:00
if(gaia != null)gaia.update();
}
/**
* Returns the instance of this class
*
* @return The instance
public static PlayerHandler getInstance(){
if(instance == null){
instance = new PlayerHandler();
}
return instance;
}*/
public void clear(){
players.clear();
playerNode.clear();
fundsTimmer = 0;
}
2007-05-07 13:03:05 +00:00
public void setGaiaPlayer(Player p){
2007-05-07 15:33:49 +00:00
if(gaia != null && playerNode.contains(gaia.getNode())){
playerNode.remove(gaia.getNode());
}
2007-05-07 13:03:05 +00:00
gaia = p;
2007-05-07 15:33:49 +00:00
playerNode.add(gaia.getNode());
2007-05-07 13:03:05 +00:00
}
}