fixed enamy select and building units

This commit is contained in:
Ziver Koc 2007-05-07 09:32:13 +00:00
parent ba32196429
commit 8f74ca2ee5
7 changed files with 83 additions and 24 deletions

View file

@ -75,13 +75,13 @@ public abstract class GameEntity{
* Sets a unit to be selected or not.
* @param b true or false.
*/
public abstract void setSelected(boolean b, boolean playSound);
public abstract void setSelected(Player p,boolean b, boolean playSound);
/**
* Set if the mouse is over the unit or not
* @param b If the mouse is over the unit or not
*/
public abstract void setMouseOver(boolean b);
public abstract void setMouseOver(Player p,boolean b);
protected abstract SelectBox getSelection();

View file

@ -14,6 +14,7 @@ public class SelectBox {
private Node selectNode;
private Node mouseOverNode;
private ProgressBar bar;
private Texture tex;
/**
* Creates a selection box with health bar
@ -26,7 +27,7 @@ public class SelectBox {
selectNode = new Node("SelectionNode");
mouseOverNode = new Node("MouseOverNode");
Texture tex = new Texture();
tex = new Texture();
if(color == COLOR_RED){
tex.setColor(new Vector4f(1.0f, 0.5f, 0.5f,1));
}
@ -39,6 +40,7 @@ public class SelectBox {
bar.setValueColor(25, new Vector4f(1.0f, 0f, 0f, 1f));
bar.setValueColor(50, new Vector4f(1.0f, .95f, 0, 1f));
bar.setValueColor(100, new Vector4f(0.3f, 1.0f, 0.3f, 1f));
bar.setBarColor(tex.getColor());
selectNode.add(bar.getNode());
mouseOverNode.add(bar.getNode());
@ -56,6 +58,16 @@ public class SelectBox {
return selectNode;
}
public void setColor(int i){
if(i == COLOR_RED){
tex.setColor(new Vector4f(1.0f, 0.5f, 0.5f,1));
bar.setBarColor(tex.getColor());
}
else{
tex.setColor(new Vector4f(0.5f, 1.0f, 0.5f,1));
bar.setBarColor(tex.getColor());
}
}
/**
* Returns the node of the selection

View file

@ -10,6 +10,7 @@ import ei.game.gamestate.InGameState;
import ei.game.player.Player;
import ei.game.scene.GameEntity;
import ei.game.scene.Map;
import ei.game.scene.SelectBox;
import ei.game.scene.units.Unit;
/**
@ -34,22 +35,38 @@ public abstract class Building extends GameEntity{
unitNode = new Node("UnitNode");
unitNode.setLocation(Map.getPixelByPos(pos.getX(), pos.getY(), this.size));
setPos(pos.getX(), pos.getY(), this.size);
moveFrom = Map.getPixelByPos(oldPos.getX()+size-2, oldPos.getX()+size-1);
moveTo = Map.getPixelByPos( oldPos.getX()+size-2, oldPos.getX()+size);
moveFrom = Map.getPixelByPos(oldPos.getX()+size-2, oldPos.getY()+size-1);
moveTo = Map.getPixelByPos( oldPos.getX()+size-2, oldPos.getY()+size);
}
public void setSelected(boolean b, boolean playSound) {
public void setSelected(Player p,boolean b, boolean playSound) {
if(b) {
unitNode.add(getSelection().getSelectNode());
SelectBox box = getSelection();
if(getPlayer() != p){
box.setColor(SelectBox.COLOR_RED);
unitNode.add(box.getSelectNode());
}
else{
box.setColor(SelectBox.COLOR_GREEN);
unitNode.add(box.getSelectNode());
}
}
else{
unitNode.remove(getSelection().getSelectNode());
}
}
public void setMouseOver(boolean b) {
public void setMouseOver(Player p,boolean b) {
if(b) {
unitNode.add(getSelection().getMouseOverNode());
SelectBox box = getSelection();
if(getPlayer() != p){
box.setColor(SelectBox.COLOR_RED);
unitNode.add(box.getMouseOverNode());
}
else{
box.setColor(SelectBox.COLOR_GREEN);
unitNode.add(box.getMouseOverNode());
}
}
else{
unitNode.remove(getSelection().getMouseOverNode());
@ -152,12 +169,15 @@ public abstract class Building extends GameEntity{
buildTime++;
if(buildTime >= buildQueue.peek().getBuildTime()){
if(!unitNode.contains(buildQueue.peek().getNode())){
System.out.println(buildQueue.peek().getNode());
System.out.println("lol1"+buildQueue.peek().getNode());
unitNode.add(buildQueue.peek().getNode(),unitNode.size()/2);
buildQueue.peek().getNode().setLocation(moveFrom);
}
Vector2i temp = Map.getPosByPixel(moveTo.getX(), moveTo.getY());
if(InGameState.getMap().isPosEmpty(temp.getX(),temp.getY())){
if(!InGameState.getMap().isPosEmpty(temp.getX(),temp.getY())){
InGameState.getMap().getPos(temp.getX(),temp.getY()).move(false, oldPos.getX()+(size/2), oldPos.getY()-(size/2));
}
else{
//The moving is done here.
if(moveTo.getX() > buildQueue.peek().getNode().getLocation().getX()) {
buildQueue.peek().getNode().getLocation().add(buildQueue.peek().getVelocity(), 0f, 0f);
@ -171,7 +191,7 @@ public abstract class Building extends GameEntity{
if(moveTo.getY() < buildQueue.peek().getNode().getLocation().getY()) {
buildQueue.peek().getNode().getLocation().add(0f, -buildQueue.peek().getVelocity(), 0f);
}
System.out.println(buildQueue.peek().getNode().getLocation());
System.out.println("lol2"+buildQueue.peek().getNode().getLocation());
if(Math.abs(moveTo.getX() - buildQueue.peek().getNode().getLocation().getX()) < buildQueue.peek().getVelocity()+1
&& Math.abs(moveTo.getY() - buildQueue.peek().getNode().getLocation().getY())< buildQueue.peek().getVelocity()+1 ){
buildTime = 0;

View file

@ -26,9 +26,9 @@ public abstract class MapEntity extends Unit{
protected void move(int x, int y, boolean b) {}
public void setSelected(boolean b) {}
public void setSelected(Player p, boolean b) {}
public void setMouseOver(boolean b) {}
public void setMouseOver(Player p, boolean b) {}
@Override
public float getVelocity() {

View file

@ -13,6 +13,7 @@ import ei.game.gamestate.InGameState;
import ei.game.player.Player;
import ei.game.scene.GameEntity;
import ei.game.scene.Map;
import ei.game.scene.SelectBox;
import ei.game.scene.weapons.Weapon;
import ei.game.scene.weapons.WeaponHandler;
@ -63,19 +64,35 @@ public abstract class Unit extends GameEntity{
init();
}
public void setSelected(boolean b,boolean playSound) {
public void setSelected(Player p,boolean b,boolean playSound) {
if(b) {
if(playSound)getSelectSound().play();
unitNode.add(getSelection().getSelectNode());
SelectBox box = getSelection();
if(getPlayer() != p){
box.setColor(SelectBox.COLOR_RED);
unitNode.add(box.getSelectNode());
}
else{
box.setColor(SelectBox.COLOR_GREEN);
unitNode.add(box.getSelectNode());
}
}
else{
unitNode.remove(getSelection().getSelectNode());
}
}
public void setMouseOver(boolean b) {
public void setMouseOver(Player p,boolean b) {
if(b) {
unitNode.add(getSelection().getMouseOverNode());
SelectBox box = getSelection();
if(getPlayer() != p){
box.setColor(SelectBox.COLOR_RED);
unitNode.add(box.getMouseOverNode());
}
else{
box.setColor(SelectBox.COLOR_GREEN);
unitNode.add(box.getMouseOverNode());
}
}
else{
unitNode.remove(getSelection().getMouseOverNode());