Initial import.
This commit is contained in:
parent
5f299890cb
commit
330607c72b
23 changed files with 338 additions and 0 deletions
131
src/ei/engine/state/GameStateManager.java
Normal file
131
src/ei/engine/state/GameStateManager.java
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
package ei.engine.state;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class GameStateManager {
|
||||
private static GameStateManager instance;
|
||||
private ArrayList<GameState> gameStates;
|
||||
|
||||
private GameStateManager(){
|
||||
gameStates = new ArrayList<GameState>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add A GameState to the GameStateManager
|
||||
* @param g The GameState to add
|
||||
* @return true if successful else false
|
||||
*/
|
||||
public boolean addState(GameState g){
|
||||
if(!gameStates.contains(g)){
|
||||
gameStates.add(g);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a GameState from the GameStateManager
|
||||
* @param g The state to remove
|
||||
* @return true if successful else false
|
||||
*/
|
||||
public boolean removeState(GameState g){
|
||||
if(gameStates.contains(g)){
|
||||
gameStates.remove(g);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a GameState by its name
|
||||
* @param name the name of the GameState to remove
|
||||
* @return true if successful else false
|
||||
*/
|
||||
public boolean removeStateByName(String name){
|
||||
int i = getId(name);
|
||||
if(i >= 0){
|
||||
gameStates.remove(i);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the GameState in GameStateManager whit the given name
|
||||
* @param name the name of the GameState
|
||||
* @return the GameState by the name else null
|
||||
*/
|
||||
public GameState getState(String name){
|
||||
int i = getId(name);
|
||||
if(i >= 0){
|
||||
gameStates.get(i);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Activates a GameState by the name
|
||||
* @param name the name of the GameState
|
||||
* @return true if successful else false
|
||||
*/
|
||||
public boolean setActive(String name){
|
||||
GameState g = getState(name);
|
||||
if(g != null){
|
||||
g.setEnabled(true);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deactivates a GameState by the name
|
||||
* @param name the name of the GameState
|
||||
* @return true if successful else false
|
||||
*/
|
||||
public boolean setDeActive(String name){
|
||||
GameState g = getState(name);
|
||||
if(g != null){
|
||||
g.setEnabled(false);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private int getId(String name){
|
||||
for(int i=0; i<gameStates.size() ;i++){
|
||||
if(gameStates.get(i).getName().equals(name)){
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* updates all the active GameStates
|
||||
*/
|
||||
public void update(){
|
||||
for(int i=0; i<gameStates.size() ;i++){
|
||||
if(gameStates.get(i).isEnabled()){
|
||||
gameStates.get(i).update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* renders all the active GameStates
|
||||
*/
|
||||
public void render(){
|
||||
for(int i=0; i<gameStates.size() ;i++){
|
||||
if(gameStates.get(i).isEnabled()){
|
||||
gameStates.get(i).render();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static GameStateManager getInstance(){
|
||||
if(instance == null){
|
||||
instance = new GameStateManager();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue