Package net.sf.colossus.client
Class BattleClientSide
java.lang.Object
net.sf.colossus.game.Battle
net.sf.colossus.client.BattleClientSide
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 Summary
FieldsModifier and TypeFieldDescriptionprivate Player
private BattlePhase
private final List<BattleUnit>
private static final Logger
Fields inherited from class net.sf.colossus.game.Battle
attacker, battleTurnNumber, defender, game
-
Constructor Summary
ConstructorsConstructorDescriptionBattleClientSide
(Game game, Legion attacker, Legion defender, MasterHex location) -
Method Summary
Modifier and TypeMethodDescriptionboolean
boolean
canStrike
(BattleCritter striker, BattleCritter target) Tell whether a given creature can strike (rangestrike included) the given potential target TODO duplicated in CreatureServerSidevoid
createBattleUnit
(String imageName, boolean isDefender, int tag, BattleHex hex, CreatureType type, Legion legion) findCrittersWithTargets
(Client client) Return the set of hexes with critters that have valid strike targets.findTargets
(int tag) findTargets
(BattleCritter battleUnit, boolean rangestrike) Return a set of hexes containing targets that the critter may strike TODO duplicated in BattleServerSideGet all BattleCritters / BattleUnits Abstract because currently implementation is different, but needed on both side, e.g.(package private) BattleUnit
getBattleUnit
(int tag) Get the BattleUnit with this tag.getBattleUnit
(BattleHex hex) getBattleUnitCS
(BattleHex hex) getBattleUnits
(BattleHex hex) void
init
(int battleTurnNumber, Player battleActivePlayer, BattlePhase battlePhase) boolean
isBattlePhase
(BattlePhase phase) boolean
isCritterOffboard
(BattleCritter critter) boolean
isInContact
(BattleCritter striker, boolean countDead) Return true if there are any enemies adjacent to this battleChit.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 BattleHexboolean
isTitanOffboard
(Player player) void
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.void
void
void
setBattleActivePlayer
(Player battleActivePlayer) void
setBattlePhase
(BattlePhase battlePhase) void
setupBattleFight
(BattlePhase battlePhase, Player battleActivePlayer) void
setupPhase
(BattlePhase phase, Player battleActivePlayer, int battleTurnNumber) Methods inherited from class net.sf.colossus.game.Battle
computeSkillPenaltyRangestrikeThrough, countBrambleHexes, getAttackingLegion, getBattleTurnNumber, getCritter, getDefendingLegion, getDirection, getGame, getLegionByPlayer, getLocation, getRange, isLOSBlocked, isLOSBlockedDir, isObstacle, isOccupied, isRangestrikePossible, setBattleTurnNumber, toLeft
-
Field Details
-
LOGGER
-
battlePhase
-
battleActivePlayer
-
battleUnits
-
-
Constructor Details
-
BattleClientSide
-
-
Method Details
-
init
-
getGameClientSide
-
getBattleActivePlayer
-
cleanupBattle
public void cleanupBattle() -
getBattleActiveLegion
- Specified by:
getBattleActiveLegion
in classBattle
-
getBattlePhase
-
setBattlePhase
-
isBattlePhase
-
setupPhase
-
getBattlePhaseName
-
setBattleActivePlayer
-
setupBattleFight
-
createBattleUnit
public BattleUnit createBattleUnit(String imageName, boolean isDefender, int tag, BattleHex hex, CreatureType type, Legion legion) -
anyOffboardCreatures
public boolean anyOffboardCreatures() -
isCritterOffboard
-
isTitanOffboard
-
getActiveBattleUnits
-
getInactiveBattleUnits
-
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 classBattle
-
getBattleUnits
-
getBattleUnits
-
getBattleUnitCS
-
getBattleUnit
-
getBattleUnit
Get the BattleUnit with this tag. -
resetAllBattleMoves
public void resetAllBattleMoves() -
markOffboardCreaturesDead
public void markOffboardCreaturesDead() -
removeDeadBattleChits
public void removeDeadBattleChits() -
findCrittersWithTargets
Return the set of hexes with critters that have valid strike targets.- Parameters:
client
- The client.
-
canStrike
Tell whether a given creature can strike (rangestrike included) the given potential target TODO duplicated in CreatureServerSide- Parameters:
striker
- The creature strikingtarget
- The potential target- Returns:
- whether striking target is a valid strike
-
findTargets
-
findTargets
Return a set of hexes containing targets that the critter may strike TODO duplicated in BattleServerSide- Parameters:
battleUnit
- the striking creaturerangestrike
- Whether to include rangestrike targets- Returns:
- a set of hexes containing targets
-
isRangestrikePossible
Deprecated.Should use an extension of Battle instead of Strike, with extension of Creature instead of BattleCritter and extra BattleHexReturn true if the rangestrike is possible. /* WARNING: this is a duplication from code in Battle ; caller should use a Battle instance instead. -
minRangeToEnemy
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
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 classBattle
-