diff options
| author | Starla Insigna <hatkirby@fourisland.com> | 2009-03-19 22:58:24 -0400 |
|---|---|---|
| committer | Starla Insigna <hatkirby@fourisland.com> | 2009-03-19 22:58:24 -0400 |
| commit | fc3afd1d6460b2aa453167498979bbf7a636ef45 (patch) | |
| tree | 390d5003901ec8b6e951dae2daedb485033c8b6e /src | |
| parent | 0ebc2f2c92e4b51069f497aca9f715198010bdf2 (diff) | |
| download | fourpuzzle-fc3afd1d6460b2aa453167498979bbf7a636ef45.tar.gz fourpuzzle-fc3afd1d6460b2aa453167498979bbf7a636ef45.tar.bz2 fourpuzzle-fc3afd1d6460b2aa453167498979bbf7a636ef45.zip | |
Engine: Fixed many potential bugs
Identified by FindBugs. http://findbugs.sourceforge.net/
Diffstat (limited to 'src')
24 files changed, 128 insertions, 54 deletions
| diff --git a/src/com/fourisland/fourpuzzle/Display.java b/src/com/fourisland/fourpuzzle/Display.java index c8d17d9..b7569aa 100755 --- a/src/com/fourisland/fourpuzzle/Display.java +++ b/src/com/fourisland/fourpuzzle/Display.java | |||
| @@ -42,8 +42,7 @@ import org.jdesktop.application.ResourceMap; | |||
| 42 | */ | 42 | */ |
| 43 | public class Display { | 43 | public class Display { |
| 44 | 44 | ||
| 45 | public static int tileAnimationFrame = 0; | 45 | private static int tileAnimationFrame = 0; |
| 46 | |||
| 47 | private static List<Renderable> renderables = new CopyOnWriteArrayList<Renderable>(); | 46 | private static List<Renderable> renderables = new CopyOnWriteArrayList<Renderable>(); |
| 48 | 47 | ||
| 49 | public static void render(Component gameFrame) | 48 | public static void render(Component gameFrame) |
| @@ -229,10 +228,10 @@ public class Display { | |||
| 229 | return; | 228 | return; |
| 230 | } catch (RuntimeException ex) | 229 | } catch (RuntimeException ex) |
| 231 | { | 230 | { |
| 232 | PuzzleApplication.INSTANCE.reportError(ex); | 231 | PuzzleApplication.reportError(ex); |
| 233 | } catch (Error ex) | 232 | } catch (Error ex) |
| 234 | { | 233 | { |
| 235 | PuzzleApplication.INSTANCE.reportError(ex); | 234 | PuzzleApplication.reportError(ex); |
| 236 | } | 235 | } |
| 237 | } | 236 | } |
| 238 | }; | 237 | }; |
| @@ -331,4 +330,9 @@ public class Display { | |||
| 331 | return cachePoint; | 330 | return cachePoint; |
| 332 | } | 331 | } |
| 333 | 332 | ||
| 333 | public int getTileAnimationFrame() | ||
| 334 | { | ||
| 335 | return tileAnimationFrame; | ||
| 336 | } | ||
| 337 | |||
| 334 | } | 338 | } |
| diff --git a/src/com/fourisland/fourpuzzle/PuzzleApplication.java b/src/com/fourisland/fourpuzzle/PuzzleApplication.java index f88b0ad..88236f9 100755 --- a/src/com/fourisland/fourpuzzle/PuzzleApplication.java +++ b/src/com/fourisland/fourpuzzle/PuzzleApplication.java | |||
| @@ -28,10 +28,8 @@ import org.jdesktop.application.Application; | |||
| 28 | */ | 28 | */ |
| 29 | public class PuzzleApplication extends Application { | 29 | public class PuzzleApplication extends Application { |
| 30 | 30 | ||
| 31 | public static PuzzleApplication INSTANCE; | 31 | private static boolean stretchScreen = true; |
| 32 | public static boolean debugSpeed = false; | 32 | private static boolean gameSleep = false; |
| 33 | public static boolean stretchScreen = true; | ||
| 34 | public static boolean gameSleep = false; | ||
| 35 | private static JDialog gameDialog = new JDialog(new JFrame(), false); | 33 | private static JDialog gameDialog = new JDialog(new JFrame(), false); |
| 36 | private static Semaphore gameDialogHandler = new Semaphore(1); | 34 | private static Semaphore gameDialogHandler = new Semaphore(1); |
| 37 | 35 | ||
| @@ -101,9 +99,9 @@ public class PuzzleApplication extends Application { | |||
| 101 | { | 99 | { |
| 102 | /* If debug mode is enabled, holding Shift down should put | 100 | /* If debug mode is enabled, holding Shift down should put |
| 103 | * the game into hyperactive mode */ | 101 | * the game into hyperactive mode */ |
| 104 | if (INSTANCE.getContext().getResourceMap().getBoolean("debugMode")) | 102 | if (getInstance().getContext().getResourceMap().getBoolean("debugMode")) |
| 105 | { | 103 | { |
| 106 | debugSpeed = true; | 104 | Interval.setDebugSpeed(true); |
| 107 | } | 105 | } |
| 108 | } else if (e.getKeyCode() == KeyEvent.VK_F12) | 106 | } else if (e.getKeyCode() == KeyEvent.VK_F12) |
| 109 | { | 107 | { |
| @@ -125,7 +123,7 @@ public class PuzzleApplication extends Application { | |||
| 125 | if (e.getKeyCode() == KeyEvent.VK_SHIFT) | 123 | if (e.getKeyCode() == KeyEvent.VK_SHIFT) |
| 126 | { | 124 | { |
| 127 | // If Shift is let go of, hyperactive mode should end | 125 | // If Shift is let go of, hyperactive mode should end |
| 128 | debugSpeed = false; | 126 | Interval.setDebugSpeed(false); |
| 129 | } else { | 127 | } else { |
| 130 | KeyboardInput.getKey().letGo(); | 128 | KeyboardInput.getKey().letGo(); |
| 131 | } | 129 | } |
| @@ -140,8 +138,6 @@ public class PuzzleApplication extends Application { | |||
| 140 | @Override | 138 | @Override |
| 141 | protected void startup() | 139 | protected void startup() |
| 142 | { | 140 | { |
| 143 | INSTANCE = this; | ||
| 144 | |||
| 145 | // Create the game form | 141 | // Create the game form |
| 146 | initGameDialog(true); | 142 | initGameDialog(true); |
| 147 | 143 | ||
| @@ -197,10 +193,10 @@ public class PuzzleApplication extends Application { | |||
| 197 | 193 | ||
| 198 | public String getGamePackage() | 194 | public String getGamePackage() |
| 199 | { | 195 | { |
| 200 | return INSTANCE.getContext().getResourceMap().getString("Application.package"); | 196 | return getInstance().getContext().getResourceMap().getString("Application.package"); |
| 201 | } | 197 | } |
| 202 | 198 | ||
| 203 | public void reportError(Throwable ex) | 199 | public static void reportError(Throwable ex) |
| 204 | { | 200 | { |
| 205 | if ((ex instanceof Exception) && !(ex instanceof RuntimeException)) | 201 | if ((ex instanceof Exception) && !(ex instanceof RuntimeException)) |
| 206 | { | 202 | { |
| diff --git a/src/com/fourisland/fourpuzzle/SaveFile.java b/src/com/fourisland/fourpuzzle/SaveFile.java index 44b3cdd..7a9c6cf 100755 --- a/src/com/fourisland/fourpuzzle/SaveFile.java +++ b/src/com/fourisland/fourpuzzle/SaveFile.java | |||
| @@ -23,6 +23,8 @@ import java.util.logging.Logger; | |||
| 23 | */ | 23 | */ |
| 24 | public class SaveFile implements Serializable { | 24 | public class SaveFile implements Serializable { |
| 25 | 25 | ||
| 26 | private static final long serialVersionUID = 234503257; | ||
| 27 | |||
| 26 | /** | 28 | /** |
| 27 | * Creates a new SaveFile | 29 | * Creates a new SaveFile |
| 28 | */ | 30 | */ |
| @@ -31,7 +33,7 @@ public class SaveFile implements Serializable { | |||
| 31 | switches = new HashMap<String, Boolean>(); | 33 | switches = new HashMap<String, Boolean>(); |
| 32 | party = Database.createParty(); | 34 | party = Database.createParty(); |
| 33 | variables = new HashMap<String, Integer>(); | 35 | variables = new HashMap<String, Integer>(); |
| 34 | currentMap = new String(); | 36 | currentMap = ""; |
| 35 | hero = new HeroEvent(); | 37 | hero = new HeroEvent(); |
| 36 | } | 38 | } |
| 37 | 39 | ||
| @@ -43,7 +45,7 @@ public class SaveFile implements Serializable { | |||
| 43 | */ | 45 | */ |
| 44 | public SaveFile(int file) throws IOException | 46 | public SaveFile(int file) throws IOException |
| 45 | { | 47 | { |
| 46 | InputStream is = PuzzleApplication.INSTANCE.getContext().getLocalStorage().openInputFile("Save" + file + ".sav"); | 48 | InputStream is = PuzzleApplication.getInstance().getContext().getLocalStorage().openInputFile("Save" + file + ".sav"); |
| 47 | ObjectInputStream ois = new ObjectInputStream(is); | 49 | ObjectInputStream ois = new ObjectInputStream(is); |
| 48 | SaveFile temp = null; | 50 | SaveFile temp = null; |
| 49 | try { | 51 | try { |
| @@ -63,7 +65,7 @@ public class SaveFile implements Serializable { | |||
| 63 | 65 | ||
| 64 | public void saveGame(int file) throws IOException | 66 | public void saveGame(int file) throws IOException |
| 65 | { | 67 | { |
| 66 | OutputStream os = PuzzleApplication.INSTANCE.getContext().getLocalStorage().openOutputFile("Save" + file + ".sav"); | 68 | OutputStream os = PuzzleApplication.getInstance().getContext().getLocalStorage().openOutputFile("Save" + file + ".sav"); |
| 67 | ObjectOutputStream oos = new ObjectOutputStream(os); | 69 | ObjectOutputStream oos = new ObjectOutputStream(os); |
| 68 | oos.writeObject(this); | 70 | oos.writeObject(this); |
| 69 | oos.close(); | 71 | oos.close(); |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/ChipSet.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/ChipSet.java index a4d7ac3..e6af66d 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/ChipSet.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/ChipSet.java | |||
| @@ -52,7 +52,7 @@ public class ChipSet { | |||
| 52 | 52 | ||
| 53 | public static void initalize(String name) | 53 | public static void initalize(String name) |
| 54 | { | 54 | { |
| 55 | ResourceMap rm = PuzzleApplication.INSTANCE.getContext().getResourceManager().getResourceMap(); | 55 | ResourceMap rm = PuzzleApplication.getInstance().getContext().getResourceManager().getResourceMap(); |
| 56 | InputStream cs = null; | 56 | InputStream cs = null; |
| 57 | 57 | ||
| 58 | if (rm.getClassLoader().getResource(rm.getResourcesDir() + "chipset/" + name + ".tsx") == null) | 58 | if (rm.getClassLoader().getResource(rm.getResourcesDir() + "chipset/" + name + ".tsx") == null) |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java index 89fac99..d3bd101 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/MapViewGameState.java | |||
| @@ -83,7 +83,7 @@ public class MapViewGameState implements GameState { | |||
| 83 | * walkthrough flag so the Hero can walk through stuff */ | 83 | * walkthrough flag so the Hero can walk through stuff */ |
| 84 | if (key.isCtrlDown() && !debugWalkthrough) | 84 | if (key.isCtrlDown() && !debugWalkthrough) |
| 85 | { | 85 | { |
| 86 | if (PuzzleApplication.INSTANCE.getContext().getResourceMap().getBoolean("debugMode")) | 86 | if (PuzzleApplication.getInstance().getContext().getResourceMap().getBoolean("debugMode")) |
| 87 | { | 87 | { |
| 88 | debugWalkthrough = true; | 88 | debugWalkthrough = true; |
| 89 | } | 89 | } |
| @@ -188,7 +188,7 @@ public class MapViewGameState implements GameState { | |||
| 188 | { | 188 | { |
| 189 | /* If debug mode is enabled and F11 is pressed, cancel any running | 189 | /* If debug mode is enabled and F11 is pressed, cancel any running |
| 190 | * events */ | 190 | * events */ |
| 191 | if ((key.getKey() == KeyEvent.VK_F11) && (PuzzleApplication.INSTANCE.getContext().getResourceMap().getBoolean("debugMode"))) | 191 | if ((key.getKey() == KeyEvent.VK_F11) && (PuzzleApplication.getInstance().getContext().getResourceMap().getBoolean("debugMode"))) |
| 192 | { | 192 | { |
| 193 | for (LayerEvent ev : currentMap.getEvents()) | 193 | for (LayerEvent ev : currentMap.getEvents()) |
| 194 | { | 194 | { |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AnimationType.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AnimationType.java index 76582e3..55dc6d0 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AnimationType.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/AnimationType.java | |||
| @@ -26,7 +26,7 @@ public enum AnimationType { | |||
| 26 | */ | 26 | */ |
| 27 | CommonWithStepping(true, true) | 27 | CommonWithStepping(true, true) |
| 28 | { | 28 | { |
| 29 | Interval in = Interval.createTickInterval(2); | 29 | transient Interval in = Interval.createTickInterval(2); |
| 30 | 30 | ||
| 31 | @Override | 31 | @Override |
| 32 | public void tick(PossibleEvent pe) | 32 | public void tick(PossibleEvent pe) |
| @@ -56,7 +56,7 @@ public enum AnimationType { | |||
| 56 | */ | 56 | */ |
| 57 | TurnLeft(true, true) | 57 | TurnLeft(true, true) |
| 58 | { | 58 | { |
| 59 | Interval in = Interval.createTickInterval(2); | 59 | transient Interval in = Interval.createTickInterval(2); |
| 60 | 60 | ||
| 61 | @Override | 61 | @Override |
| 62 | public void tick(PossibleEvent pe) | 62 | public void tick(PossibleEvent pe) |
| @@ -73,7 +73,7 @@ public enum AnimationType { | |||
| 73 | */ | 73 | */ |
| 74 | TurnRight(true, true) | 74 | TurnRight(true, true) |
| 75 | { | 75 | { |
| 76 | Interval in = Interval.createTickInterval(2); | 76 | transient Interval in = Interval.createTickInterval(2); |
| 77 | 77 | ||
| 78 | @Override | 78 | @Override |
| 79 | public void tick(PossibleEvent pe) | 79 | public void tick(PossibleEvent pe) |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/CommonEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/CommonEvent.java index edfdb8f..9c5bf14 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/CommonEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/CommonEvent.java | |||
| @@ -51,11 +51,13 @@ public class CommonEvent { | |||
| 51 | this.callback = callback; | 51 | this.callback = callback; |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | public EventCallTime getCalltime() { | 54 | public EventCallTime getCalltime() |
| 55 | { | ||
| 55 | return calltime; | 56 | return calltime; |
| 56 | } | 57 | } |
| 57 | 58 | ||
| 58 | public void setCalltime(EventCallTime calltime) { | 59 | public void setCalltime(EventCallTime calltime) |
| 60 | { | ||
| 59 | this.calltime = calltime; | 61 | this.calltime = calltime; |
| 60 | } | 62 | } |
| 61 | 63 | ||
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventHandler.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventHandler.java index e24b79c..9cb67ba 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventHandler.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventHandler.java | |||
| @@ -59,10 +59,10 @@ public class EventHandler { | |||
| 59 | * Also reset the viewpoint in case the viewpoint was | 59 | * Also reset the viewpoint in case the viewpoint was |
| 60 | * fixed during the thread */ | 60 | * fixed during the thread */ |
| 61 | 61 | ||
| 62 | SpecialEvent.mapView.setViewpoint(new AutomaticViewpoint(SpecialEvent.mapView.getCurrentMap())); | 62 | new SpecialEvent().ResetViewpoint(); |
| 63 | } catch (ResourceNotFoundException ex) | 63 | } catch (ResourceNotFoundException ex) |
| 64 | { | 64 | { |
| 65 | PuzzleApplication.INSTANCE.reportError(ex); | 65 | PuzzleApplication.reportError(ex); |
| 66 | } | 66 | } |
| 67 | } | 67 | } |
| 68 | }; | 68 | }; |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventList.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventList.java index 7120a91..d790195 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventList.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/EventList.java | |||
| @@ -14,6 +14,8 @@ import java.util.Vector; | |||
| 14 | */ | 14 | */ |
| 15 | public class EventList extends Vector<LayerEvent> { | 15 | public class EventList extends Vector<LayerEvent> { |
| 16 | 16 | ||
| 17 | private static final long serialVersionUID = 765438545; | ||
| 18 | |||
| 17 | public EventList(Map parentMap) | 19 | public EventList(Map parentMap) |
| 18 | { | 20 | { |
| 19 | setParentMap(parentMap); | 21 | setParentMap(parentMap); |
| @@ -62,7 +64,7 @@ public class EventList extends Vector<LayerEvent> { | |||
| 62 | return super.add(o); | 64 | return super.add(o); |
| 63 | } | 65 | } |
| 64 | 66 | ||
| 65 | private Map parentMap = null; | 67 | private transient Map parentMap = null; |
| 66 | public Map getParentMap() | 68 | public Map getParentMap() |
| 67 | { | 69 | { |
| 68 | return parentMap; | 70 | return parentMap; |
| @@ -77,4 +79,34 @@ public class EventList extends Vector<LayerEvent> { | |||
| 77 | } | 79 | } |
| 78 | } | 80 | } |
| 79 | 81 | ||
| 82 | @Override | ||
| 83 | public int hashCode() | ||
| 84 | { | ||
| 85 | int hash = 3; | ||
| 86 | hash = 59 * hash + (this.parentMap != null ? this.parentMap.hashCode() : 0); | ||
| 87 | return hash; | ||
| 88 | } | ||
| 89 | |||
| 90 | @Override | ||
| 91 | public boolean equals(Object obj) | ||
| 92 | { | ||
| 93 | if (obj == null) | ||
| 94 | { | ||
| 95 | return false; | ||
| 96 | } | ||
| 97 | |||
| 98 | if (getClass() != obj.getClass()) | ||
| 99 | { | ||
| 100 | return false; | ||
| 101 | } | ||
| 102 | |||
| 103 | final EventList other = (EventList) obj; | ||
| 104 | if (this.parentMap != other.parentMap && (this.parentMap == null || !this.parentMap.equals(other.parentMap))) | ||
| 105 | { | ||
| 106 | return false; | ||
| 107 | } | ||
| 108 | |||
| 109 | return true; | ||
| 110 | } | ||
| 111 | |||
| 80 | } | 112 | } |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/HeroEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/HeroEvent.java index 5db87a0..1f5607e 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/HeroEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/HeroEvent.java | |||
| @@ -14,12 +14,18 @@ import com.fourisland.fourpuzzle.database.GameCharacter; | |||
| 14 | import com.fourisland.fourpuzzle.gamestate.mapview.Map; | 14 | import com.fourisland.fourpuzzle.gamestate.mapview.Map; |
| 15 | import com.fourisland.fourpuzzle.gamestate.mapview.MapViewGameState; | 15 | import com.fourisland.fourpuzzle.gamestate.mapview.MapViewGameState; |
| 16 | import com.fourisland.fourpuzzle.gamestate.mapview.event.graphic.BlankEventGraphic; | 16 | import com.fourisland.fourpuzzle.gamestate.mapview.event.graphic.BlankEventGraphic; |
| 17 | import java.io.IOException; | ||
| 18 | import java.io.ObjectInputStream; | ||
| 19 | import java.io.ObjectOutputStream; | ||
| 20 | import java.io.Serializable; | ||
| 17 | 21 | ||
| 18 | /** | 22 | /** |
| 19 | * | 23 | * |
| 20 | * @author hatkirby | 24 | * @author hatkirby |
| 21 | */ | 25 | */ |
| 22 | public class HeroEvent extends AbstractEvent implements Event { | 26 | public class HeroEvent extends AbstractEvent implements Event, Serializable { |
| 27 | |||
| 28 | private static final long serialVersionUID = 402340890; | ||
| 23 | 29 | ||
| 24 | public HeroEvent() | 30 | public HeroEvent() |
| 25 | { | 31 | { |
| @@ -73,5 +79,27 @@ public class HeroEvent extends AbstractEvent implements Event { | |||
| 73 | { | 79 | { |
| 74 | return ((MapViewGameState) Game.getGameState()).getCurrentMap(); | 80 | return ((MapViewGameState) Game.getGameState()).getCurrentMap(); |
| 75 | } | 81 | } |
| 82 | |||
| 83 | /** | ||
| 84 | * Serialize this HeroEvent instance | ||
| 85 | * | ||
| 86 | * When serializing a HeroEvent, the only information that is really | ||
| 87 | * necessary is the Hero's location and direction, because all other | ||
| 88 | * important information is serialized by SaveFile. | ||
| 89 | * | ||
| 90 | * @serialData The Hero's location (as a Point object) is emitted, followed | ||
| 91 | * by the a Direction object representing the Hero's direction. | ||
| 92 | */ | ||
| 93 | private void writeObject(ObjectOutputStream s) throws IOException | ||
| 94 | { | ||
| 95 | s.writeObject(getLocation()); | ||
| 96 | s.writeObject(getDirection()); | ||
| 97 | } | ||
| 98 | |||
| 99 | private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException | ||
| 100 | { | ||
| 101 | setLocation((Point) s.readObject()); | ||
| 102 | setDirection((Direction) s.readObject()); | ||
| 103 | } | ||
| 76 | 104 | ||
| 77 | } | 105 | } |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/ImmutableEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/ImmutableEvent.java index b722b68..7bd0c42 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/ImmutableEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/ImmutableEvent.java | |||
| @@ -26,7 +26,7 @@ public final class ImmutableEvent | |||
| 26 | 26 | ||
| 27 | public String getLabel() | 27 | public String getLabel() |
| 28 | { | 28 | { |
| 29 | return new String(ev.getLabel()); | 29 | return ev.getLabel(); |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | public Point getLocation() | 32 | public Point getLocation() |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java index 2db33f7..30db7a2 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java | |||
| @@ -30,7 +30,7 @@ import java.util.concurrent.CountDownLatch; | |||
| 30 | */ | 30 | */ |
| 31 | public class SpecialEvent { | 31 | public class SpecialEvent { |
| 32 | 32 | ||
| 33 | protected static MapViewGameState mapView = null; | 33 | private static MapViewGameState mapView = null; |
| 34 | public static void setMapView(MapViewGameState mapView) | 34 | public static void setMapView(MapViewGameState mapView) |
| 35 | { | 35 | { |
| 36 | SpecialEvent.mapView = mapView; | 36 | SpecialEvent.mapView = mapView; |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/movement/CustomMovementType.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/movement/CustomMovementType.java index 78dd991..a63feda 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/movement/CustomMovementType.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/movement/CustomMovementType.java | |||
| @@ -7,6 +7,7 @@ package com.fourisland.fourpuzzle.gamestate.mapview.event.movement; | |||
| 7 | 7 | ||
| 8 | import com.fourisland.fourpuzzle.Direction; | 8 | import com.fourisland.fourpuzzle.Direction; |
| 9 | import com.fourisland.fourpuzzle.gamestate.mapview.event.ImmutableEvent; | 9 | import com.fourisland.fourpuzzle.gamestate.mapview.event.ImmutableEvent; |
| 10 | import java.util.Arrays; | ||
| 10 | 11 | ||
| 11 | /** | 12 | /** |
| 12 | * CustomMovementEvent takes an array of Directions and directions the event | 13 | * CustomMovementEvent takes an array of Directions and directions the event |
| @@ -22,7 +23,7 @@ public class CustomMovementType implements MovementType { | |||
| 22 | 23 | ||
| 23 | public CustomMovementType(Direction[] moves) | 24 | public CustomMovementType(Direction[] moves) |
| 24 | { | 25 | { |
| 25 | this.moves = moves; | 26 | this.moves = Arrays.copyOf(moves, moves.length); |
| 26 | } | 27 | } |
| 27 | 28 | ||
| 28 | public Direction nextMovement(ImmutableEvent ev) | 29 | public Direction nextMovement(ImmutableEvent ev) |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/LoopUntilCollisionMoveEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/LoopUntilCollisionMoveEvent.java index 02744d0..daceffd 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/LoopUntilCollisionMoveEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/LoopUntilCollisionMoveEvent.java | |||
| @@ -7,6 +7,7 @@ package com.fourisland.fourpuzzle.gamestate.mapview.event.specialmove; | |||
| 7 | 7 | ||
| 8 | import com.fourisland.fourpuzzle.gamestate.mapview.event.Event; | 8 | import com.fourisland.fourpuzzle.gamestate.mapview.event.Event; |
| 9 | import java.awt.Point; | 9 | import java.awt.Point; |
| 10 | import java.util.Arrays; | ||
| 10 | 11 | ||
| 11 | /** | 12 | /** |
| 12 | * LoopUntilCollisionMoveEvent takes an array of <b>MoveEvent</b>s and repeatedly | 13 | * LoopUntilCollisionMoveEvent takes an array of <b>MoveEvent</b>s and repeatedly |
| @@ -24,7 +25,7 @@ public class LoopUntilCollisionMoveEvent implements MoveEvent { | |||
| 24 | 25 | ||
| 25 | public LoopUntilCollisionMoveEvent(MoveEvent[] moves) | 26 | public LoopUntilCollisionMoveEvent(MoveEvent[] moves) |
| 26 | { | 27 | { |
| 27 | this.moves = moves; | 28 | this.moves = Arrays.copyOf(moves, moves.length); |
| 28 | } | 29 | } |
| 29 | 30 | ||
| 30 | public void doAction(Event ev) | 31 | public void doAction(Event ev) |
| 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 d05a3d8..dae49cb 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/MoveEventThread.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/specialmove/MoveEventThread.java | |||
| @@ -9,6 +9,7 @@ import com.fourisland.fourpuzzle.Game; | |||
| 9 | 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; | 10 | import com.fourisland.fourpuzzle.gamestate.mapview.event.LayerEvent; |
| 11 | import java.util.ArrayList; | 11 | import java.util.ArrayList; |
| 12 | import java.util.Arrays; | ||
| 12 | import java.util.List; | 13 | import java.util.List; |
| 13 | import java.util.Vector; | 14 | import java.util.Vector; |
| 14 | import java.util.concurrent.ExecutorService; | 15 | import java.util.concurrent.ExecutorService; |
| @@ -34,7 +35,7 @@ public class MoveEventThread implements Runnable { | |||
| 34 | public MoveEventThread(Event ev, MoveEvent[] actions) | 35 | public MoveEventThread(Event ev, MoveEvent[] actions) |
| 35 | { | 36 | { |
| 36 | this.ev = ev; | 37 | this.ev = ev; |
| 37 | this.actions = actions; | 38 | this.actions = Arrays.copyOf(actions, actions.length); |
| 38 | } | 39 | } |
| 39 | 40 | ||
| 40 | public void start() | 41 | public void start() |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/viewpoint/MovingViewpoint.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/viewpoint/MovingViewpoint.java index e6db32b..edaa580 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/viewpoint/MovingViewpoint.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/viewpoint/MovingViewpoint.java | |||
| @@ -39,7 +39,7 @@ public class MovingViewpoint implements Viewpoint { | |||
| 39 | this.sy = sy; | 39 | this.sy = sy; |
| 40 | this.dx = dx; | 40 | this.dx = dx; |
| 41 | this.dy = dy; | 41 | this.dy = dy; |
| 42 | this.speed = length / Game.FPS; | 42 | this.speed = length / (double) Game.FPS; |
| 43 | this.xdist = dx - sx; | 43 | this.xdist = dx - sx; |
| 44 | this.ydist = dy - sy; | 44 | this.ydist = dy - sy; |
| 45 | this.callback = callback; | 45 | this.callback = callback; |
| diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/viewpoint/ShakingViewpoint.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/viewpoint/ShakingViewpoint.java index f2b40e7..80d36b3 100644 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/viewpoint/ShakingViewpoint.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/viewpoint/ShakingViewpoint.java | |||
| @@ -28,7 +28,7 @@ public class ShakingViewpoint implements Viewpoint { | |||
| 28 | this.length = length; | 28 | this.length = length; |
| 29 | this.x = x; | 29 | this.x = x; |
| 30 | this.y = y; | 30 | this.y = y; |
| 31 | this.in = Interval.createMillisInterval(1000 / speed.getSpeed()); | 31 | this.in = Interval.createMillisInterval(1000F / speed.getSpeed()); |
| 32 | this.speed = speed; | 32 | this.speed = speed; |
| 33 | this.callback = callback; | 33 | this.callback = callback; |
| 34 | this.start = System.currentTimeMillis(); | 34 | this.start = System.currentTimeMillis(); |
| diff --git a/src/com/fourisland/fourpuzzle/transition/SlideTransition.java b/src/com/fourisland/fourpuzzle/transition/SlideTransition.java index aa91061..c7b7ad2 100755 --- a/src/com/fourisland/fourpuzzle/transition/SlideTransition.java +++ b/src/com/fourisland/fourpuzzle/transition/SlideTransition.java | |||
| @@ -42,7 +42,7 @@ public class SlideTransition implements MultidirectionalTransition { | |||
| 42 | way = SlideDirection.SideToSide; | 42 | way = SlideDirection.SideToSide; |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | wait = Math.round(max / (Game.FPS/2)); | 45 | wait = max / (Game.FPS/2); |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | public TransitionDirection getDirection() | 48 | public TransitionDirection getDirection() |
| diff --git a/src/com/fourisland/fourpuzzle/util/Interval.java b/src/com/fourisland/fourpuzzle/util/Interval.java index 1e5e8f3..0b0125d 100755 --- a/src/com/fourisland/fourpuzzle/util/Interval.java +++ b/src/com/fourisland/fourpuzzle/util/Interval.java | |||
| @@ -33,7 +33,7 @@ public class Interval { | |||
| 33 | private long last = System.nanoTime(); | 33 | private long last = System.nanoTime(); |
| 34 | public boolean isElapsed() | 34 | public boolean isElapsed() |
| 35 | { | 35 | { |
| 36 | if (PuzzleApplication.debugSpeed) | 36 | if (Interval.getDebugSpeed()) |
| 37 | { | 37 | { |
| 38 | return true; | 38 | return true; |
| 39 | } | 39 | } |
| @@ -47,5 +47,16 @@ public class Interval { | |||
| 47 | 47 | ||
| 48 | return false; | 48 | return false; |
| 49 | } | 49 | } |
| 50 | |||
| 51 | private static boolean debugSpeed = false; | ||
| 52 | public static void setDebugSpeed(boolean debugSpeed) | ||
| 53 | { | ||
| 54 | Interval.debugSpeed = debugSpeed; | ||
| 55 | } | ||
| 56 | |||
| 57 | public static boolean getDebugSpeed() | ||
| 58 | { | ||
| 59 | return debugSpeed; | ||
| 60 | } | ||
| 50 | 61 | ||
| 51 | } | 62 | } |
| diff --git a/src/com/fourisland/fourpuzzle/util/MidiParser.java b/src/com/fourisland/fourpuzzle/util/MidiParser.java index 3d6c06b..408ea75 100644 --- a/src/com/fourisland/fourpuzzle/util/MidiParser.java +++ b/src/com/fourisland/fourpuzzle/util/MidiParser.java | |||
| @@ -27,7 +27,7 @@ public class MidiParser { | |||
| 27 | 27 | ||
| 28 | public Sequence parse() throws InvalidMidiDataException | 28 | public Sequence parse() throws InvalidMidiDataException |
| 29 | { | 29 | { |
| 30 | Sequence temp = temp = new Sequence(seq.getDivisionType(), seq.getResolution()); | 30 | Sequence temp = new Sequence(seq.getDivisionType(), seq.getResolution()); |
| 31 | 31 | ||
| 32 | for (Track t : seq.getTracks()) | 32 | for (Track t : seq.getTracks()) |
| 33 | { | 33 | { |
| diff --git a/src/com/fourisland/fourpuzzle/util/ObjectLoader.java b/src/com/fourisland/fourpuzzle/util/ObjectLoader.java index f1cb157..efeec7e 100755 --- a/src/com/fourisland/fourpuzzle/util/ObjectLoader.java +++ b/src/com/fourisland/fourpuzzle/util/ObjectLoader.java | |||
| @@ -55,7 +55,7 @@ public class ObjectLoader { | |||
| 55 | { | 55 | { |
| 56 | if (!imageCache.containsKey(type + "/" + name)) | 56 | if (!imageCache.containsKey(type + "/" + name)) |
| 57 | { | 57 | { |
| 58 | ResourceMap rm = PuzzleApplication.INSTANCE.getContext().getResourceManager().getResourceMap(); | 58 | ResourceMap rm = PuzzleApplication.getInstance().getContext().getResourceManager().getResourceMap(); |
| 59 | String filename = getFilename(type, name, "png"); | 59 | String filename = getFilename(type, name, "png"); |
| 60 | InputStream str = rm.getClassLoader().getResourceAsStream(filename); | 60 | InputStream str = rm.getClassLoader().getResourceAsStream(filename); |
| 61 | BufferedImage bImg = null; | 61 | BufferedImage bImg = null; |
| @@ -75,7 +75,7 @@ public class ObjectLoader { | |||
| 75 | { | 75 | { |
| 76 | if (!imageCache.containsKey(type + "/" + name)) | 76 | if (!imageCache.containsKey(type + "/" + name)) |
| 77 | { | 77 | { |
| 78 | ResourceMap rm = PuzzleApplication.INSTANCE.getContext().getResourceManager().getResourceMap(); | 78 | ResourceMap rm = PuzzleApplication.getInstance().getContext().getResourceManager().getResourceMap(); |
| 79 | String filename = getFilename(type, name, "png"); | 79 | String filename = getFilename(type, name, "png"); |
| 80 | InputStream str = rm.getClassLoader().getResourceAsStream(filename); | 80 | InputStream str = rm.getClassLoader().getResourceAsStream(filename); |
| 81 | BufferedImage bImg = null; | 81 | BufferedImage bImg = null; |
| @@ -107,7 +107,7 @@ public class ObjectLoader { | |||
| 107 | { | 107 | { |
| 108 | if (!musicCache.containsKey(name)) | 108 | if (!musicCache.containsKey(name)) |
| 109 | { | 109 | { |
| 110 | ResourceMap rm = PuzzleApplication.INSTANCE.getContext().getResourceManager().getResourceMap(); | 110 | ResourceMap rm = PuzzleApplication.getInstance().getContext().getResourceManager().getResourceMap(); |
| 111 | String filename = getFilename("Music", name, "mid"); | 111 | String filename = getFilename("Music", name, "mid"); |
| 112 | InputStream str = rm.getClassLoader().getResourceAsStream(filename); | 112 | InputStream str = rm.getClassLoader().getResourceAsStream(filename); |
| 113 | Sequence seq = null; | 113 | Sequence seq = null; |
| @@ -136,7 +136,7 @@ public class ObjectLoader { | |||
| 136 | { | 136 | { |
| 137 | if (!soundCache.containsKey("Sound/" + name)) | 137 | if (!soundCache.containsKey("Sound/" + name)) |
| 138 | { | 138 | { |
| 139 | ResourceMap rm = PuzzleApplication.INSTANCE.getContext().getResourceManager().getResourceMap(); | 139 | ResourceMap rm = PuzzleApplication.getInstance().getContext().getResourceManager().getResourceMap(); |
| 140 | String filename = getFilename("Sound", name, "wav"); | 140 | String filename = getFilename("Sound", name, "wav"); |
| 141 | InputStream soundFile = rm.getClassLoader().getResourceAsStream(filename); | 141 | InputStream soundFile = rm.getClassLoader().getResourceAsStream(filename); |
| 142 | AudioInputStream ais = null; | 142 | AudioInputStream ais = null; |
| @@ -173,7 +173,7 @@ public class ObjectLoader { | |||
| 173 | 173 | ||
| 174 | public static String getFilename(String type, String name, String ex) | 174 | public static String getFilename(String type, String name, String ex) |
| 175 | { | 175 | { |
| 176 | ResourceMap rm = PuzzleApplication.INSTANCE.getContext().getResourceManager().getResourceMap(); | 176 | ResourceMap rm = PuzzleApplication.getInstance().getContext().getResourceManager().getResourceMap(); |
| 177 | String f = rm.getResourcesDir() + type.toLowerCase() + "/" + name + "." + ex; | 177 | String f = rm.getResourcesDir() + type.toLowerCase() + "/" + name + "." + ex; |
| 178 | URL fu = rm.getClassLoader().getResource(f); | 178 | URL fu = rm.getClassLoader().getResource(f); |
| 179 | 179 | ||
| diff --git a/src/com/fourisland/fourpuzzle/util/PauseTimer.java b/src/com/fourisland/fourpuzzle/util/PauseTimer.java index f26f105..c3df5df 100644 --- a/src/com/fourisland/fourpuzzle/util/PauseTimer.java +++ b/src/com/fourisland/fourpuzzle/util/PauseTimer.java | |||
| @@ -5,8 +5,6 @@ | |||
| 5 | 5 | ||
| 6 | package com.fourisland.fourpuzzle.util; | 6 | package com.fourisland.fourpuzzle.util; |
| 7 | 7 | ||
| 8 | import com.fourisland.fourpuzzle.PuzzleApplication; | ||
| 9 | |||
| 10 | /** | 8 | /** |
| 11 | * | 9 | * |
| 12 | * @author hatkirby | 10 | * @author hatkirby |
| @@ -22,7 +20,7 @@ public class PauseTimer { | |||
| 22 | Interval in = Interval.createTickInterval(1); | 20 | Interval in = Interval.createTickInterval(1); |
| 23 | public boolean isElapsed() | 21 | public boolean isElapsed() |
| 24 | { | 22 | { |
| 25 | if (PuzzleApplication.debugSpeed) | 23 | if (Interval.getDebugSpeed()) |
| 26 | { | 24 | { |
| 27 | return true; | 25 | return true; |
| 28 | } | 26 | } |
| diff --git a/src/com/fourisland/fourpuzzle/window/ChoiceWindow.java b/src/com/fourisland/fourpuzzle/window/ChoiceWindow.java index 8dce753..2dbd605 100755 --- a/src/com/fourisland/fourpuzzle/window/ChoiceWindow.java +++ b/src/com/fourisland/fourpuzzle/window/ChoiceWindow.java | |||
| @@ -61,18 +61,15 @@ public class ChoiceWindow implements Renderable, Inputable { | |||
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | private List<String> choices; | 63 | private List<String> choices; |
| 64 | int numChoices; | ||
| 65 | boolean center; | 64 | boolean center; |
| 66 | private int width; | 65 | private int width; |
| 67 | private int height; | 66 | private int height; |
| 68 | BufferedImage cacheBase; | 67 | BufferedImage cacheBase; |
| 69 | int x; | 68 | int x; |
| 70 | int y; | 69 | int y; |
| 71 | String clickSound; | ||
| 72 | private ChoiceWindow(Builder builder) | 70 | private ChoiceWindow(Builder builder) |
| 73 | { | 71 | { |
| 74 | this.choices = builder.choices; | 72 | this.choices = builder.choices; |
| 75 | numChoices = choices.size(); | ||
| 76 | this.center = builder.center; | 73 | this.center = builder.center; |
| 77 | 74 | ||
| 78 | for (String choice : choices) | 75 | for (String choice : choices) |
| @@ -211,6 +208,7 @@ public class ChoiceWindow implements Renderable, Inputable { | |||
| 211 | } | 208 | } |
| 212 | } | 209 | } |
| 213 | 210 | ||
| 211 | Object hasInputLock = new Object(); | ||
| 214 | Boolean hasInput = false; | 212 | Boolean hasInput = false; |
| 215 | PauseTimer pt = new PauseTimer(0); | 213 | PauseTimer pt = new PauseTimer(0); |
| 216 | public void processInput(KeyInput key) | 214 | public void processInput(KeyInput key) |
| @@ -231,7 +229,7 @@ public class ChoiceWindow implements Renderable, Inputable { | |||
| 231 | } | 229 | } |
| 232 | } else if (key.isActionDown()) | 230 | } else if (key.isActionDown()) |
| 233 | { | 231 | { |
| 234 | synchronized (hasInput) | 232 | synchronized (hasInputLock) |
| 235 | { | 233 | { |
| 236 | hasInput = true; | 234 | hasInput = true; |
| 237 | } | 235 | } |
| @@ -240,7 +238,7 @@ public class ChoiceWindow implements Renderable, Inputable { | |||
| 240 | 238 | ||
| 241 | public boolean hasInput() | 239 | public boolean hasInput() |
| 242 | { | 240 | { |
| 243 | synchronized (hasInput) | 241 | synchronized (hasInputLock) |
| 244 | { | 242 | { |
| 245 | return hasInput; | 243 | return hasInput; |
| 246 | } | 244 | } |
| diff --git a/src/com/fourisland/fourpuzzle/window/Window.java b/src/com/fourisland/fourpuzzle/window/Window.java index db1bfab..661f4a2 100644 --- a/src/com/fourisland/fourpuzzle/window/Window.java +++ b/src/com/fourisland/fourpuzzle/window/Window.java | |||
| @@ -26,7 +26,7 @@ public enum Window | |||
| 26 | }, | 26 | }, |
| 27 | Selector(64) | 27 | Selector(64) |
| 28 | { | 28 | { |
| 29 | Interval in = Interval.createTickInterval(4); | 29 | transient Interval in = Interval.createTickInterval(4); |
| 30 | boolean isFlashing = false; | 30 | boolean isFlashing = false; |
| 31 | 31 | ||
| 32 | @Override | 32 | @Override |
