Added a queue size to the game hud and fixed the hud input thingy

This commit is contained in:
Ziver Koc 2007-04-26 16:20:55 +00:00
parent bbf31af002
commit 5bb373573d
5 changed files with 125 additions and 46 deletions

View file

@ -69,10 +69,8 @@ public class ProgressBar{
value.setSize(new Vector2f(((float)v/max)*width,height));//(v/max)*width
value.setLocation(new Vector2f(-width/2+(((float)v/max)*width)/2,0));
System.out.println("lol"+((float)v/max));
for(int i=0; i<valueColor.length ;i++){
if(valueColor[i] != null && ((float)v/max) < (float)i/100){
System.out.println("lol"+((float)v/max));
value.getTexture().setColor(valueColor[i]);
break;
}

View file

@ -2,13 +2,13 @@ package ei.engine.ui;
import ei.engine.math.Vector2f;
import ei.engine.math.Vector3f;
import ei.engine.scene.Entity;
import ei.engine.scene.Node;
import ei.engine.scene.Sprite;
public class Button extends UiComponent{
private Sprite normalButton;
private Sprite ontopButton;
private Sprite presedButton;
private Entity normalButton;
private Entity ontopButton;
private Entity presedButton;
private Node buttonNode;
private Vector2f size;
@ -18,15 +18,15 @@ public class Button extends UiComponent{
size = s;
}
public void setButtonSprite(Sprite s){
public void setButtonSprite(Entity s){
normalButton = s;
}
public void setOnTopButtonSprite(Sprite s){
public void setOnTopButtonSprite(Entity s){
ontopButton = s;
}
public void setPressedButtonSprite(Sprite s){
public void setPressedButtonSprite(Entity s){
presedButton = s;
}

View file

@ -1,5 +1,6 @@
package ei.game.hud;
import ei.engine.effects.BitmapText;
import ei.engine.math.Vector2f;
import ei.engine.scene.Node;
import ei.engine.scene.Sprite;
@ -7,6 +8,10 @@ import ei.engine.ui.Button;
import ei.engine.ui.UiComponent;
import ei.engine.ui.UiHandler;
import ei.engine.ui.UiListener;
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
@ -15,56 +20,65 @@ import ei.engine.ui.UiListener;
*/
public class InGameBuildHud {
private UiHandler ui;
private Player player;
private BitmapText queueSize;
public InGameBuildHud(int x ,int y){
public Button removeLastQueue;
public Button apuBuildButton;
public Button tankBuildButton;
public Button bomberBuildButton;
public InGameBuildHud(int x ,int y, Player p){
player = p;
ui = new UiHandler("BuildMenu");
Vector2f size = new Vector2f(40,40);
HudListener listener = new HudListener(this);
Button apu = new Button("TankButton", size);
removeLastQueue = new Button("TankButton", size);
queueSize = new BitmapText("QueueSize");
queueSize.setText("0");
removeLastQueue.setButtonSprite(queueSize);
removeLastQueue.getNode().setLocation(new Vector2f(x,y));
removeLastQueue.addListener(listener);
ui.addUi(removeLastQueue);
apuBuildButton = new Button("TankButton", size);
Sprite s1 = new Sprite("ApuButton","data/ui/apu_button.png");
s1.setSize(size);
apu.setButtonSprite(s1);
apuBuildButton.setButtonSprite(s1);
Sprite s2 = new Sprite("ApuButton_Selected","data/ui/apu_button_selected.png");
s2.setSize(size);
apu.setOnTopButtonSprite(s2);
apu.getNode().setLocation(new Vector2f(x,y));
apu.addListener(new UiListener(){
public void ActionEvent(UiComponent source){
System.out.println("apu");
}
});
ui.addUi(apu);
apuBuildButton.setOnTopButtonSprite(s2);
apuBuildButton.getNode().setLocation(new Vector2f(x+(size.getX()*2),y));
apuBuildButton.addListener(listener);
ui.addUi(apuBuildButton);
Button tank = new Button("TankButton", size);
tankBuildButton = new Button("TankButton", size);
Sprite s3 = new Sprite("TankButton","data/ui/tank_button.png");
s3.setSize(size);
tank.setButtonSprite(s3);
tankBuildButton.setButtonSprite(s3);
Sprite s4 = new Sprite("TankButton_Selected","data/ui/tank_button_selected.png");
s4.setSize(size);
tank.setOnTopButtonSprite(s4);
tank.getNode().setLocation(new Vector2f(x+(size.getX()*2),y));
tank.addListener(new UiListener(){
public void ActionEvent(UiComponent source){
System.out.println("tank");
}
});
ui.addUi(tank);
tankBuildButton.setOnTopButtonSprite(s4);
tankBuildButton.getNode().setLocation(new Vector2f(x+(size.getX()*4),y));
tankBuildButton.addListener(listener);
ui.addUi(tankBuildButton);
Button bomber = new Button("TankButton", size);
bomberBuildButton = new Button("TankButton", size);
Sprite s5 = new Sprite("BomberButton","data/ui/bomber_button.png");
s5.setSize(size);
bomber.setButtonSprite(s5);
bomberBuildButton.setButtonSprite(s5);
Sprite s6 = new Sprite("BomberButton_Selected","data/ui/bomber_button_selected.png");
s6.setSize(size);
bomber.setOnTopButtonSprite(s6);
bomber.getNode().setLocation(new Vector2f(x+(size.getX()*4),y));
bomber.addListener(new UiListener(){
public void ActionEvent(UiComponent source){
System.out.println("bomber");
}
});
ui.addUi(bomber);
bomberBuildButton.setOnTopButtonSprite(s6);
bomberBuildButton.getNode().setLocation(new Vector2f(x+(size.getX()*6),y));
bomberBuildButton.addListener(listener);
ui.addUi(bomberBuildButton);
}
public void update(){
queueSize.setText(""+player.getCC().getBuildQueueSize());
}
public UiHandler getUi(){
@ -74,4 +88,36 @@ public class InGameBuildHud {
public Node getNode(){
return ui.getNode();
}
public Player getPlayer(){
return player;
}
class HudListener implements UiListener{
private InGameBuildHud hud;
public HudListener(InGameBuildHud h){
hud = h;
}
public void ActionEvent(UiComponent source){
// builds a apu
if(source == hud.apuBuildButton){
hud.getPlayer().getCC().buildUnit(new APU(0,0,player));
}
// builds a tank
else if(source == hud.tankBuildButton){
hud.getPlayer().getCC().buildUnit(new Tank(0,0,player));
}
// builds a bomber
else if(source == hud.bomberBuildButton){
hud.getPlayer().getCC().buildUnit(new Bomber(0,0,player));
}
// removes the last unit in the queue
else if(source == hud.removeLastQueue){
hud.getPlayer().getCC().removeLast();
}
}
}
}

View file

@ -52,7 +52,7 @@ public class InGameHud {
hudNode.add(buildBar.getNode());
buildHud = new InGameBuildHud((int)(buildBack.getLocation().getX()-buildBack.getSize().getX()/4),
(int)(buildBack.getLocation().getY()+10));
(int)(buildBack.getLocation().getY()+10),player);
hudNode.add(buildHud.getNode());
}
@ -61,6 +61,9 @@ public class InGameHud {
money.setLocation(new Vector2f(LWJGLGameWindow.getWidth()-money.getBound().width,5));
player.addKredits(100);
buildBar.setValue(player.getCC().getBuildProgress());
buildHud.update();
hudNode.setLocation(new Vector2f(
LWJGLGameWindow.getCamera().getLocation().getX(),

View file

@ -1,7 +1,6 @@
package ei.game.scene.buildings;
import java.util.LinkedList;
import java.util.Queue;
import ei.engine.math.Vector2i;
import ei.engine.scene.Node;
@ -17,7 +16,7 @@ import ei.game.scene.units.Unit;
*
*/
public abstract class Building extends GameEntity{
private Queue<Unit> buildQueue;
private LinkedList<Unit> buildQueue;
private int buildTime;
private Node unitNode;
private Vector2i oldPos;
@ -80,7 +79,41 @@ public abstract class Building extends GameEntity{
InGameState.getMap().setBuildPos(this, x, y, size);
}
/**
* Adds a unit to the build queue
* @param u The unit to build
*/
public void buildUnit(Unit u){
buildQueue.addLast(u);
}
/**
* Returns the size of the build queue
* @return The size of the build queue
*/
public int getBuildQueueSize(){
return buildQueue.size();
}
/**
* Removes the last unit in the build queue
*
*/
public void removeLast(){
if(!buildQueue.isEmpty()){
buildQueue.removeLast();
}
}
/**
* Returns the procentage of completion of the unit
*
*/
public int getBuildProgress(){
// TODO return the procentage of completion of the unit
return 50;
}
/**
* Removes this building from the game.
*
@ -98,8 +131,7 @@ public abstract class Building extends GameEntity{
if(getLife()<=0) {
removeBuilding();
}
}
}
}