Package net.sf.colossus.server
Class BattleServerSide
- java.lang.Object
-
- net.sf.colossus.game.Battle
-
- net.sf.colossus.server.BattleServerSide
-
public final class BattleServerSide extends Battle
Class Battle holds data about a Titan battle. It has utility functions related to incrementing the phase, managing moves, and managing strikes.- Author:
- David Ripton, Romain Dolbeau
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
BattleServerSide.AngelSummoningStates
private class
BattleServerSide.BattlePhaseAdvancer
static class
BattleServerSide.LegionTags
-
Field Summary
Fields Modifier and Type Field Description private BattleServerSide.LegionTags
activeLegionTag
private boolean
attackerElim
private boolean
attackerEntered
private BattleMovementServerSide
battleMovement
private boolean
battleOver
private int
carryDamage
private java.util.Set<BattleHex>
carryTargets
Set of hexes for valid carry targetsprivate boolean
conceded
private boolean
defenderElim
private static java.util.logging.Logger
LOGGER
private BattlePhase
phase
private PhaseAdvancer
phaseAdvancer
private int
pointsScored
private boolean
preStrikeEffectsApplied
private Server
server
private BattleServerSide.AngelSummoningStates
summonState
-
Fields inherited from class net.sf.colossus.game.Battle
attacker, battleTurnNumber, defender, game
-
-
Constructor Summary
Constructors Constructor Description BattleServerSide(GameServerSide game, Legion attacker, Legion defender, BattleServerSide.LegionTags activeLegionTag, MasterHex masterHex, BattlePhase phase)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
addCarryTarget(BattleHex hex)
private void
advancePhase()
(package private) void
applyCarries(CreatureServerSide target)
private void
applyPreStrikeEffects()
(package private) boolean
arePreStrikeEffectsApplied()
private void
checkForElimination()
void
cleanRefs()
private void
cleanup()
private void
cleanupOneDeadCritter(Creature critter)
(package private) void
clearCarryTargets()
private void
commitMoves()
private void
commitStrikes()
(package private) void
concede(Player player)
Mark all of the conceding player's critters as dead.(package private) java.lang.String
doMove(int tag, BattleHex hex)
If legal, move critter to hex and return true.(package private) void
doneReinforcing()
Needs to be called when reinforcement is done.(package private) void
doneWithMoves()
(package private) void
doneWithStrikes()
Checks now all at same place in Server(package private) java.util.Set<BattleHex>
findTargetHexes(CreatureServerSide critter, boolean rangestrike)
Return a set of hexes containing targets that the critter may strike(package private) void
finishSummoningAngel(boolean placeNewChit)
Called from Game after the SummonAngel finishes.(package private) LegionServerSide
getActiveLegion()
java.util.List<BattleCritter>
getAllCritters()
Get all BattleCritters / BattleUnits Abstract because currently implementation is different, but needed on both side, e.g.LegionServerSide
getAttackingLegion()
Override with covariant return type to ease transition into new model.Legion
getBattleActiveLegion()
(package private) Player
getBattleActivePlayer()
(package private) BattlePhase
getBattlePhase()
(package private) int
getCarryDamage()
(package private) java.util.Set<java.lang.String>
getCarryTargetDescriptions()
(package private) java.util.Set<BattleHex>
getCarryTargets()
Return the set of hexes with valid carry targets.(package private) CreatureServerSide
getCreatureSS(BattleHex hex)
LegionServerSide
getDefendingLegion()
Override with covariant return type to ease transition into new model.GameServerSide
getGame()
Override with covariant return type to ease transition into new model.private LegionServerSide
getInactiveLegion()
private LegionServerSide
getLegion(BattleServerSide.LegionTags legionTag)
(package private) BattleServerSide.AngelSummoningStates
getSummonState()
(package private) void
init()
We need to do two-stage construction so that game.battle is non-null earlier.private void
initBattleChits(LegionServerSide legion)
boolean
isDefenderActive()
boolean
isForcedStrikeRemaining()
boolean
isInContact(BattleCritter critter, boolean countDead)
Return true if there are any enemies adjacent to this critter.private boolean
isOver()
(package private) void
leaveCarryMode()
private void
moveCritterToHexAndInformClients(CreatureServerSide critter, BattleHex hex)
int
numInContact(BattleCritter striker, boolean countDead)
Return the number of enemy creatures in contact with this critter.private void
placeCritter(CreatureServerSide critter)
private void
placeLegion(Legion legion)
private boolean
recruitReinforcement()
private void
removeDeadCreatures()
private void
removeDeadCreaturesFromLegion(LegionServerSide legion)
private void
removeOffboardCreatures()
If any creatures were left off-board, kill them.(package private) void
setCarryDamage(int carryDamage)
(package private) void
setCarryTargets(java.util.Set<BattleHex> carryTargets)
(package private) void
setPreStrikeEffectsApplied(boolean preStrikeEffectsApplied)
void
setServer(Server server)
(package private) void
setSummonState(BattleServerSide.AngelSummoningStates summonState)
private boolean
setupFight()
private boolean
setupMove()
private boolean
setupRecruit()
private boolean
setupSummon()
(package private) void
undoMove(BattleHex hex)
-
Methods inherited from class net.sf.colossus.game.Battle
computeSkillPenaltyRangestrikeThrough, countBrambleHexes, getBattleTurnNumber, getCritter, getDirection, getLegionByPlayer, getLocation, getRange, isLOSBlocked, isLOSBlockedDir, isObstacle, isOccupied, isRangestrikePossible, setBattleTurnNumber, toLeft
-
-
-
-
Field Detail
-
LOGGER
private static final java.util.logging.Logger LOGGER
-
server
private Server server
-
activeLegionTag
private BattleServerSide.LegionTags activeLegionTag
-
phase
private BattlePhase phase
-
summonState
private BattleServerSide.AngelSummoningStates summonState
-
carryDamage
private int carryDamage
-
attackerElim
private boolean attackerElim
-
defenderElim
private boolean defenderElim
-
battleOver
private boolean battleOver
-
attackerEntered
private boolean attackerEntered
-
conceded
private boolean conceded
-
preStrikeEffectsApplied
private boolean preStrikeEffectsApplied
-
carryTargets
private final java.util.Set<BattleHex> carryTargets
Set of hexes for valid carry targets
-
phaseAdvancer
private final PhaseAdvancer phaseAdvancer
-
pointsScored
private int pointsScored
-
battleMovement
private final BattleMovementServerSide battleMovement
-
-
Constructor Detail
-
BattleServerSide
BattleServerSide(GameServerSide game, Legion attacker, Legion defender, BattleServerSide.LegionTags activeLegionTag, MasterHex masterHex, BattlePhase phase)
-
-
Method Detail
-
setServer
public void setServer(Server server)
-
cleanRefs
public void cleanRefs()
-
placeLegion
private void placeLegion(Legion legion)
-
placeCritter
private void placeCritter(CreatureServerSide critter)
-
initBattleChits
private void initBattleChits(LegionServerSide legion)
-
init
void init()
We need to do two-stage construction so that game.battle is non-null earlier.
-
getGame
public GameServerSide getGame()
Override with covariant return type to ease transition into new model.
-
isDefenderActive
public boolean isDefenderActive()
-
getBattleActiveLegion
public Legion getBattleActiveLegion()
- Specified by:
getBattleActiveLegion
in classBattle
-
getBattleActivePlayer
Player getBattleActivePlayer()
-
getAttackingLegion
public LegionServerSide getAttackingLegion()
Override with covariant return type to ease transition into new model.- Overrides:
getAttackingLegion
in classBattle
-
getDefendingLegion
public LegionServerSide getDefendingLegion()
Override with covariant return type to ease transition into new model.- Overrides:
getDefendingLegion
in classBattle
-
getActiveLegion
LegionServerSide getActiveLegion()
-
getInactiveLegion
private LegionServerSide getInactiveLegion()
-
getLegion
private LegionServerSide getLegion(BattleServerSide.LegionTags legionTag)
-
getBattlePhase
BattlePhase getBattlePhase()
-
isOver
private boolean isOver()
-
advancePhase
private void advancePhase()
-
setupSummon
private boolean setupSummon()
-
setupRecruit
private boolean setupRecruit()
-
setupMove
private boolean setupMove()
-
setupFight
private boolean setupFight()
-
getSummonState
BattleServerSide.AngelSummoningStates getSummonState()
-
setSummonState
void setSummonState(BattleServerSide.AngelSummoningStates summonState)
-
finishSummoningAngel
void finishSummoningAngel(boolean placeNewChit)
Called from Game after the SummonAngel finishes.
-
recruitReinforcement
private boolean recruitReinforcement()
-
doneReinforcing
void doneReinforcing()
Needs to be called when reinforcement is done.
-
getCarryDamage
int getCarryDamage()
-
setCarryDamage
void setCarryDamage(int carryDamage)
-
undoMove
void undoMove(BattleHex hex)
-
concede
void concede(Player player)
Mark all of the conceding player's critters as dead.
-
removeOffboardCreatures
private void removeOffboardCreatures()
If any creatures were left off-board, kill them. If they were newly summoned or recruited, unsummon or unrecruit them instead.
-
commitMoves
private void commitMoves()
-
doneWithMoves
void doneWithMoves()
-
applyPreStrikeEffects
private void applyPreStrikeEffects()
-
arePreStrikeEffectsApplied
boolean arePreStrikeEffectsApplied()
-
setPreStrikeEffectsApplied
void setPreStrikeEffectsApplied(boolean preStrikeEffectsApplied)
-
leaveCarryMode
void leaveCarryMode()
-
removeDeadCreatures
private void removeDeadCreatures()
-
removeDeadCreaturesFromLegion
private void removeDeadCreaturesFromLegion(LegionServerSide legion)
-
cleanupOneDeadCritter
private void cleanupOneDeadCritter(Creature critter)
-
checkForElimination
private void checkForElimination()
-
commitStrikes
private void commitStrikes()
-
isForcedStrikeRemaining
public boolean isForcedStrikeRemaining()
-
doneWithStrikes
void doneWithStrikes()
Checks now all at same place in Server
-
findTargetHexes
java.util.Set<BattleHex> findTargetHexes(CreatureServerSide critter, boolean rangestrike)
Return a set of hexes containing targets that the critter may strike- Parameters:
battleUnit
- the striking creaturerangestrike
- Whether to include rangestrike targets- Returns:
- a set of hexes containing targets
-
getCarryTargets
java.util.Set<BattleHex> getCarryTargets()
Return the set of hexes with valid carry targets.
-
getCarryTargetDescriptions
java.util.Set<java.lang.String> getCarryTargetDescriptions()
-
clearCarryTargets
void clearCarryTargets()
-
setCarryTargets
void setCarryTargets(java.util.Set<BattleHex> carryTargets)
-
addCarryTarget
void addCarryTarget(BattleHex hex)
-
applyCarries
void applyCarries(CreatureServerSide target)
-
doMove
java.lang.String doMove(int tag, BattleHex hex)
If legal, move critter to hex and return true. Else return false.
-
moveCritterToHexAndInformClients
private void moveCritterToHexAndInformClients(CreatureServerSide critter, BattleHex hex)
-
cleanup
private void cleanup()
-
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 classBattle
-
getCreatureSS
CreatureServerSide getCreatureSS(BattleHex hex)
-
isInContact
public boolean isInContact(BattleCritter critter, boolean countDead)
Return true if there are any enemies adjacent to this critter.- Specified by:
isInContact
in classBattle
- Parameters:
critter
- The critter to check whether it is in contact with any enemy crittercountDead
- Dead critters count as being in contact only if countDead is true.
-
numInContact
public int numInContact(BattleCritter striker, boolean countDead)
Return the number of enemy creatures in contact with this critter. Dead critters count as being in contact only if countDead is true.
-
-