net.sf.colossus.server
Class BattleServerSide

java.lang.Object
  extended by net.sf.colossus.game.Battle
      extended by 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
static class BattleServerSide.AngelSummoningStates
           
private  class BattleServerSide.BattlePhaseAdvancer
           
static class BattleServerSide.LegionTags
           
 
Field Summary
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 targets
private  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
BattleServerSide(GameServerSide game, Legion attacker, Legion defender, BattleServerSide.LegionTags activeLegionTag, MasterHex masterHex, BattlePhase phase)
           
 
Method Summary
(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)  boolean 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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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.

Overrides:
getGame in class Battle

isDefenderActive

public boolean isDefenderActive()

getBattleActiveLegion

public Legion getBattleActiveLegion()
Specified by:
getBattleActiveLegion in class Battle

getBattleActivePlayer

Player getBattleActivePlayer()

getAttackingLegion

public LegionServerSide getAttackingLegion()
Override with covariant return type to ease transition into new model.

Overrides:
getAttackingLegion in class Battle

getDefendingLegion

public LegionServerSide getDefendingLegion()
Override with covariant return type to ease transition into new model.

Overrides:
getDefendingLegion in class Battle

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 creature
rangestrike - 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

boolean 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 class Battle

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 class Battle
Parameters:
critter - The critter to check whether it is in contact with any enemy critter
countDead - 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.