Class BattleClientSide


  • public class BattleClientSide
    extends Battle
    Contains a lot of Battle related data Currently contains also many methods that were earlier in "Strike.java" (client package). First moved to here to make it easier to unify them with the server side version or possibly even with Battle from game package. TODO One handicap right now is isInContact(...) This method is used by getDice, getAttackerSkill and getStrikeNumber; they ask this from Client (and thus need client as argument). On server side, those methods are in CreatureServerSide (do they belong there?? IMHO not, because those calls are valid to to only during a battle, which might not always be the case and nothing prevents calling it then) and CreatureServerSide is able to resolve that question by itself.
    • Field Detail

      • LOGGER

        private static final java.util.logging.Logger LOGGER
      • battleActivePlayer

        private Player battleActivePlayer
      • battleUnits

        private final java.util.List<BattleUnit> battleUnits
    • Method Detail

      • init

        public void init​(int battleTurnNumber,
                         Player battleActivePlayer,
                         BattlePhase battlePhase)
      • getBattleActivePlayer

        public Player getBattleActivePlayer()
      • cleanupBattle

        public void cleanupBattle()
      • setBattlePhase

        public void setBattlePhase​(BattlePhase battlePhase)
      • isBattlePhase

        public boolean isBattlePhase​(BattlePhase phase)
      • setupPhase

        public void setupPhase​(BattlePhase phase,
                               Player battleActivePlayer,
                               int battleTurnNumber)
      • getBattlePhaseName

        public java.lang.String getBattlePhaseName()
      • setBattleActivePlayer

        public void setBattleActivePlayer​(Player battleActivePlayer)
      • setupBattleFight

        public void setupBattleFight​(BattlePhase battlePhase,
                                     Player battleActivePlayer)
      • anyOffboardCreatures

        public boolean anyOffboardCreatures()
      • isCritterOffboard

        public boolean isCritterOffboard​(BattleCritter critter)
      • isTitanOffboard

        public boolean isTitanOffboard​(Player player)
      • getActiveBattleUnits

        public java.util.List<BattleUnit> getActiveBattleUnits()
      • getInactiveBattleUnits

        public java.util.List<BattleUnit> getInactiveBattleUnits()
      • getAllCritters

        public java.util.List<BattleCritter> getAllCritters()
        Description copied from class: Battle
        Get all BattleCritters / BattleUnits Abstract because currently implementation is different, but needed on both side, e.g. for BattleMovement
        Specified by:
        getAllCritters in class Battle
      • getBattleUnits

        public java.util.List<BattleUnit> getBattleUnits()
      • getBattleUnit

        BattleUnit getBattleUnit​(int tag)
        Get the BattleUnit with this tag.
      • resetAllBattleMoves

        public void resetAllBattleMoves()
      • markOffboardCreaturesDead

        public void markOffboardCreaturesDead()
      • removeDeadBattleChits

        public void removeDeadBattleChits()
      • findCrittersWithTargets

        java.util.Set<BattleHex> findCrittersWithTargets​(Client client)
        Return the set of hexes with critters that have valid strike targets.
        Parameters:
        client - The client.
      • canStrike

        public boolean canStrike​(BattleCritter striker,
                                 BattleCritter target)
        Tell whether a given creature can strike (rangestrike included) the given potential target TODO duplicated in CreatureServerSide
        Parameters:
        striker - The creature striking
        target - The potential target
        Returns:
        whether striking target is a valid strike
      • findTargets

        public java.util.Set<BattleHex> findTargets​(int tag)
      • findTargets

        public java.util.Set<BattleHex> findTargets​(BattleCritter battleUnit,
                                                    boolean rangestrike)
        Return a set of hexes containing targets that the critter may strike TODO duplicated in BattleServerSide
        Parameters:
        battleUnit - the striking creature
        rangestrike - Whether to include rangestrike targets
        Returns:
        a set of hexes containing targets
      • isRangestrikePossible

        @Deprecated
        private boolean isRangestrikePossible​(BattleCritter striker,
                                              BattleCritter target)
        Deprecated.
        Should use an extension of Battle instead of Strike, with extension of Creature instead of BattleCritter and extra BattleHex
        Return true if the rangestrike is possible. /* WARNING: this is a duplication from code in Battle ; caller should use a Battle instance instead.
      • minRangeToEnemy

        @Deprecated
        public int minRangeToEnemy​(BattleCritter critter)
        Deprecated.
        Should use an extension of Battle instead of Strike // END OLD COMMENT Now this is moved from Strike to BattleClientSide. IMHO this is not a total duplicate of a method in Battle: Battle does not have a minRangeToEnemy, just minRange between concrete hexes, which IS actually called here. TODO can they be unified? Or move to e.g. some class in ai.helper package?
        Return the titan range (inclusive at both ends) from the critter to the closest enemy critter. Return OUT_OF_RANGE if there are none. // BEGIN OLD COMMENT (when it was in Strike.java): WARNING: this is a duplication from code in Battle ; caller should use a Battle instance instead.
      • isInContact

        public boolean isInContact​(BattleCritter striker,
                                   boolean countDead)
        Return true if there are any enemies adjacent to this battleChit. Dead critters count as being in contact only if countDead is true.
        Specified by:
        isInContact in class Battle