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

@ -64,6 +64,16 @@ public class Vector2f implements Comparable{
y += i.getY();
}
public void sub(Vector2f i){
x -= i.getX();
y -= i.getY();
}
public void sub(float sx,float sy){
x += sx;
y += sy;
}
public String toString(){
return "Vector2f["+x+","+y+"]";
}

View file

@ -104,14 +104,14 @@ public class InGameMouseInput extends MouseInput{
// Make unit mouseover select
if(!map.isPosEmpty(pos.getX(), pos.getY())){
if(oldMouseOver != map.getPos(pos.getX(), pos.getY())){
if(oldMouseOver != null)oldMouseOver.setMouseOver(false);
if(oldMouseOver != null)oldMouseOver.setMouseOver(player,false);
oldMouseOver = map.getPos(pos.getX(), pos.getY());
oldMouseOver.setMouseOver(true);
oldMouseOver.setMouseOver(player,true);
}
}
else{
if(oldMouseOver != null){
oldMouseOver.setMouseOver(false);
oldMouseOver.setMouseOver(player,false);
oldMouseOver = null;
}
}
@ -210,12 +210,12 @@ public class InGameMouseInput extends MouseInput{
for(int j=Math.min(startPos.getY(), stopPos.getY()); j<=Math.max(startPos.getY(), stopPos.getY()) ;j++){
if(!map.isPosEmpty(i, j) && map.getPos(i, j).getPlayer() == player){
selected.add(map.getPos(i, j));
map.getPos(i, j).setSelected(true,false);
map.getPos(i, j).setSelected(player,true,false);
}
}
}
if(!selected.isEmpty()){
selected.get((int)(Math.random()*selected.size())).setSelected(true,true);
selected.get((int)(Math.random()*selected.size())).setSelected(player, true,true);
}
}
@ -225,7 +225,7 @@ public class InGameMouseInput extends MouseInput{
*/
public void deselectAllUnits(){
for(int i=0; i<selected.size(); i++) {
selected.get(i).setSelected(false,false);
selected.get(i).setSelected(player,false,false);
}
selected.clear();
}

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());