diff options
author | Starla Insigna <hatkirby@fourisland.com> | 2009-02-16 13:03:07 -0500 |
---|---|---|
committer | Starla Insigna <hatkirby@fourisland.com> | 2009-02-16 13:03:07 -0500 |
commit | 0540ce566ddce97a60c3279c51d5c5ddf1645321 (patch) | |
tree | ded689d601e61d054c5e7c8d32802aafd0416665 /src/com/fourisland/fourpuzzle/Display.java | |
parent | 1db6402b9171fc13b377b01d49531659a4e1fc76 (diff) | |
download | fourpuzzle-0540ce566ddce97a60c3279c51d5c5ddf1645321.tar.gz fourpuzzle-0540ce566ddce97a60c3279c51d5c5ddf1645321.tar.bz2 fourpuzzle-0540ce566ddce97a60c3279c51d5c5ddf1645321.zip |
Engine: Abstracted game state transitions
Previously, every game state transition was manually executed with a thread, some exception handling and Display. Now, Display has a method that takes care of it without leaving all of the bulk in random classes.
Diffstat (limited to 'src/com/fourisland/fourpuzzle/Display.java')
-rwxr-xr-x | src/com/fourisland/fourpuzzle/Display.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/com/fourisland/fourpuzzle/Display.java b/src/com/fourisland/fourpuzzle/Display.java index b29ab01..cf1cb2d 100755 --- a/src/com/fourisland/fourpuzzle/Display.java +++ b/src/com/fourisland/fourpuzzle/Display.java | |||
@@ -5,6 +5,7 @@ | |||
5 | 5 | ||
6 | package com.fourisland.fourpuzzle; | 6 | package com.fourisland.fourpuzzle; |
7 | 7 | ||
8 | import com.fourisland.fourpuzzle.gamestate.GameState; | ||
8 | import com.fourisland.fourpuzzle.transition.InTransition; | 9 | import com.fourisland.fourpuzzle.transition.InTransition; |
9 | import com.fourisland.fourpuzzle.transition.MultidirectionalTransition; | 10 | import com.fourisland.fourpuzzle.transition.MultidirectionalTransition; |
10 | import com.fourisland.fourpuzzle.transition.OutTransition; | 11 | import com.fourisland.fourpuzzle.transition.OutTransition; |
@@ -28,6 +29,8 @@ import java.io.InputStream; | |||
28 | import java.util.List; | 29 | import java.util.List; |
29 | import java.util.concurrent.CopyOnWriteArrayList; | 30 | import java.util.concurrent.CopyOnWriteArrayList; |
30 | import java.util.concurrent.CountDownLatch; | 31 | import java.util.concurrent.CountDownLatch; |
32 | import java.util.concurrent.Executor; | ||
33 | import java.util.concurrent.Executors; | ||
31 | import java.util.logging.Level; | 34 | import java.util.logging.Level; |
32 | import java.util.logging.Logger; | 35 | import java.util.logging.Logger; |
33 | import org.jdesktop.application.ResourceMap; | 36 | import org.jdesktop.application.ResourceMap; |
@@ -204,6 +207,36 @@ public class Display { | |||
204 | } | 207 | } |
205 | } | 208 | } |
206 | 209 | ||
210 | private static Executor transitioner = Executors.newSingleThreadExecutor(); | ||
211 | public static void transition(final Transition out, final GameState gameState, final Transition in, boolean thread) | ||
212 | { | ||
213 | Runnable transitionCall = new Runnable() { | ||
214 | public void run() | ||
215 | { | ||
216 | try { | ||
217 | Display.transition(out); | ||
218 | Game.setGameState(gameState); | ||
219 | Display.transition(in); | ||
220 | } catch (InterruptedException ex) { | ||
221 | Thread.currentThread().interrupt(); | ||
222 | } catch (RuntimeException ex) | ||
223 | { | ||
224 | PuzzleApplication.INSTANCE.reportError(ex); | ||
225 | } catch (Error ex) | ||
226 | { | ||
227 | PuzzleApplication.INSTANCE.reportError(ex); | ||
228 | } | ||
229 | } | ||
230 | }; | ||
231 | |||
232 | if (thread) | ||
233 | { | ||
234 | transitioner.execute(transitionCall); | ||
235 | } else { | ||
236 | transitionCall.run(); | ||
237 | } | ||
238 | } | ||
239 | |||
207 | public static boolean isTransitionRunning() | 240 | public static boolean isTransitionRunning() |
208 | { | 241 | { |
209 | return transitionRunning; | 242 | return transitionRunning; |