diff options
4 files changed, 47 insertions, 2 deletions
diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java index c4194d9..9c66a9c 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java | |||
@@ -106,7 +106,22 @@ public class MapViewGameState implements GameState { | |||
106 | 106 | ||
107 | if (letsMove) | 107 | if (letsMove) |
108 | { | 108 | { |
109 | hero.startMoving(toMove); | 109 | if (!hero.startMoving(toMove)) |
110 | { | ||
111 | for (LayerEvent ev : currentMap.getEvents()) | ||
112 | { | ||
113 | if (ev.getCalltime() == EventCallTime.OnHeroTouch) | ||
114 | { | ||
115 | if (ev.getLayer() == Layer.Middle) | ||
116 | { | ||
117 | if (Functions.isFacing(hero, ev)) | ||
118 | { | ||
119 | ev.getCallback().activate(ev.getCalltime()); | ||
120 | } | ||
121 | } | ||
122 | } | ||
123 | } | ||
124 | } | ||
110 | } | 125 | } |
111 | 126 | ||
112 | if ((Game.getKey().getKeyCode() == KeyEvent.VK_ENTER) || (Game.getKey().getKeyCode() == KeyEvent.VK_SPACE)) | 127 | if ((Game.getKey().getKeyCode() == KeyEvent.VK_ENTER) || (Game.getKey().getKeyCode() == KeyEvent.VK_SPACE)) |
@@ -143,6 +158,23 @@ public class MapViewGameState implements GameState { | |||
143 | if (hero.isMoving()) | 158 | if (hero.isMoving()) |
144 | { | 159 | { |
145 | hero.processMoving(); | 160 | hero.processMoving(); |
161 | |||
162 | if (!hero.isMoving()) | ||
163 | { | ||
164 | for (LayerEvent ev : currentMap.getEvents()) | ||
165 | { | ||
166 | if (ev.getCalltime() == EventCallTime.OnHeroTouch) | ||
167 | { | ||
168 | if (ev.getLayer() != Layer.Middle) | ||
169 | { | ||
170 | if (hero.getLocation().equals(ev.getLocation())) | ||
171 | { | ||
172 | ev.getCallback().activate(ev.getCalltime()); | ||
173 | } | ||
174 | } | ||
175 | } | ||
176 | } | ||
177 | } | ||
146 | } | 178 | } |
147 | 179 | ||
148 | for (LayerEvent ev : currentMap.getEvents()) | 180 | for (LayerEvent ev : currentMap.getEvents()) |
diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AbstractEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AbstractEvent.java index 7e8dd0d..483ce49 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AbstractEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AbstractEvent.java | |||
@@ -50,6 +50,11 @@ public abstract class AbstractEvent implements Event { | |||
50 | 50 | ||
51 | setDirection(toMove); | 51 | setDirection(toMove); |
52 | 52 | ||
53 | if (getDirection() != toMove) | ||
54 | { | ||
55 | return false; | ||
56 | } | ||
57 | |||
53 | if (!getParentMap().checkForCollision(this, toMove)) | 58 | if (!getParentMap().checkForCollision(this, toMove)) |
54 | { | 59 | { |
55 | setAnimationStep(2); | 60 | setAnimationStep(2); |
diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java index b31705d..530af6f 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java | |||
@@ -9,7 +9,6 @@ import com.fourisland.fourpuzzle.Layer; | |||
9 | import java.awt.Graphics; | 9 | import java.awt.Graphics; |
10 | import java.util.ArrayList; | 10 | import java.util.ArrayList; |
11 | import com.fourisland.fourpuzzle.Direction; | 11 | import com.fourisland.fourpuzzle.Direction; |
12 | import com.fourisland.fourpuzzle.gamestate.mapview.Map; | ||
13 | import com.fourisland.fourpuzzle.gamestate.mapview.event.graphic.BlankEventGraphic; | 12 | import com.fourisland.fourpuzzle.gamestate.mapview.event.graphic.BlankEventGraphic; |
14 | 13 | ||
15 | /** | 14 | /** |
diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/MoveEventThread.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/MoveEventThread.java index 2ee4dca..df4f4ee 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/MoveEventThread.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/MoveEventThread.java | |||
@@ -36,6 +36,15 @@ public class MoveEventThread implements Runnable { | |||
36 | 36 | ||
37 | public void run() | 37 | public void run() |
38 | { | 38 | { |
39 | while (ev.isMoving()) | ||
40 | { | ||
41 | try { | ||
42 | Thread.sleep(2); | ||
43 | } catch (InterruptedException ex) { | ||
44 | Logger.getLogger(MoveEventThread.class.getName()).log(Level.SEVERE, null, ex); | ||
45 | } | ||
46 | } | ||
47 | |||
39 | events.add(ev); | 48 | events.add(ev); |
40 | 49 | ||
41 | MoveEventThread.countMoveEventThreads++; | 50 | MoveEventThread.countMoveEventThreads++; |