diff --git a/HackAttackFX/src/hackattackfx/FXMLDocumentController.java b/HackAttackFX/src/hackattackfx/FXMLDocumentController.java index 2c08416..48b45f0 100644 --- a/HackAttackFX/src/hackattackfx/FXMLDocumentController.java +++ b/HackAttackFX/src/hackattackfx/FXMLDocumentController.java @@ -18,6 +18,7 @@ import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; +import javafx.scene.shape.Ellipse; /** * @@ -80,7 +81,8 @@ public Node getNode(String fxid){ for(Object n : list){ if(n instanceof Node){ Node node = (Node)n; - if(node.getId().equals(fxid)){ + String s = node.getId(); + if (node.getId() != null && s.equals(fxid)){ return node; } } diff --git a/HackAttackFX/src/hackattackfx/GraphicsEngine.java b/HackAttackFX/src/hackattackfx/GraphicsEngine.java index f6c6aec..775612a 100644 --- a/HackAttackFX/src/hackattackfx/GraphicsEngine.java +++ b/HackAttackFX/src/hackattackfx/GraphicsEngine.java @@ -9,6 +9,7 @@ import java.util.List; import hackattackfx.exceptions.*; import java.io.File; +import java.util.Iterator; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Platform; @@ -77,7 +78,8 @@ public AnchorPane getScene(){ * @return */ public Node getNode(String id){ - return parent.getNode(id); + Node n = parent.getNode(id); + return n; } /** @@ -137,8 +139,18 @@ public void run() { if(n instanceof MinionImage){ MinionImage mi = (MinionImage)n; Minion m = ((MinionImage)n).getMinion(); + + if (m.getHealth() > 0){ mi.setX(m.getPosition().x - (mi.getImage().getWidth()/2)); mi.setY(m.getPosition().y - (mi.getImage().getHeight()/2)); + } + else{ + try { + deSpawn(n); + } catch (InvalidObjectException ex) { + Logger.getLogger(GraphicsEngine.class.getName()).log(Level.SEVERE, null, ex); + } + } }else if(n instanceof ModuleImage){ ModuleImage mi = (ModuleImage)n; @@ -148,14 +160,20 @@ public void run() { drawModuleRange((Module)mi.getReference()); } }else{ - if(moduleRange != null){ try { - deSpawn(moduleRange); + // loops through all nodes, if it is an ModuleRange node, remove it. + Iterator i = parent.getAllNodes().iterator(); + while (i.hasNext()) + { + Node node = (Node)i.next(); + if ("ModuleRange".equals(node.getId())) { + deSpawn(node); + } + } moduleRange = null; } catch (InvalidObjectException ex) { Logger.getLogger(GraphicsEngine.class.getName()).log(Level.SEVERE, null, ex); } - } } @@ -232,8 +250,9 @@ public Ellipse drawModuleRange(Module module){ rangecircle.setStroke(Color.BLACK); rangecircle.setFill(null); rangecircle.setStrokeWidth(3); - parent.addNode(rangecircle); + rangecircle.setId("ModuleRange"); moduleRange = rangecircle; + parent.addNode(rangecircle); return rangecircle; } @@ -250,7 +269,6 @@ public void run() { lblPlayerHealth.setText(String.format("Health: %s", health)); lblPlayerBitcoins.setText(String.format("Bitcoins: %s", bitcoins)); } - }); } diff --git a/HackAttackFX/src/hackattackfx/Minion.java b/HackAttackFX/src/hackattackfx/Minion.java index a651be3..7346f57 100644 --- a/HackAttackFX/src/hackattackfx/Minion.java +++ b/HackAttackFX/src/hackattackfx/Minion.java @@ -3,12 +3,14 @@ import hackattackfx.GameEngine.OnExecuteTick; import hackattackfx.templates.MinionTemplate; import hackattackfx.enums.MinionType; +import hackattackfx.exceptions.InvalidObjectException; import hackattackfx.exceptions.UnsubscribeNonListenerException; import hackattackfx.interfaces.IMoveable; import java.awt.Point; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; +import javafx.scene.Node; /* * To change this license header, choose License Headers in Project Properties. @@ -86,6 +88,7 @@ public void onTick(long elapsedtime) { public void deactivate(){ try { GameEngine.getInstance().unsubscribeListener(tickListener); + } catch (UnsubscribeNonListenerException ex) { Logger.getLogger(Minion.class.getName()).log(Level.SEVERE, null, ex); } diff --git a/HackAttackFX/src/hackattackfx/Wave.java b/HackAttackFX/src/hackattackfx/Wave.java index 60cdc2b..ffcbaa6 100644 --- a/HackAttackFX/src/hackattackfx/Wave.java +++ b/HackAttackFX/src/hackattackfx/Wave.java @@ -156,6 +156,7 @@ private boolean removeMinion(Minion minion){ if (minionList.contains(minion)){ minionList.remove(minion); killedMinions.add(minion); + minion.deactivate(); return true; } else{