evil-inside/src/ei/game/hud/InGameBuildHud.java

121 lines
3.6 KiB
Java

package ei.game.hud;
import ei.engine.effects.BitmapText;
import ei.engine.math.Vector2f;
import ei.engine.scene.Node;
import ei.engine.scene.Sprite;
import ei.engine.ui.Button;
import ei.engine.ui.UiComponent;
import ei.engine.ui.UiHandler;
import ei.engine.ui.UiListener;
import ei.game.gamestate.InGameState;
import ei.game.player.Player;
import ei.game.scene.units.APU;
import ei.game.scene.units.Bomber;
import ei.game.scene.units.Tank;
/**
* This class handels the build buttons for the units
* @author Ziver
*
*/
public class InGameBuildHud implements UiListener{
private UiHandler ui;
private Player player;
private BitmapText queueSize;
private InGameState inGameState;
public Button removeLastQueue;
public Button apuBuildButton;
public Button tankBuildButton;
public Button bomberBuildButton;
public InGameBuildHud(int x ,int y, Player p, InGameState inGameState){
this.inGameState = inGameState;
player = p;
ui = new UiHandler("BuildMenu");
Vector2f size = new Vector2f(40,40);
removeLastQueue = new Button("TankButton", size);
queueSize = new BitmapText("QueueSize");
queueSize.setText("0");
removeLastQueue.setButtonSprite(queueSize);
removeLastQueue.getNode().setLocation(new Vector2f(x,y));
removeLastQueue.addListener(this);
ui.addUi(removeLastQueue);
apuBuildButton = new Button("TankButton", size);
Sprite s1 = new Sprite("ApuButton","data/ui/apu_button.png");
s1.setSize(size);
apuBuildButton.setButtonSprite(s1);
Sprite s2 = new Sprite("ApuButton_Selected","data/ui/apu_button_selected.png");
s2.setSize(size);
apuBuildButton.setOnTopButtonSprite(s2);
apuBuildButton.getNode().setLocation(new Vector2f(x+(size.getX()*2),y));
apuBuildButton.addListener(this);
ui.addUi(apuBuildButton);
tankBuildButton = new Button("TankButton", size);
Sprite s3 = new Sprite("TankButton","data/ui/tank_button.png");
s3.setSize(size);
tankBuildButton.setButtonSprite(s3);
Sprite s4 = new Sprite("TankButton_Selected","data/ui/tank_button_selected.png");
s4.setSize(size);
tankBuildButton.setOnTopButtonSprite(s4);
tankBuildButton.getNode().setLocation(new Vector2f(x+(size.getX()*4),y));
tankBuildButton.addListener(this);
ui.addUi(tankBuildButton);
bomberBuildButton = new Button("TankButton", size);
Sprite s5 = new Sprite("BomberButton","data/ui/bomber_button.png");
s5.setSize(size);
bomberBuildButton.setButtonSprite(s5);
Sprite s6 = new Sprite("BomberButton_Selected","data/ui/bomber_button_selected.png");
s6.setSize(size);
bomberBuildButton.setOnTopButtonSprite(s6);
bomberBuildButton.getNode().setLocation(new Vector2f(x+(size.getX()*6),y));
bomberBuildButton.addListener(this);
ui.addUi(bomberBuildButton);
}
public void update(){
queueSize.setText(""+player.getCC().getBuildQueueSize());
}
public UiHandler getUi(){
return ui;
}
public Node getNode(){
return ui.getNode();
}
public Player getPlayer(){
return player;
}
public void ActionEvent(UiComponent source){
// builds a apu
if(source == apuBuildButton){
player.getCC().buildUnit(new APU(player, getInGameState()));
}
// builds a tank
else if(source == tankBuildButton){
player.getCC().buildUnit(new Tank(player, getInGameState()));
}
// builds a bomber
else if(source == bomberBuildButton){
player.getCC().buildUnit(new Bomber(player, getInGameState()));
}
// removes the last unit in the queue
else if(source == removeLastQueue){
player.getCC().removeLast();
}
}
public InGameState getInGameState(){
return inGameState;
}
}