public void mouseClicked(MouseEvent event) {
Game game = Game.getInstance();
//Try to deselect the player
RealPlayer realPlayer = null;
try {
realPlayer = (RealPlayer) Game.getInstance().getPlayerManager().getRealPlayer();
} catch (RealPlayerException e) {
e.printStackTrace();
return;
}
int x = event.getX();
int y = event.getY();
// This click is it a click on an existing tower ?
for(final Tower tower: Game.getInstance().getTowerManager().getTowers()) {
float tx = tower.getPosition().x;
float ty = tower.getPosition().y;
if ( tower.getOwner().equals(realPlayer) && (x>= tx && x < tx + 40) && (y>= ty && y < ty + 40) ) {
final JPopupMenu menu = new JPopupMenu();
// item to upgrade the tower
String price = (tower.getUpgradePrice() < Integer.MAX_VALUE) ? "-$"+tower.getUpgradePrice() : "impossible!";
JMenuItem item = new JMenuItem("Upgrade tower ("+price+")");
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// need to implement UpgradeTower
UpgradeTower command = new UpgradeTower(tower);
Engine.getInstance().getCommands().add(command);
}
});
menu.add(item);
// item to sell the tower
JMenuItem item2 = new JMenuItem("Sell tower (+$"+tower.getSellPrice()+")");
item2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
SellTower command = new SellTower(tower);
Engine.getInstance().getCommands().add(command);
}
});
menu.add(item2);
menu.show(event.getComponent(), x, y);
return;
}
}
if(realPlayer.getSelectedBases() != null) {
realPlayer.getSelectedBases().setBackground(realPlayer.getColor().brighter());
}
realPlayer.setSelectedBases(null);
// Click on the map make disappear the line
AppliWindow.getInstance().getLine().setDisplayed(false);
AppliWindow.getInstance().getLine().displayLine(0, 0, 0, 0);
// This clic is it in order to build a tower ?
if (realPlayer.isBuildingTower()) {
int numArea = game.getMapManager().getNumAreaAtPosition(event.getX(), event.getY());
if (numArea == -1) {
//System.out.println("C'est une zone de plaine !");
}
else if(numArea >= 0 && numArea < game.getBaseManager().getBases().size()) {
Base baseArea = game.getBaseManager().getBases().get(numArea);
if (realPlayer.equals(baseArea.getPlayer())) {
realPlayer.buyTower(realPlayer, "GunTower", x, y);
}
else {
//System.out.println("C'est pas ta zone !");
}
}
else {
System.out.println("Problem with the index in map");
}
}
realPlayer.setBuildingTower(false);
AppliWindow.getInstance().getPanelTmpTower().setVisible(false);
}