diff options
Diffstat (limited to 'src/com')
6 files changed, 133 insertions, 26 deletions
| diff --git a/src/com/fourisland/fourpuzzle/Direction.java b/src/com/fourisland/fourpuzzle/Direction.java index 4742521..4fa0908 100644 --- a/src/com/fourisland/fourpuzzle/Direction.java +++ b/src/com/fourisland/fourpuzzle/Direction.java | |||
| @@ -10,30 +10,90 @@ package com.fourisland.fourpuzzle; | |||
| 10 | * @author hatkirby | 10 | * @author hatkirby |
| 11 | */ | 11 | */ |
| 12 | public enum Direction { | 12 | public enum Direction { |
| 13 | North, | 13 | North |
| 14 | East, | 14 | { |
| 15 | South, | 15 | public Direction opposite() |
| 16 | West; | 16 | { |
| 17 | return Direction.South; | ||
| 18 | } | ||
| 19 | |||
| 20 | public Direction left() | ||
| 21 | { | ||
| 22 | return Direction.West; | ||
| 23 | } | ||
| 24 | |||
| 25 | public Direction right() | ||
| 26 | { | ||
| 27 | return Direction.East; | ||
| 28 | } | ||
| 29 | }, | ||
| 30 | East | ||
| 31 | { | ||
| 32 | public Direction opposite() | ||
| 33 | { | ||
| 34 | return Direction.West; | ||
| 35 | } | ||
| 36 | |||
| 37 | public Direction left() | ||
| 38 | { | ||
| 39 | return Direction.North; | ||
| 40 | } | ||
| 41 | |||
| 42 | public Direction right() | ||
| 43 | { | ||
| 44 | return Direction.South; | ||
| 45 | } | ||
| 46 | }, | ||
| 47 | South | ||
| 48 | { | ||
| 49 | public Direction opposite() | ||
| 50 | { | ||
| 51 | return Direction.North; | ||
| 52 | } | ||
| 53 | |||
| 54 | public Direction left() | ||
| 55 | { | ||
| 56 | return Direction.East; | ||
| 57 | } | ||
| 58 | |||
| 59 | public Direction right() | ||
| 60 | { | ||
| 61 | return Direction.West; | ||
| 62 | } | ||
| 63 | }, | ||
| 64 | West | ||
| 65 | { | ||
| 66 | public Direction opposite() | ||
| 67 | { | ||
| 68 | return Direction.East; | ||
| 69 | } | ||
| 70 | |||
| 71 | public Direction left() | ||
| 72 | { | ||
| 73 | return Direction.South; | ||
| 74 | } | ||
| 75 | |||
| 76 | public Direction right() | ||
| 77 | { | ||
| 78 | return Direction.North; | ||
| 79 | } | ||
| 80 | }; | ||
| 17 | 81 | ||
| 18 | /** | 82 | /** |
| 19 | * TODO Find a way to serve the inverse of a Direction without using a | 83 | * Returns the direction opposite from the current one |
| 20 | * switch, which is apparently bad practice | 84 | * @return A Direction representing the wanted direction |
| 21 | */ | 85 | */ |
| 86 | public abstract Direction opposite(); | ||
| 22 | 87 | ||
| 23 | /** | 88 | /** |
| 24 | * Returns the direction opposite from the current one | 89 | * Returns the direction counterclockwise from the current one |
| 25 | * @return A Direction representing the opposite direction | 90 | * @return A Direction representing the wanted direction |
| 26 | */ | 91 | */ |
| 27 | public Direction oppositeDirection() | 92 | public abstract Direction left(); |
| 28 | { | 93 | |
| 29 | switch (this) | 94 | /** |
| 30 | { | 95 | * Returns the direction clockwise from the current one |
| 31 | case North: return Direction.South; | 96 | * @return A Direction representing the wanted direction |
| 32 | case West: return Direction.East; | 97 | */ |
| 33 | case South: return Direction.North; | 98 | public abstract Direction right(); |
| 34 | case East: return Direction.West; | ||
| 35 | } | ||
| 36 | |||
| 37 | return null; | ||
| 38 | } | ||
| 39 | } | 99 | } |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java index 3283da5..3acfff4 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java | |||
| @@ -134,7 +134,7 @@ public class MapViewGameState implements GameState { | |||
| 134 | { | 134 | { |
| 135 | if (Functions.isFacing(hero, ev)) | 135 | if (Functions.isFacing(hero, ev)) |
| 136 | { | 136 | { |
| 137 | ev.setDirection(hero.getDirection().oppositeDirection()); | 137 | ev.setDirection(hero.getDirection().opposite()); |
| 138 | ev.getCallback().activate(ev.getCalltime()); | 138 | ev.getCallback().activate(ev.getCalltime()); |
| 139 | } | 139 | } |
| 140 | } else { | 140 | } else { |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AbstractEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AbstractEvent.java index 483ce49..2933fff 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AbstractEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AbstractEvent.java | |||
| @@ -78,7 +78,7 @@ public abstract class AbstractEvent implements Event { | |||
| 78 | } else if (moveTimer == 0) | 78 | } else if (moveTimer == 0) |
| 79 | { | 79 | { |
| 80 | setAnimationStep(1); | 80 | setAnimationStep(1); |
| 81 | moving = false; | 81 | setMoving(false); |
| 82 | 82 | ||
| 83 | if (getDirection() == Direction.North) | 83 | if (getDirection() == Direction.North) |
| 84 | { | 84 | { |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AnimationType.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AnimationType.java index 7824470..4c3aeb9 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AnimationType.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AnimationType.java | |||
| @@ -46,10 +46,44 @@ public enum AnimationType { | |||
| 46 | /** | 46 | /** |
| 47 | * An AnimationType that does not allow the Event to turn or animate. | 47 | * An AnimationType that does not allow the Event to turn or animate. |
| 48 | */ | 48 | */ |
| 49 | FixedGraphic(false, false); | 49 | FixedGraphic(false, false), |
| 50 | /** | ||
| 51 | * An AnimationType that is identical to CommonWithoutStepping except that | ||
| 52 | * it causes the Event in question to continually rotate counterclockwise. | ||
| 53 | */ | ||
| 54 | TurnLeft(true, true) | ||
| 55 | { | ||
| 56 | Interval in = Interval.createTickInterval(2); | ||
| 57 | |||
| 58 | @Override | ||
| 59 | public void tick(PossibleEvent pe) | ||
| 60 | { | ||
| 61 | if (in.isElapsed()) | ||
| 62 | { | ||
| 63 | pe.setDirection(pe.getDirection().left()); | ||
| 64 | } | ||
| 65 | } | ||
| 66 | }, | ||
| 67 | /** | ||
| 68 | * An AnimationType that is identical to CommonWithoutStepping except that | ||
| 69 | * it causes the Event in question to continually rotate clockwise. | ||
| 70 | */ | ||
| 71 | TurnRight(true, true) | ||
| 72 | { | ||
| 73 | Interval in = Interval.createTickInterval(2); | ||
| 74 | |||
| 75 | @Override | ||
| 76 | public void tick(PossibleEvent pe) | ||
| 77 | { | ||
| 78 | if (in.isElapsed()) | ||
| 79 | { | ||
| 80 | pe.setDirection(pe.getDirection().right()); | ||
| 81 | } | ||
| 82 | } | ||
| 83 | }; | ||
| 50 | 84 | ||
| 51 | private boolean canTurn; | 85 | private final boolean canTurn; |
| 52 | private boolean canStep; | 86 | private final boolean canStep; |
| 53 | private AnimationType(boolean canTurn, boolean canStep) | 87 | private AnimationType(boolean canTurn, boolean canStep) |
| 54 | { | 88 | { |
| 55 | this.canTurn = canTurn; | 89 | this.canTurn = canTurn; |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java index e57d7f8..3c826cb 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/LayerEvent.java | |||
| @@ -132,4 +132,11 @@ public class LayerEvent extends AbstractEvent implements Event { | |||
| 132 | return getPossibleEvent().getAnimationStep(); | 132 | return getPossibleEvent().getAnimationStep(); |
| 133 | } | 133 | } |
| 134 | 134 | ||
| 135 | @Override | ||
| 136 | public void setMoving(boolean moving) | ||
| 137 | { | ||
| 138 | super.setMoving(moving); | ||
| 139 | getPossibleEvent().setMoving(moving); | ||
| 140 | } | ||
| 141 | |||
| 135 | } \ No newline at end of file | 142 | } \ No newline at end of file |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/PossibleEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/PossibleEvent.java index f31dcaf..a8c3a51 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/PossibleEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/PossibleEvent.java | |||
| @@ -119,6 +119,12 @@ public class PossibleEvent { | |||
| 119 | return movement; | 119 | return movement; |
| 120 | } | 120 | } |
| 121 | 121 | ||
| 122 | private boolean moving = false; | ||
| 123 | void setMoving(boolean moving) | ||
| 124 | { | ||
| 125 | this.moving = moving; | ||
| 126 | } | ||
| 127 | |||
| 122 | Direction getDirection() | 128 | Direction getDirection() |
| 123 | { | 129 | { |
| 124 | return direction; | 130 | return direction; |
| @@ -126,7 +132,7 @@ public class PossibleEvent { | |||
| 126 | 132 | ||
| 127 | void setDirection(Direction direction) | 133 | void setDirection(Direction direction) |
| 128 | { | 134 | { |
| 129 | if (animation.canTurn()) | 135 | if (animation.canTurn() && !moving) |
| 130 | { | 136 | { |
| 131 | this.direction = direction; | 137 | this.direction = direction; |
| 132 | graphic.setDirection(direction); | 138 | graphic.setDirection(direction); |
