fixed enamy select and building units
This commit is contained in:
parent
ba32196429
commit
8f74ca2ee5
7 changed files with 83 additions and 24 deletions
|
|
@ -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+"]";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue