diff options
Diffstat (limited to 'src/com')
3 files changed, 124 insertions, 55 deletions
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java index 530af6f..e57d7f8 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java | |||
| @@ -10,6 +10,7 @@ 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.event.graphic.BlankEventGraphic; | 12 | import com.fourisland.fourpuzzle.gamestate.mapview.event.graphic.BlankEventGraphic; |
| 13 | import com.fourisland.fourpuzzle.gamestate.mapview.event.precondition.Precondition; | ||
| 13 | 14 | ||
| 14 | /** | 15 | /** |
| 15 | * | 16 | * |
| @@ -50,24 +51,22 @@ public class LayerEvent extends AbstractEvent implements Event { | |||
| 50 | private ArrayList<PossibleEvent> events; | 51 | private ArrayList<PossibleEvent> events; |
| 51 | public void addEvent(PossibleEvent pe) | 52 | public void addEvent(PossibleEvent pe) |
| 52 | { | 53 | { |
| 53 | events.add(pe); | 54 | events.add(0, pe); |
| 54 | } | 55 | } |
| 55 | 56 | ||
| 56 | private PossibleEvent getPossibleEvent() | 57 | private PossibleEvent getPossibleEvent() |
| 57 | { | 58 | { |
| 58 | int i; | 59 | for (PossibleEvent event : events) |
| 59 | for (i=(events.size()-1);i>-1;i--) | ||
| 60 | { | 60 | { |
| 61 | boolean good = true; | 61 | boolean good = true; |
| 62 | int j; | 62 | for (Precondition pre : event.getPreconditions()) |
| 63 | for (j=0;j<events.get(i).preconditions();j++) | ||
| 64 | { | 63 | { |
| 65 | good = (good ? events.get(i).getPrecondition(j).match() : false); | 64 | good = (good ? pre.match() : false); |
| 66 | } | 65 | } |
| 67 | 66 | ||
| 68 | if (good) | 67 | if (good) |
| 69 | { | 68 | { |
| 70 | return events.get(i); | 69 | return event; |
| 71 | } | 70 | } |
| 72 | } | 71 | } |
| 73 | 72 | ||
| @@ -79,7 +78,7 @@ public class LayerEvent extends AbstractEvent implements Event { | |||
| 79 | PossibleEvent toDraw = getPossibleEvent(); | 78 | PossibleEvent toDraw = getPossibleEvent(); |
| 80 | if (!(toDraw.getGraphic() instanceof BlankEventGraphic)) | 79 | if (!(toDraw.getGraphic() instanceof BlankEventGraphic)) |
| 81 | { | 80 | { |
| 82 | g.drawImage(toDraw.getImage(), getRenderX(), getRenderY(), null); | 81 | g.drawImage(toDraw.getGraphic().getImage(), getRenderX(), getRenderY(), null); |
| 83 | } | 82 | } |
| 84 | } | 83 | } |
| 85 | 84 | ||
| @@ -97,6 +96,7 @@ public class LayerEvent extends AbstractEvent implements Event { | |||
| 97 | { | 96 | { |
| 98 | return getPossibleEvent().getDirection(); | 97 | return getPossibleEvent().getDirection(); |
| 99 | } | 98 | } |
| 99 | |||
| 100 | public void setDirection(Direction direction) | 100 | public void setDirection(Direction direction) |
| 101 | { | 101 | { |
| 102 | getPossibleEvent().setDirection(direction); | 102 | getPossibleEvent().setDirection(direction); |
| @@ -117,7 +117,8 @@ public class LayerEvent extends AbstractEvent implements Event { | |||
| 117 | return getPossibleEvent().getCallback(); | 117 | return getPossibleEvent().getCallback(); |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | public void setLabel(String string) { | 120 | public void setLabel(String string) |
| 121 | { | ||
| 121 | this.label = string; | 122 | this.label = string; |
| 122 | } | 123 | } |
| 123 | 124 | ||
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/PossibleEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/PossibleEvent.java index 5ba887b..9deb0b1 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/PossibleEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/PossibleEvent.java | |||
| @@ -13,10 +13,9 @@ import com.fourisland.fourpuzzle.gamestate.mapview.event.graphic.BlankEventGraph | |||
| 13 | import com.fourisland.fourpuzzle.gamestate.mapview.event.graphic.EventGraphic; | 13 | import com.fourisland.fourpuzzle.gamestate.mapview.event.graphic.EventGraphic; |
| 14 | import com.fourisland.fourpuzzle.gamestate.mapview.event.movement.MovementType; | 14 | import com.fourisland.fourpuzzle.gamestate.mapview.event.movement.MovementType; |
| 15 | import com.fourisland.fourpuzzle.gamestate.mapview.event.movement.StayStillMovementType; | 15 | import com.fourisland.fourpuzzle.gamestate.mapview.event.movement.StayStillMovementType; |
| 16 | import java.awt.image.BufferedImage; | ||
| 17 | 16 | ||
| 18 | /** | 17 | /** |
| 19 | *w | 18 | * |
| 20 | * @author hatkirby | 19 | * @author hatkirby |
| 21 | */ | 20 | */ |
| 22 | public class PossibleEvent { | 21 | public class PossibleEvent { |
| @@ -27,32 +26,80 @@ public class PossibleEvent { | |||
| 27 | private MovementType movement; | 26 | private MovementType movement; |
| 28 | private EventCallTime calltime; | 27 | private EventCallTime calltime; |
| 29 | private EventCall callback; | 28 | private EventCall callback; |
| 30 | private ArrayList<Precondition> preconditions; | 29 | private ArrayList<Precondition> preconditions = new ArrayList<Precondition>(); |
| 31 | 30 | ||
| 32 | private Direction direction; | 31 | private Direction direction = Direction.South; |
| 33 | private int animationStep; | 32 | private int animationStep = 1; |
| 34 | 33 | ||
| 35 | public PossibleEvent() | 34 | PossibleEvent() |
| 36 | { | 35 | { |
| 37 | graphic = new BlankEventGraphic(); | 36 | this(new Builder()); |
| 38 | layer = Layer.Below; | ||
| 39 | animation = AnimationType.CommonWithStepping; | ||
| 40 | movement = new StayStillMovementType(); | ||
| 41 | calltime = EventCallTime.PushKey; | ||
| 42 | callback = EventCall.getEmptyEventCall(); | ||
| 43 | preconditions = new ArrayList<Precondition>(); | ||
| 44 | |||
| 45 | direction = Direction.South; | ||
| 46 | animationStep = 1; | ||
| 47 | } | 37 | } |
| 38 | |||
| 39 | public static class Builder | ||
| 40 | { | ||
| 41 | private EventGraphic graphic = new BlankEventGraphic(); | ||
| 42 | private Layer layer = Layer.Below; | ||
| 43 | private AnimationType animation = AnimationType.CommonWithoutStepping; | ||
| 44 | private MovementType movement = new StayStillMovementType(); | ||
| 45 | private EventCallTime calltime = EventCallTime.PushKey; | ||
| 46 | private EventCall callback = EventCall.getEmptyEventCall(); | ||
| 47 | |||
| 48 | public Builder graphic(EventGraphic graphic) | ||
| 49 | { | ||
| 50 | this.graphic = graphic; | ||
| 51 | return this; | ||
| 52 | } | ||
| 53 | |||
| 54 | public Builder layer(Layer layer) | ||
| 55 | { | ||
| 56 | this.layer = layer; | ||
| 57 | return this; | ||
| 58 | } | ||
| 59 | |||
| 60 | public Builder animation(AnimationType animation) | ||
| 61 | { | ||
| 62 | this.animation = animation; | ||
| 63 | return this; | ||
| 64 | } | ||
| 65 | |||
| 66 | public Builder movement(MovementType movement) | ||
| 67 | { | ||
| 68 | this.movement = movement; | ||
| 69 | return this; | ||
| 70 | } | ||
| 71 | |||
| 72 | public Builder calltime(EventCallTime calltime) | ||
| 73 | { | ||
| 74 | this.calltime = calltime; | ||
| 75 | return this; | ||
| 76 | } | ||
| 77 | |||
| 78 | public Builder callback(EventCall callback) | ||
| 79 | { | ||
| 80 | this.callback = callback; | ||
| 81 | return this; | ||
| 82 | } | ||
| 48 | 83 | ||
| 49 | public BufferedImage getImage() | 84 | public PossibleEvent build() |
| 50 | { | 85 | { |
| 51 | return graphic.getImage(); | 86 | return new PossibleEvent(this); |
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 90 | private PossibleEvent(Builder builder) | ||
| 91 | { | ||
| 92 | graphic = builder.graphic; | ||
| 93 | layer = builder.layer; | ||
| 94 | animation = builder.animation; | ||
| 95 | movement = builder.movement; | ||
| 96 | calltime = builder.calltime; | ||
| 97 | callback = builder.callback; | ||
| 52 | } | 98 | } |
| 53 | 99 | ||
| 54 | private boolean aSLC = false; | 100 | private boolean aSLC = false; |
| 55 | public EventGraphic getGraphic() { | 101 | EventGraphic getGraphic() |
| 102 | { | ||
| 56 | if (animation.isAlwaysStepping()) | 103 | if (animation.isAlwaysStepping()) |
| 57 | { | 104 | { |
| 58 | if (aSLC) | 105 | if (aSLC) |
| @@ -72,39 +119,47 @@ public class PossibleEvent { | |||
| 72 | return graphic; | 119 | return graphic; |
| 73 | } | 120 | } |
| 74 | 121 | ||
| 75 | public void setGraphic(EventGraphic graphic) { | 122 | void setGraphic(EventGraphic graphic) |
| 123 | { | ||
| 76 | this.graphic = graphic; | 124 | this.graphic = graphic; |
| 77 | } | 125 | } |
| 78 | 126 | ||
| 79 | public Layer getLayer() { | 127 | Layer getLayer() |
| 128 | { | ||
| 80 | return layer; | 129 | return layer; |
| 81 | } | 130 | } |
| 82 | 131 | ||
| 83 | public void setLayer(Layer layer) { | 132 | void setLayer(Layer layer) |
| 133 | { | ||
| 84 | this.layer = layer; | 134 | this.layer = layer; |
| 85 | } | 135 | } |
| 86 | 136 | ||
| 87 | public AnimationType getAnimation() { | 137 | AnimationType getAnimation() |
| 138 | { | ||
| 88 | return animation; | 139 | return animation; |
| 89 | } | 140 | } |
| 90 | 141 | ||
| 91 | public void setAnimation(AnimationType animation) { | 142 | void setAnimation(AnimationType animation) |
| 143 | { | ||
| 92 | this.animation = animation; | 144 | this.animation = animation; |
| 93 | } | 145 | } |
| 94 | 146 | ||
| 95 | public MovementType getMovement() { | 147 | MovementType getMovement() |
| 148 | { | ||
| 96 | return movement; | 149 | return movement; |
| 97 | } | 150 | } |
| 98 | 151 | ||
| 99 | public void setMovement(MovementType movement) { | 152 | void setMovement(MovementType movement) |
| 153 | { | ||
| 100 | this.movement = movement; | 154 | this.movement = movement; |
| 101 | } | 155 | } |
| 102 | 156 | ||
| 103 | public Direction getDirection() { | 157 | Direction getDirection() |
| 158 | { | ||
| 104 | return direction; | 159 | return direction; |
| 105 | } | 160 | } |
| 106 | 161 | ||
| 107 | public void setDirection(Direction direction) | 162 | void setDirection(Direction direction) |
| 108 | { | 163 | { |
| 109 | if (animation.canTurn()) | 164 | if (animation.canTurn()) |
| 110 | { | 165 | { |
| @@ -113,11 +168,13 @@ public class PossibleEvent { | |||
| 113 | } | 168 | } |
| 114 | } | 169 | } |
| 115 | 170 | ||
| 116 | public int getAnimationStep() { | 171 | int getAnimationStep() |
| 172 | { | ||
| 117 | return animationStep; | 173 | return animationStep; |
| 118 | } | 174 | } |
| 119 | 175 | ||
| 120 | public void setAnimationStep(int animationStep) { | 176 | void setAnimationStep(int animationStep) |
| 177 | { | ||
| 121 | if (animation.canStep()) | 178 | if (animation.canStep()) |
| 122 | { | 179 | { |
| 123 | this.animationStep = animationStep; | 180 | this.animationStep = animationStep; |
| @@ -125,37 +182,48 @@ public class PossibleEvent { | |||
| 125 | } | 182 | } |
| 126 | } | 183 | } |
| 127 | 184 | ||
| 185 | /** | ||
| 186 | * Add a precondition to this PossibleEvent | ||
| 187 | * | ||
| 188 | * PossibleEvents are different versions of a single LayerEvent. A | ||
| 189 | * LayerEvent may have many PossibleEvents, or none at all. The way it | ||
| 190 | * determines which PossibleEvent is current is that each PossibleEvent | ||
| 191 | * (possibly) has a set of <b>Precondition</b>s, objects that describe | ||
| 192 | * certain situations. If a PossibleEvent's Preconditions are all fulfilled, | ||
| 193 | * it is chosen as the active one. If there are more than one PossibleEvents | ||
| 194 | * with completely fulfilled Preconditions (that includes having no | ||
| 195 | * Preconditions at all), the later one is the one chosen as current. | ||
| 196 | * | ||
| 197 | * @param precondition The Precondition to add to the list | ||
| 198 | */ | ||
| 128 | public void addPrecondition(Precondition precondition) | 199 | public void addPrecondition(Precondition precondition) |
| 129 | { | 200 | { |
| 130 | preconditions.add(precondition); | 201 | preconditions.add(precondition); |
| 131 | } | 202 | } |
| 132 | 203 | ||
| 133 | public Precondition getPrecondition(int i) | 204 | ArrayList<Precondition> getPreconditions() |
| 134 | { | 205 | { |
| 135 | return preconditions.get(i); | 206 | return preconditions; |
| 136 | } | ||
| 137 | |||
| 138 | public int preconditions() | ||
| 139 | { | ||
| 140 | return preconditions.size(); | ||
| 141 | } | 207 | } |
| 142 | 208 | ||
| 143 | public EventCall getCallback() | 209 | EventCall getCallback() |
| 144 | { | 210 | { |
| 145 | return callback; | 211 | return callback; |
| 146 | } | 212 | } |
| 147 | 213 | ||
| 148 | public void setCallback(EventCall callback) | 214 | void setCallback(EventCall callback) |
| 149 | { | 215 | { |
| 150 | this.callback = callback; | 216 | this.callback = callback; |
| 151 | } | 217 | } |
| 152 | 218 | ||
| 153 | public EventCallTime getCalltime() { | 219 | EventCallTime getCalltime() |
| 220 | { | ||
| 154 | return calltime; | 221 | return calltime; |
| 155 | } | 222 | } |
| 156 | 223 | ||
| 157 | public void setCalltime(EventCallTime calltime) { | 224 | void setCalltime(EventCallTime calltime) |
| 225 | { | ||
| 158 | this.calltime = calltime; | 226 | this.calltime = calltime; |
| 159 | } | 227 | } |
| 160 | 228 | ||
| 161 | } | 229 | } \ No newline at end of file |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/precondition/Precondition.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/precondition/Precondition.java index 46cdcd2..602bdf5 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/precondition/Precondition.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/precondition/Precondition.java | |||
| @@ -10,8 +10,8 @@ package com.fourisland.fourpuzzle.gamestate.mapview.event.precondition; | |||
| 10 | * of its (possibly many) <b>PossibleEvent</b>s is active. PossibleEvents can | 10 | * of its (possibly many) <b>PossibleEvent</b>s is active. PossibleEvents can |
| 11 | * have Preconditions attached to them and when all Preconditions are fulfilled | 11 | * have Preconditions attached to them and when all Preconditions are fulfilled |
| 12 | * (determined by the <code>true</code> return value from <b>match()</b>) and | 12 | * (determined by the <code>true</code> return value from <b>match()</b>) and |
| 13 | * there are not fulfilled PossibleEvents later in the queue, said PossibleEvent | 13 | * there aren't any fulfilled PossibleEvents later in the queue, said |
| 14 | * will be active. | 14 | * PossibleEvent will be active. |
| 15 | * | 15 | * |
| 16 | * @author hatkirby | 16 | * @author hatkirby |
| 17 | */ | 17 | */ |
