package vooga.rts.manager.actions;
import vooga.rts.action.ManagerAction;
import vooga.rts.commands.ClickCommand;
import vooga.rts.commands.Command;
import vooga.rts.gamedesign.sprite.gamesprites.GameEntity;
import vooga.rts.gamedesign.sprite.gamesprites.interactive.InteractiveEntity;
import vooga.rts.manager.Manager;
import vooga.rts.state.GameState;
import vooga.rts.util.Camera;
import vooga.rts.util.Location3D;
/**
* This class needs to be pushed into any classes that can be moved, and be
* mapped to the right click there.
*
* @author Challen Herzberg-Brovold.
* @author Ryan Fishel
*
*/
public class RightClickAction extends ManagerAction {
private Location3D myLocation;
public RightClickAction (Manager manager) {
super(manager);
}
@Override
public void apply () {
if (myLocation != null) {
for (final InteractiveEntity ie : getManager().getSelected()) {
GameEntity enemy = GameState.getMap().getEntity(myLocation);
if (enemy != null) {
ie.recognize(enemy);
}
else {
Thread t = new Thread(new Runnable() {
@Override
public void run () {
ie.move(myLocation);
}
});
t.start();
}
}
}
}
@Override
public void update (Command command) {
ClickCommand click = (ClickCommand) command;
myLocation = Camera.instance().viewtoWorld(click.getPosition());
if (myLocation.getX() < 0 || myLocation.getY() < 0) {
myLocation = null;
}
}
}