]> www.infradead.org Git - users/mchehab/andors-trail.git/commitdiff
Additional safeguards to stop movementhandler when movement should be aborted.
authoroskar.wiksten <oskar.wiksten@08aca716-68be-ccc6-4d58-36f5abd142ac>
Thu, 20 Oct 2011 16:27:07 +0000 (16:27 +0000)
committeroskar.wiksten <oskar.wiksten@08aca716-68be-ccc6-4d58-36f5abd142ac>
Thu, 20 Oct 2011 16:27:07 +0000 (16:27 +0000)
git-svn-id: https://andors-trail.googlecode.com/svn/trunk@189 08aca716-68be-ccc6-4d58-36f5abd142ac

AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/GameRoundController.java
AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java
AndorsTrail/src/com/gpl/rpg/AndorsTrail/util/TimedMessageTask.java

index f88974b508ca25c42735bab9d74ebadc047ab11d..96172910b62b6659817e46bb8eec6a83efa68274 100644 (file)
@@ -23,10 +23,10 @@ public final class GameRoundController implements TimedMessageTask.Callback {
        
     private int ticksUntilNextRound = Constants.TICKS_PER_ROUND;
     private int ticksUntilNextFullRound = Constants.TICKS_PER_FULLROUND;
-    public void onTick(TimedMessageTask task) {
+    public boolean onTick(TimedMessageTask task) {
                //L.log(id + " : Controller::tick()");
-       if (!model.uiSelections.isMainActivityVisible) return;
-       if (model.uiSelections.isInCombat) return;
+       if (!model.uiSelections.isMainActivityVisible) return false;
+       if (model.uiSelections.isInCombat) return false;
        
        onNewTick();
        
@@ -42,7 +42,7 @@ public final class GameRoundController implements TimedMessageTask.Callback {
                ticksUntilNextFullRound = Constants.TICKS_PER_FULLROUND;
        }
        
-       roundTimer.queueAnotherTick();
+       return true;
     }
     
     public void resume() {
index 273bba6ef86983f6d64a99a29149f5736e05e3bd..1c3ff011a8d45e80633f12078a47257c9b51ca15 100644 (file)
@@ -288,12 +288,12 @@ public final class MovementController implements TimedMessageTask.Callback {
                movementHandler.stop();
        }
        
-       public void onTick(TimedMessageTask task) {
-               if (!model.uiSelections.isMainActivityVisible) return;
-       if (model.uiSelections.isInCombat) return;
+       public boolean onTick(TimedMessageTask task) {
+               if (!model.uiSelections.isMainActivityVisible) return false;
+       if (model.uiSelections.isInCombat) return false;
        
        movePlayer(movementDx, movementDy);
                
-       movementHandler.queueAnotherTick();
+       return true;
        }
 }
index 4dd956fc5c127a0aff28f8f0b043366e5c62fb1c..425a9513e0b53db237e1b2cde28d5f8a995b3d0e 100644 (file)
@@ -9,6 +9,7 @@ public final class TimedMessageTask extends Handler {
        private final Callback callback;
        private long nextTickTime;
        private boolean hasQueuedTick = false;
+       private boolean isAlive = false;
        
        public TimedMessageTask(Callback callback, long interval, boolean requireIntervalBeforeFirstTick) {
                this.interval = interval;
@@ -19,14 +20,15 @@ public final class TimedMessageTask extends Handler {
        
        @Override
     public void handleMessage(Message msg) {
-       if (!hasQueuedTick) return;
+               if (!isAlive) return;
+           if (!hasQueuedTick) return;
        hasQueuedTick = false;
-       tick();
+       if (tick()) queueAnotherTick();
     }
        
-       private void tick() {
+       private boolean tick() {
                nextTickTime = System.currentTimeMillis() + interval;
-               callback.onTick(this);
+               return callback.onTick(this);
     }
 
     private void sleep(long delayMillis) {
@@ -52,15 +54,17 @@ public final class TimedMessageTask extends Handler {
     }
     
        public void start() {
+               isAlive = true;
                if (shouldCauseTickOnStart()) tick();
                queueAnotherTick();
        }
 
        public void stop() {
        hasQueuedTick = false;
+       isAlive = false;
        }
        
        public interface Callback {
-               public void onTick(TimedMessageTask task);
+               public boolean onTick(TimedMessageTask task);
        }
 }