]> www.infradead.org Git - users/mchehab/andors-trail.git/commitdiff
Bugfix: do not start a new player turn when returning from inventory and AP=0.
authorOskar Wiksten <oskar.wiksten@gmail.com>
Tue, 24 Jul 2012 11:43:20 +0000 (13:43 +0200)
committerOskar Wiksten <oskar.wiksten@gmail.com>
Tue, 24 Jul 2012 11:43:20 +0000 (13:43 +0200)
AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java
AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/InterfaceData.java
AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Actor.java

index 508f510dbdc9bfea96d7ad79753c130149bce7e0..26567d5676be422586d5a2b69a833ccf189f76fa 100644 (file)
@@ -257,9 +257,10 @@ public final class CombatController implements VisualEffectCompletedCallback {
     }
 
        private boolean playerHasApLeft() {
-               if (model.player.ap.current >= model.player.useItemCost) return true;
-               if (model.player.ap.current >= model.player.combatTraits.attackCost) return true;
-               if (model.player.ap.current >= model.player.actorTraits.moveCost) return true;
+               final Player player = model.player;
+               if (player.hasAPs(player.useItemCost)) return true;
+               if (player.hasAPs(player.combatTraits.attackCost)) return true;
+               if (player.hasAPs(player.actorTraits.moveCost)) return true;
                return false;
        }
        private void playerActionCompleted() {
@@ -267,7 +268,9 @@ public final class CombatController implements VisualEffectCompletedCallback {
                if (!playerHasApLeft()) endPlayerTurn();
        }
        private void continueTurn() {
-       if (!playerHasApLeft()) handleNextMonsterAction();
+               if (model.uiSelections.isPlayersCombatTurn) return;
+               if (playerHasApLeft()) return;
+               handleNextMonsterAction();
        }
 
        private void executeCombatMove(final Coord dest) {
@@ -304,6 +307,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
        
        public void endPlayerTurn() {
                model.player.ap.current = 0;
+               model.uiSelections.isPlayersCombatTurn = false;
                for (MonsterSpawnArea a : model.currentMap.spawnAreas) {
                        for (Monster m : a.monsters) {
                                m.setMaxAP();
@@ -322,7 +326,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
        
        private Monster determineNextMonster(Monster previousMonster) {
                if (previousMonster != null) {
-                       if (previousMonster.useAPs(previousMonster.combatTraits.attackCost)) return previousMonster;
+                       if (previousMonster.hasAPs(previousMonster.combatTraits.attackCost)) return previousMonster;
                }
                
                for (MonsterSpawnArea a : model.currentMap.spawnAreas) {
@@ -330,7 +334,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
                                if (!m.isAgressive()) continue;
                                
                                if (m.rectPosition.isAdjacentTo(model.player.position)) {
-                                       if (m.useAPs(m.combatTraits.attackCost)) return m;
+                                       if (m.hasAPs(m.combatTraits.attackCost)) return m;
                                }
                        }
                }
@@ -345,6 +349,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
                        endMonsterTurn();
                        return;
                }
+               currentActiveMonster.useAPs(currentActiveMonster.combatTraits.attackCost);
                
                context.mainActivity.combatview.updateTurnInfo(currentActiveMonster);
                Resources r = context.mainActivity.getResources();
@@ -409,6 +414,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
        
        private void newPlayerTurn() {
                model.player.setMaxAP();
+               model.uiSelections.isPlayersCombatTurn = true;
        updateTurnInfo();
        }
        private void updateTurnInfo() {
index 8c3db9cf73e0ed4499e743cac621397fa647e1a7..1746c0398cc95db7f49fe3fe118f9ef868a8deb1 100644 (file)
@@ -11,6 +11,7 @@ import com.gpl.rpg.AndorsTrail.util.Coord;
 public final class InterfaceData {
        public boolean isMainActivityVisible = false;
        public boolean isInCombat = false;
+       public boolean isPlayersCombatTurn = false;
     public Monster selectedMonster;
        public Coord selectedPosition;
        public String selectedTabHeroInfo = "";
index b95ef106683fc1f03da4597ec45af5e85a917edf..bec0b10359a6aeb0b4d438a1650ab776cf79a343 100644 (file)
@@ -51,6 +51,9 @@ public class Actor {
                ap.subtract(cost, false);
                return true;
        }
+       public boolean hasAPs(int cost) {
+               return ap.current >= cost;
+       }
        
        public boolean hasCondition(final String conditionTypeID) {
                for (ActorCondition c : conditions) {