summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java34
-rw-r--r--src/com/fourisland/fourpuzzle/gamestate/mapview/event/AbstractEvent.java5
-rw-r--r--src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java1
-rw-r--r--src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/MoveEventThread.java9
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;
9import java.awt.Graphics; 9import java.awt.Graphics;
10import java.util.ArrayList; 10import java.util.ArrayList;
11import com.fourisland.fourpuzzle.Direction; 11import com.fourisland.fourpuzzle.Direction;
12import com.fourisland.fourpuzzle.gamestate.mapview.Map;
13import com.fourisland.fourpuzzle.gamestate.mapview.event.graphic.BlankEventGraphic; 12import 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++;