2007-04-05 12:45:22 +00:00
|
|
|
package ei.game.player;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
2007-04-21 21:18:27 +00:00
|
|
|
import ei.engine.scene.Node;
|
2007-05-07 11:43:47 +00:00
|
|
|
import ei.game.gamestate.EndGameState;
|
2007-04-21 21:18:27 +00:00
|
|
|
|
2007-04-05 12:45:22 +00:00
|
|
|
public class PlayerHandler {
|
|
|
|
|
// The instance of this class
|
2007-06-17 22:31:09 +00:00
|
|
|
//private static PlayerHandler instance;
|
2007-04-05 12:45:22 +00:00
|
|
|
// The player list
|
|
|
|
|
private ArrayList<Player> players;
|
2007-04-21 21:18:27 +00:00
|
|
|
private Node playerNode;
|
2007-04-28 22:09:39 +00:00
|
|
|
// 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;
|
2007-04-05 12:45:22 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Creates a PlayerHandler
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public PlayerHandler(){
|
|
|
|
|
players = new ArrayList<Player>();
|
2007-04-21 21:18:27 +00:00
|
|
|
playerNode = new Node("PlayerNode");
|
2007-04-28 22:09:39 +00:00
|
|
|
fundsTimmer = 0;
|
2007-04-21 21:18:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns a node with all the players units
|
|
|
|
|
*
|
|
|
|
|
* @return A node with all the players units
|
|
|
|
|
*/
|
|
|
|
|
public Node getNode(){
|
|
|
|
|
return playerNode;
|
2007-04-05 12:45:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 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);
|
2007-04-21 21:18:27 +00:00
|
|
|
playerNode.add(p.getNode());
|
2007-04-05 12:45:22 +00:00
|
|
|
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);
|
2007-04-21 21:18:27 +00:00
|
|
|
playerNode.remove(p.getNode());
|
2007-04-05 12:45:22 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void update(){
|
2007-05-07 11:33:49 +00:00
|
|
|
//****** ECONOMY **************
|
2007-04-28 22:09:39 +00:00
|
|
|
// 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
|
|
|
//*******************************
|
2007-04-28 22:09:39 +00:00
|
|
|
// updates the players
|
2007-04-05 12:45:22 +00:00
|
|
|
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-04-05 12:45:22 +00:00
|
|
|
}
|
2007-05-07 13:03:05 +00:00
|
|
|
if(gaia != null)gaia.update();
|
2007-04-05 12:45:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the instance of this class
|
|
|
|
|
*
|
|
|
|
|
* @return The instance
|
2007-06-17 22:31:09 +00:00
|
|
|
|
2007-04-05 12:45:22 +00:00
|
|
|
public static PlayerHandler getInstance(){
|
|
|
|
|
if(instance == null){
|
|
|
|
|
instance = new PlayerHandler();
|
|
|
|
|
}
|
|
|
|
|
return instance;
|
2007-06-17 22:31:09 +00:00
|
|
|
}*/
|
2007-04-28 22:09:39 +00:00
|
|
|
|
|
|
|
|
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
|
|
|
}
|
2007-04-05 12:45:22 +00:00
|
|
|
}
|