From: Oskar Wiksten Date: Tue, 24 Jul 2012 11:43:20 +0000 (+0200) Subject: Bugfix: do not start a new player turn when returning from inventory and AP=0. X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=e3d49008872cceb67479183dae2d7fe707ad2423;p=users%2Fmchehab%2Fandors-trail.git Bugfix: do not start a new player turn when returning from inventory and AP=0. --- diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java index 508f510..26567d5 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java @@ -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() { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/InterfaceData.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/InterfaceData.java index 8c3db9c..1746c03 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/InterfaceData.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/InterfaceData.java @@ -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 = ""; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Actor.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Actor.java index b95ef10..bec0b10 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Actor.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Actor.java @@ -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) {