diff options
| author | Starla Insigna <hatkirby@fourisland.com> | 2009-01-19 16:22:50 -0500 |
|---|---|---|
| committer | Starla Insigna <hatkirby@fourisland.com> | 2009-01-19 16:22:50 -0500 |
| commit | 80fd704e66e98d70e98da977b01568b7813d80e9 (patch) | |
| tree | 8ea16d1f3d37a212c42025e3fbc86d1f4c15545f /src/com/fourisland/fourpuzzle/gamestate/mapview/event | |
| parent | 69b495c392bffe96dab97306a42466edd4b2474e (diff) | |
| download | fourpuzzle-80fd704e66e98d70e98da977b01568b7813d80e9.tar.gz fourpuzzle-80fd704e66e98d70e98da977b01568b7813d80e9.tar.bz2 fourpuzzle-80fd704e66e98d70e98da977b01568b7813d80e9.zip | |
Fixed MoveEvent bug
Diffstat (limited to 'src/com/fourisland/fourpuzzle/gamestate/mapview/event')
5 files changed, 81 insertions, 12 deletions
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventCall.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventCall.java index daca678..3bbde17 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventCall.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventCall.java | |||
| @@ -22,4 +22,9 @@ public abstract class EventCall extends SpecialEvent implements Runnable { | |||
| 22 | 22 | ||
| 23 | public abstract void run(); | 23 | public abstract void run(); |
| 24 | 24 | ||
| 25 | public void activate() | ||
| 26 | { | ||
| 27 | new Thread(this, "Special Event").start(); | ||
| 28 | } | ||
| 29 | |||
| 25 | } | 30 | } |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventList.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventList.java new file mode 100644 index 0000000..a10aadc --- /dev/null +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventList.java | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | /* | ||
| 2 | * To change this template, choose Tools | Templates | ||
| 3 | * and open the template in the editor. | ||
| 4 | */ | ||
| 5 | |||
| 6 | package com.fourisland.fourpuzzle.gamestate.mapview.event; | ||
| 7 | |||
| 8 | import java.util.Vector; | ||
| 9 | |||
| 10 | /** | ||
| 11 | * | ||
| 12 | * @author hatkirby | ||
| 13 | */ | ||
| 14 | public class EventList extends Vector<LayerEvent> { | ||
| 15 | |||
| 16 | @Override | ||
| 17 | public boolean add(LayerEvent o) | ||
| 18 | { | ||
| 19 | if (o.getLabel().equals("Unlabelled")) | ||
| 20 | { | ||
| 21 | o.setLabel("Event" + (this.size()+1)); | ||
| 22 | } else { | ||
| 23 | if ( (o.getLabel().equals("Hero")) || | ||
| 24 | (o.getLabel().equals("Unlabelled")) || | ||
| 25 | (o.getLabel().equals(""))) | ||
| 26 | { | ||
| 27 | return false; | ||
| 28 | } | ||
| 29 | |||
| 30 | for (Event ev : this) | ||
| 31 | { | ||
| 32 | if (ev.getLabel().equals(o.getLabel())) | ||
| 33 | { | ||
| 34 | return false; | ||
| 35 | } | ||
| 36 | } | ||
| 37 | } | ||
| 38 | |||
| 39 | return super.add(o); | ||
| 40 | } | ||
| 41 | |||
| 42 | } | ||
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java index 92cfd54..b67f2aa 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java | |||
| @@ -27,6 +27,7 @@ public class LayerEvent implements Event { | |||
| 27 | { | 27 | { |
| 28 | location = new Point(x,y); | 28 | location = new Point(x,y); |
| 29 | events = new ArrayList<PossibleEvent>(); | 29 | events = new ArrayList<PossibleEvent>(); |
| 30 | label = "Unlabelled"; | ||
| 30 | } | 31 | } |
| 31 | 32 | ||
| 32 | /** Create a new Event instance | 33 | /** Create a new Event instance |
| @@ -204,4 +205,8 @@ public class LayerEvent implements Event { | |||
| 204 | return getPossibleEvent().getCallback(); | 205 | return getPossibleEvent().getCallback(); |
| 205 | } | 206 | } |
| 206 | 207 | ||
| 207 | } | 208 | public void setLabel(String string) { |
| 209 | this.label = string; | ||
| 210 | } | ||
| 211 | |||
| 212 | } \ No newline at end of file | ||
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java index 26f89c7..121bbe8 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java | |||
| @@ -6,10 +6,9 @@ | |||
| 6 | package com.fourisland.fourpuzzle.gamestate.mapview.event; | 6 | package com.fourisland.fourpuzzle.gamestate.mapview.event; |
| 7 | 7 | ||
| 8 | import com.fourisland.fourpuzzle.*; | 8 | import com.fourisland.fourpuzzle.*; |
| 9 | import com.fourisland.fourpuzzle.gamestate.mapview.MapViewGameState; | ||
| 9 | import com.fourisland.fourpuzzle.gamestate.mapview.event.specialmove.MoveEvent; | 10 | import com.fourisland.fourpuzzle.gamestate.mapview.event.specialmove.MoveEvent; |
| 10 | import com.fourisland.fourpuzzle.gamestate.mapview.event.specialmove.MoveEventThread; | 11 | import com.fourisland.fourpuzzle.gamestate.mapview.event.specialmove.MoveEventThread; |
| 11 | import java.util.concurrent.BrokenBarrierException; | ||
| 12 | import java.util.concurrent.CyclicBarrier; | ||
| 13 | import java.util.logging.Level; | 12 | import java.util.logging.Level; |
| 14 | import java.util.logging.Logger; | 13 | import java.util.logging.Logger; |
| 15 | 14 | ||
| @@ -102,18 +101,18 @@ public class SpecialEvent { | |||
| 102 | */ | 101 | */ |
| 103 | public void MoveEvent(MoveEvent[] actions) | 102 | public void MoveEvent(MoveEvent[] actions) |
| 104 | { | 103 | { |
| 105 | MoveEvent(actions, Game.getHeroEvent()); | 104 | new Thread(new MoveEventThread(Game.getHeroEvent(), actions)).start(); |
| 106 | } | 105 | } |
| 107 | 106 | ||
| 108 | /** | 107 | /** |
| 109 | * Performs actions on an event | 108 | * Performs actions on an event |
| 110 | * | 109 | * |
| 111 | * @param actions An array of MoveEvents to perform on the event | 110 | * @param actions An array of MoveEvents to perform on the event |
| 112 | * @param ev The event to act upon | 111 | * @param label The label of the event to act upon |
| 113 | */ | 112 | */ |
| 114 | public void MoveEvent(MoveEvent[] actions, Event ev) | 113 | public void MoveEvent(MoveEvent[] actions, String label) |
| 115 | { | 114 | { |
| 116 | new Thread(new MoveEventThread(ev, actions)).start(); | 115 | new Thread(new MoveEventThread(((MapViewGameState) Game.getGameState()).getCurrentMap().getEvent(label), actions)).start(); |
| 117 | } | 116 | } |
| 118 | 117 | ||
| 119 | /** | 118 | /** |
| 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 4c16197..d6971f3 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/MoveEventThread.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/MoveEventThread.java | |||
| @@ -5,9 +5,12 @@ | |||
| 5 | 5 | ||
| 6 | package com.fourisland.fourpuzzle.gamestate.mapview.event.specialmove; | 6 | package com.fourisland.fourpuzzle.gamestate.mapview.event.specialmove; |
| 7 | 7 | ||
| 8 | import com.fourisland.fourpuzzle.Game; | ||
| 8 | import com.fourisland.fourpuzzle.gamestate.mapview.event.Event; | 9 | import com.fourisland.fourpuzzle.gamestate.mapview.event.Event; |
| 10 | import com.fourisland.fourpuzzle.gamestate.mapview.event.LayerEvent; | ||
| 11 | import java.util.List; | ||
| 12 | import java.util.Vector; | ||
| 9 | import java.util.concurrent.CountDownLatch; | 13 | import java.util.concurrent.CountDownLatch; |
| 10 | import java.util.concurrent.CyclicBarrier; | ||
| 11 | import java.util.logging.Level; | 14 | import java.util.logging.Level; |
| 12 | import java.util.logging.Logger; | 15 | import java.util.logging.Logger; |
| 13 | 16 | ||
| @@ -19,6 +22,7 @@ public class MoveEventThread implements Runnable { | |||
| 19 | 22 | ||
| 20 | public static volatile CountDownLatch moveEventWait = new CountDownLatch(0); | 23 | public static volatile CountDownLatch moveEventWait = new CountDownLatch(0); |
| 21 | public static volatile int countMoveEventThreads = 0; | 24 | public static volatile int countMoveEventThreads = 0; |
| 25 | public static volatile List<Event> events = new Vector<Event>(); | ||
| 22 | 26 | ||
| 23 | Event ev; | 27 | Event ev; |
| 24 | MoveEvent[] actions; | 28 | MoveEvent[] actions; |
| @@ -29,22 +33,36 @@ public class MoveEventThread implements Runnable { | |||
| 29 | this.actions = actions; | 33 | this.actions = actions; |
| 30 | } | 34 | } |
| 31 | 35 | ||
| 32 | public void run() { | 36 | public void run() |
| 37 | { | ||
| 38 | events.add(ev); | ||
| 39 | |||
| 33 | MoveEventThread.countMoveEventThreads++; | 40 | MoveEventThread.countMoveEventThreads++; |
| 34 | moveEventWait = new CountDownLatch(countMoveEventThreads); | 41 | moveEventWait = new CountDownLatch(countMoveEventThreads); |
| 35 | 42 | ||
| 36 | int i=0; | 43 | for (MoveEvent action : actions) |
| 37 | for (i=0;i<actions.length;i++) | ||
| 38 | { | 44 | { |
| 39 | try { | 45 | try { |
| 40 | actions[i].doAction(ev); | 46 | action.doAction(ev); |
| 41 | } catch (Exception ex) { | 47 | } catch (Exception ex) { |
| 42 | Logger.getLogger(MoveEventThread.class.getName()).log(Level.SEVERE, null, ex); | 48 | Logger.getLogger(MoveEventThread.class.getName()).log(Level.SEVERE, null, ex); |
| 43 | } | 49 | } |
| 44 | } | 50 | } |
| 45 | 51 | ||
| 52 | events.remove(ev); | ||
| 53 | |||
| 46 | MoveEventThread.countMoveEventThreads--; | 54 | MoveEventThread.countMoveEventThreads--; |
| 47 | moveEventWait.countDown(); | 55 | moveEventWait.countDown(); |
| 48 | } | 56 | } |
| 57 | |||
| 58 | public static boolean isHeroMoving() | ||
| 59 | { | ||
| 60 | return (events.contains(Game.getHeroEvent())); | ||
| 61 | } | ||
| 62 | |||
| 63 | public static boolean isOtherMoving(LayerEvent event) | ||
| 64 | { | ||
| 65 | return (events.contains(event)); | ||
| 66 | } | ||
| 49 | 67 | ||
| 50 | } | 68 | } |
