net.sf.colossus.server
Class GameServerSide

java.lang.Object
  extended by net.sf.colossus.game.Game
      extended by net.sf.colossus.server.GameServerSide

public final class GameServerSide
extends Game

Class Game gets and holds high-level data about a Titan game. This is the old design with the game information in the server. Some of the functionality here is supposed to be moved into the Game class which then can be shared between server and clients (the class, not the instances). Other parts should be moved into the Server class or elsewhere.

Author:
David Ripton, Bruce Sherrod, Romain Dolbeau

Nested Class Summary
(package private)  class GameServerSide.GamePhaseAdvancer
          Wrap the complexity of phase advancing.
 
Field Summary
private  boolean acquiring
           
private  int activePlayerNum
           
private  java.util.Set<Proposal> attackerProposals
           
private  boolean battleInProgress
           
private  BattleStrikeServerSide battleStrikeSS
           
private  java.util.LinkedList<Player> colorPickOrder
           
private  java.util.List<PlayerColor> colorsLeft
           
private  Player cvbPlayer
           
private  java.util.Set<Proposal> defenderProposals
           
private  java.lang.String engagementResult
           
private  java.lang.String flagFilename
           
private static int gameCounter
           
private  java.lang.String gameId
           
private  GameSaving gameSaver
          The object that handles the Game Saving procedure
private  History history
           
private  java.lang.String hostingPlayerName
           
private  boolean hotSeatMode
           
private  int lastRecruitTurnNumber
           
private  boolean loadingGame
           
private static java.util.logging.Logger LOGGER
           
private  MovementServerSide movementSS
           
private  INotifyWebServer notifyWebServer
           
private  Options options
           
private  boolean pendingAdvancePhase
           
private  PhaseAdvancer phaseAdvancer
           
private  int pointsScored
           
private  boolean reinforcing
           
private  boolean replayOngoing
           
private  Server server
           
(package private)  boolean serverGotAll
           
private  WebClient startingWebClient
           
private  boolean summoning
           
private  int turnCombatFinished
           
(package private)  java.lang.Object waitForClientsMutex
           
private  WhatNextManager whatNextManager
           
private  Legion winner
           
 
Fields inherited from class net.sf.colossus.game.Game
battle, phase, players, turnNumber
 
Constructor Summary
GameServerSide(WhatNextManager whatNextMgr, Options serverOptions, Variant variant)
          The normal constructor to be used everywhere
 
Method Summary
 void acquireMaybe(LegionServerSide legion, int scoreBeforeAdd, int pointsToAdd)
          If the legion can acquire (height < 7), find out which acquirable it might get for the pointsToAdd, and fire off the askAcquirable messages.
 void actOnWaitForClientsCompleted(boolean gotAll)
           
(package private)  void addCreatureEvent(AddCreatureAction event, java.lang.String reason)
           
private  void addPlayersFromOptions()
           
(package private)  void advancePhase(Phase oldPhase, Player player)
          Advance to the next phase, only if the passed oldPhase and playerName are current.
private  void announceGameOver(boolean disposeFollows)
           
private  boolean anonymousRecruitLegal(Legion legion, CreatureType recruit)
          Return true if this legion can recruit this recruit without disclosing a recruiter.
(package private)  void askAcquireAngel(PlayerServerSide player, Legion legion, java.util.List<CreatureType> recruits)
           
(package private)  void assignColor(Player player, PlayerColor color)
           
private  void assignColors()
           
private  void assignTowers()
          Randomize towers by rolling dice and rerolling ties.
(package private)  void autoSave()
           
private  void checkEngagementDone()
           
(package private)  void checkForVictory()
           
private  void cleanupWhenGameOver()
           
private  void clearFlags()
           
(package private)  void concede(Legion attacker)
           
(package private)  PlayerServerSide createAndAddPlayer(java.lang.String name, java.lang.String shortTypeName)
           
 void createBattle(Legion attacker, Legion defender, BattleServerSide.LegionTags activeLegionTag, MasterHex engagementHex, BattlePhase battlePhase)
           
private  void createLocalClient(PlayerServerSide player, boolean createGUI, java.lang.String type)
           
 void createLocalClients()
           
(package private)  void createSummonAngel(Legion attacker)
           
(package private)  void dispose()
           
(package private)  java.lang.String doMove(Legion legion, MasterHex hex, EntrySide entrySide, boolean teleport, CreatureType teleportingLord)
          Move the legion to the hex if legal.
(package private)  void doneAcquiringAngels()
           
(package private)  void doneReinforcing()
           
(package private)  void doNotConcede(Legion legion)
          Used only for pre-battle attacker concession.
(package private)  void doNotFlee(Legion legion)
           
(package private)  void doRecruit(Legion legion, CreatureType recruit, CreatureType recruiter)
          Add recruit to legion.
(package private)  boolean doSplit(Legion parent, java.lang.String childId, java.util.List<CreatureType> creaturesToSplit)
          Return true and call Server.didSplit() if the split succeeded.
(package private)  void doSummon(Summoning event)
          Handles summoning of a creature.
 void editModeAddCreature(java.lang.String markerId, java.lang.String creatureName)
           
 void editModeRelocateLegion(java.lang.String markerId, java.lang.String hexLabel)
           
 void editModeRemoveCreature(java.lang.String markerId, java.lang.String creatureName)
           
(package private)  void engage(MasterHex hex)
           
private  void engage2(MasterHex hex)
           
private  void engage3(MasterHex hex)
           
(package private)  void fight(MasterHex hex)
           
private  java.util.List<CreatureType> findEligibleRecruiters(Legion legion, java.lang.String recruitName)
          Return a list of eligible recruiter creatures.
(package private)  java.util.List<CreatureType> findEligibleRecruits(Legion legion, MasterHex hex)
          Return a list of eligible recruits, as Creatures.
(package private)  Player findNetworkPlayer(java.lang.String playerName)
          Find a Player for a new remote client.
(package private)  void finishBattle(MasterHex masterHex, boolean attackerEntered, int points, int turnDone)
           
(package private)  void flee(Legion legion)
           
 boolean gameShouldContinue()
           
(package private)  Player getActivePlayer()
           
(package private)  int getActivePlayerNum()
           
(package private) static java.util.List<MasterHex> getBalancedTowers(int numPlayers, java.util.List<MasterHex> towerList)
          Return a list with a balanced order of numPlayer towers chosen from towerList, which must hold numeric strings.
(package private)  BattleServerSide getBattleSS()
           
 BattleStrikeServerSide getBattleStrikeSS()
           
(package private)  History getHistory()
           
 java.lang.String getHostingPlayer()
           
(package private)  int getIntOption(java.lang.String optname)
           
 LegionServerSide getLegionByMarkerId(java.lang.String markerId)
           
 int getMovementRoll()
           
(package private)  Player getNextColorPicker()
           
(package private)  INotifyWebServer getNotifyWebServer()
           
(package private)  boolean getOption(java.lang.String optname)
           
(package private)  IOptions getOptions()
           
 Player getPlayerByMarkerId(java.lang.String markerId)
           
(package private)  Player getPlayerByName(java.lang.String playerName)
          Resolve playerName into Player object.
(package private)  Player getPlayerByNameIgnoreNull(java.lang.String playerName)
          Resolve playerName into Player object.
(package private)  Player getPlayerByShortColor(java.lang.String shortColor)
          NOTE: to be used only during loading a Game! Client side has a more sophisticated version that takes slain players and their inherited markers into account.
private  Player getPlayerUsingColor(java.lang.String shortColor)
           
private  int getPort()
           
(package private)  Server getServer()
           
private  LegionServerSide getStartingLegion(java.lang.String markerId, MasterHex hex, Player player)
           
(package private)  java.lang.String getUniqueName(java.lang.String name, Player player)
          If the name is taken, add random digits to the end.
private  Player getWinner()
           
private  void handleConcession(Legion loser, Legion winner, boolean fled)
           
private  void handleNegotiation(Proposal results)
           
(package private)  void handlePlayerWithdrawal(Player player)
          A player requested he wants to withdraw (or connection was lost, and server socket handling does withdraw then).
 boolean hasConventionalMove(LegionServerSide legion, MasterHex hex, int roll, boolean ignoreFriends)
           
private  void hotSeatModeChangeBoards()
           
private  void initServer()
           
private  boolean isAutoSavePoint()
          So far, we do autosave only at begin of each players turn, i.e.
(package private)  boolean isBattleInProgress()
           
(package private)  boolean isLoadingGame()
           
(package private)  boolean isReplayOngoing()
           
 void kickstartGame()
           
(package private)  void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord)
           
(package private)  void legionUndoMoveEvent(Legion legion)
           
 boolean loadGame(org.jdom.Element root)
           
(package private)  boolean loadGame2()
           
 boolean loadGameAndWaitUntilOver(org.jdom.Element root)
           
private  void makeMovementRoll()
           
private  java.lang.String makeNameByType(java.lang.String templateName, java.lang.String type)
           
(package private) static GameServerSide makeNewGameServerSide(Variant variant)
          Shortcut for UnitTests, to create a Game with dummy input objects on the fly.
(package private)  void makeProposal(java.lang.String playerName, java.lang.String proposalString)
          playerName offers proposal.
(package private)  void mergeEvent(java.lang.String splitoffId, java.lang.String survivorId)
           
(package private)  void movementRollEvent(Player player, int roll)
           
(package private)  int mulligan()
           
private  boolean nameIsTaken(java.lang.String name, Player checkedPlayer)
           
(package private)  boolean newGame(java.lang.String hostingPlayer)
          Start a new game.
(package private)  void newGame2()
           
private  void newGame3()
          Done picking player colors; proceed to start game.
(package private)  void nextPickColor()
           
private  void placeInitialLegion(PlayerServerSide player, java.lang.String markerId)
           
(package private)  void playerElimEvent(Player player, Player slayer)
           
private  void readLegion(org.jdom.Element leg, PlayerServerSide player)
           
(package private)  void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter)
           
(package private)  void reinforce(Legion legion)
          Called locally and from Battle.
(package private)  void removeCreatureEvent(Legion legion, CreatureType creature, java.lang.String reason)
           
private  boolean resyncBackupData()
           
(package private)  void revealEvent(boolean allPlayers, java.util.List<Player> players, Legion legion, java.util.List<CreatureType> creatureNames, java.lang.String reason)
           
(package private)  void saveGameWithErrorHandling(java.lang.String filename, boolean autoSave)
           
private  void setEngagementResult(java.lang.String aResult, Legion winner, int aPoints, int aTurn)
           
 void setFlagFilename(java.lang.String flagFilename)
           
 void setGameOver(boolean gameOver, java.lang.String message)
           
private  void setupFight()
           
private  void setupMove()
           
private  void setupMuster()
           
private  void setupPhase()
           
private  void setupSplit()
           
private  void sortPlayersDescendingTower()
          Temporary solution ...
(package private)  void splitEvent(Legion parent, Legion child, java.util.List<CreatureType> splitoffs)
           
 boolean startNewGameAndWaitUntilOver(java.lang.String hostingPlayer)
           
private  boolean startServerAndWaitUntilNotifiedThatWaitForClientsCompleted()
           
 void stopAllDueToFunctionalTestCompleted()
           
private  void syncOptions()
          Send all current game option values to all clients.
(package private)  void undoMove(Legion legion)
           
(package private)  void undoRecruitEvent(Legion legion)
           
private  void updateCaretakerDisplays()
          Update the dead and available counts for all creature types on all clients.
private  void updateCaretakerDisplaysFor(CreatureType type)
          Update the dead and available counts for a creature type on all clients.
 
Methods inherited from class net.sf.colossus.game.Game
addPlayer, clearEngagementData, containsOpposingLegions, createEngagement, findEngagements, findLegionsWithSummonables, getAllLegions, getAttacker, getBattle, getBattleActiveLegion, getBattleSite, getBattleStrike, getBattleTurnNumber, getCaretaker, getDefender, getEnemyLegions, getEnemyLegions, getEngagement, getFirstEnemyLegion, getFirstFriendlyLegion, getFirstLegion, getFriendlyLegions, getGameOverMessage, getLegionsByHex, getNumEnemyLegions, getNumFriendlyLegions, getNumHumansRemaining, getNumLegions, getNumLivingCreatures, getNumLivingPlayers, getNumPlayers, getNumRemoteRemaining, getPhase, getPlayers, getPreliminaryPlayerNames, getTurnNumber, getVariant, isEngagementInProgress, isEngagementOngoing, isGameOver, isOccupied, isPhase, onlyAIsRemain, setMovementRoll, setPhase, setTurnNumber
 
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

activePlayerNum

private int activePlayerNum

lastRecruitTurnNumber

private int lastRecruitTurnNumber

battleInProgress

private boolean battleInProgress

summoning

private boolean summoning

reinforcing

private boolean reinforcing

acquiring

private boolean acquiring

pointsScored

private int pointsScored

turnCombatFinished

private int turnCombatFinished

winner

private Legion winner

engagementResult

private java.lang.String engagementResult

pendingAdvancePhase

private boolean pendingAdvancePhase

loadingGame

private boolean loadingGame

replayOngoing

private boolean replayOngoing

server

private Server server

attackerProposals

private final java.util.Set<Proposal> attackerProposals

defenderProposals

private final java.util.Set<Proposal> defenderProposals

colorPickOrder

private final java.util.LinkedList<Player> colorPickOrder

colorsLeft

private java.util.List<PlayerColor> colorsLeft

phaseAdvancer

private final PhaseAdvancer phaseAdvancer

options

private final Options options

hostingPlayerName

private java.lang.String hostingPlayerName

flagFilename

private java.lang.String flagFilename

notifyWebServer

private INotifyWebServer notifyWebServer

startingWebClient

private WebClient startingWebClient

whatNextManager

private final WhatNextManager whatNextManager

history

private History history

battleStrikeSS

private final BattleStrikeServerSide battleStrikeSS

movementSS

private final MovementServerSide movementSS

gameSaver

private final GameSaving gameSaver
The object that handles the Game Saving procedure


gameCounter

private static int gameCounter

gameId

private final java.lang.String gameId

hotSeatMode

private boolean hotSeatMode

cvbPlayer

private Player cvbPlayer

waitForClientsMutex

java.lang.Object waitForClientsMutex

serverGotAll

boolean serverGotAll
Constructor Detail

GameServerSide

public GameServerSide(WhatNextManager whatNextMgr,
                      Options serverOptions,
                      Variant variant)
The normal constructor to be used everywhere

Parameters:
whatNextMgr - A WhatNextManager object which manages the main control flow which thing to do 'next' when this game is over.
serverOptions - The server side options, initialized from the GetPlayers dialog and/or command line options.
variant - Variant of this game
Method Detail

makeNewGameServerSide

static GameServerSide makeNewGameServerSide(Variant variant)
Shortcut for UnitTests, to create a Game with dummy input objects on the fly.


setFlagFilename

public void setFlagFilename(java.lang.String flagFilename)

getHostingPlayer

public java.lang.String getHostingPlayer()

getPort

private int getPort()

initServer

private void initServer()

actOnWaitForClientsCompleted

public void actOnWaitForClientsCompleted(boolean gotAll)

startServerAndWaitUntilNotifiedThatWaitForClientsCompleted

private boolean startServerAndWaitUntilNotifiedThatWaitForClientsCompleted()

createLocalClients

public void createLocalClients()

createLocalClient

private void createLocalClient(PlayerServerSide player,
                               boolean createGUI,
                               java.lang.String type)

updateCaretakerDisplaysFor

private void updateCaretakerDisplaysFor(CreatureType type)
Update the dead and available counts for a creature type on all clients.


updateCaretakerDisplays

private void updateCaretakerDisplays()
Update the dead and available counts for all creature types on all clients.


cleanupWhenGameOver

private void cleanupWhenGameOver()

clearFlags

private void clearFlags()

addPlayersFromOptions

private void addPlayersFromOptions()

startNewGameAndWaitUntilOver

public boolean startNewGameAndWaitUntilOver(java.lang.String hostingPlayer)

newGame

boolean newGame(java.lang.String hostingPlayer)
Start a new game.


newGame2

void newGame2()

sortPlayersDescendingTower

private void sortPlayersDescendingTower()
Temporary solution ... I do not know a better way how to do the sorting on players (type List) itself. I don't want to pull up the Comparator predicate, because ClientSide might have totally different idea of the right "order"...


nameIsTaken

private boolean nameIsTaken(java.lang.String name,
                            Player checkedPlayer)

getUniqueName

java.lang.String getUniqueName(java.lang.String name,
                               Player player)
If the name is taken, add random digits to the end.


findNetworkPlayer

Player findNetworkPlayer(java.lang.String playerName)
Find a Player for a new remote client. If loading a game, this is the network player with a matching player name. If a new game, it's the first network player whose name is still set to


syncOptions

private void syncOptions()
Send all current game option values to all clients.


assignColors

private void assignColors()

nextPickColor

void nextPickColor()

makeNameByType

private java.lang.String makeNameByType(java.lang.String templateName,
                                        java.lang.String type)

assignColor

void assignColor(Player player,
                 PlayerColor color)

getNextColorPicker

Player getNextColorPicker()

newGame3

private void newGame3()
Done picking player colors; proceed to start game.


assignTowers

private void assignTowers()
Randomize towers by rolling dice and rerolling ties.


getBalancedTowers

static java.util.List<MasterHex> getBalancedTowers(int numPlayers,
                                                   java.util.List<MasterHex> towerList)
Return a list with a balanced order of numPlayer towers chosen from towerList, which must hold numeric strings.


getServer

Server getServer()

createAndAddPlayer

PlayerServerSide createAndAddPlayer(java.lang.String name,
                                    java.lang.String shortTypeName)

getActivePlayerNum

int getActivePlayerNum()

getActivePlayer

Player getActivePlayer()

makeMovementRoll

private void makeMovementRoll()

getMovementRoll

public int getMovementRoll()
Overrides:
getMovementRoll in class Game

getPlayerByNameIgnoreNull

Player getPlayerByNameIgnoreNull(java.lang.String playerName)
Resolve playerName into Player object. Name might be null, then returns null.

Parameters:
playerName -
Returns:
The player object for given player name, null if name was null

getPlayerByName

Player getPlayerByName(java.lang.String playerName)
Resolve playerName into Player object. Name must not be null. If no player for given name found, it would throw IllegalArgumentException

Parameters:
playerName -
Returns:
Player object for given name.

getPlayerByShortColor

Player getPlayerByShortColor(java.lang.String shortColor)
NOTE: to be used only during loading a Game! Client side has a more sophisticated version that takes slain players and their inherited markers into account.


handlePlayerWithdrawal

void handlePlayerWithdrawal(Player player)
A player requested he wants to withdraw (or connection was lost, and server socket handling does withdraw then).

Parameters:
player - The player that wishes to withdraw from the game TODO Notify all players.

getWinner

private Player getWinner()

checkForVictory

void checkForVictory()

announceGameOver

private void announceGameOver(boolean disposeFollows)

isLoadingGame

boolean isLoadingGame()

isReplayOngoing

boolean isReplayOngoing()

stopAllDueToFunctionalTestCompleted

public void stopAllDueToFunctionalTestCompleted()

kickstartGame

public void kickstartGame()

advancePhase

void advancePhase(Phase oldPhase,
                  Player player)
Advance to the next phase, only if the passed oldPhase and playerName are current.


setGameOver

public void setGameOver(boolean gameOver,
                        java.lang.String message)
Overrides:
setGameOver in class Game

setupPhase

private void setupPhase()

setupSplit

private void setupSplit()

hotSeatModeChangeBoards

private void hotSeatModeChangeBoards()

setupMove

private void setupMove()

setupFight

private void setupFight()

setupMuster

private void setupMuster()

isAutoSavePoint

private boolean isAutoSavePoint()
So far, we do autosave only at begin of each players turn, i.e. when a split phase was just set up.

Returns:
Whether now is a time when autosave is due.

autoSave

void autoSave()

saveGameWithErrorHandling

void saveGameWithErrorHandling(java.lang.String filename,
                               boolean autoSave)

loadGameAndWaitUntilOver

public boolean loadGameAndWaitUntilOver(org.jdom.Element root)

loadGame

public boolean loadGame(org.jdom.Element root)

createBattle

public void createBattle(Legion attacker,
                         Legion defender,
                         BattleServerSide.LegionTags activeLegionTag,
                         MasterHex engagementHex,
                         BattlePhase battlePhase)

readLegion

private void readLegion(org.jdom.Element leg,
                        PlayerServerSide player)
                 throws org.jdom.DataConversionException
Throws:
org.jdom.DataConversionException

loadGame2

boolean loadGame2()

resyncBackupData

private boolean resyncBackupData()

findEligibleRecruits

java.util.List<CreatureType> findEligibleRecruits(Legion legion,
                                                  MasterHex hex)
Return a list of eligible recruits, as Creatures. TODO second parameter is probably superfluous


findEligibleRecruiters

private java.util.List<CreatureType> findEligibleRecruiters(Legion legion,
                                                            java.lang.String recruitName)
Return a list of eligible recruiter creatures.


anonymousRecruitLegal

private boolean anonymousRecruitLegal(Legion legion,
                                      CreatureType recruit)
Return true if this legion can recruit this recruit without disclosing a recruiter.


doRecruit

void doRecruit(Legion legion,
               CreatureType recruit,
               CreatureType recruiter)
Add recruit to legion.


editModeAddCreature

public void editModeAddCreature(java.lang.String markerId,
                                java.lang.String creatureName)

editModeRemoveCreature

public void editModeRemoveCreature(java.lang.String markerId,
                                   java.lang.String creatureName)

editModeRelocateLegion

public void editModeRelocateLegion(java.lang.String markerId,
                                   java.lang.String hexLabel)

acquireMaybe

public void acquireMaybe(LegionServerSide legion,
                         int scoreBeforeAdd,
                         int pointsToAdd)
If the legion can acquire (height < 7), find out which acquirable it might get for the pointsToAdd, and fire off the askAcquirable messages.

Parameters:
legion - Legion which earned the points and thus is entitled to get the acqirable
scoreBeforeAdd - Score from which to start
pointsToAdd - How many points were earned

dispose

void dispose()

placeInitialLegion

private void placeInitialLegion(PlayerServerSide player,
                                java.lang.String markerId)

hasConventionalMove

public boolean hasConventionalMove(LegionServerSide legion,
                                   MasterHex hex,
                                   int roll,
                                   boolean ignoreFriends)

createSummonAngel

void createSummonAngel(Legion attacker)

reinforce

void reinforce(Legion legion)
Called locally and from Battle.


doneReinforcing

void doneReinforcing()

doSummon

void doSummon(Summoning event)
Handles summoning of a creature.

Parameters:
event - The summoning event (or null if summoning is to be skipped) TODO get rid of downcasts

getBattleSS

BattleServerSide getBattleSS()

isBattleInProgress

boolean isBattleInProgress()

getHistory

History getHistory()

finishBattle

void finishBattle(MasterHex masterHex,
                  boolean attackerEntered,
                  int points,
                  int turnDone)

doSplit

boolean doSplit(Legion parent,
                java.lang.String childId,
                java.util.List<CreatureType> creaturesToSplit)
Return true and call Server.didSplit() if the split succeeded. Return false if it failed.


doMove

java.lang.String doMove(Legion legion,
                        MasterHex hex,
                        EntrySide entrySide,
                        boolean teleport,
                        CreatureType teleportingLord)
Move the legion to the hex if legal. Return a string telling the reason why it is illegal, or null if ok and move was done.


undoMove

void undoMove(Legion legion)

engage

void engage(MasterHex hex)

engage2

private void engage2(MasterHex hex)

engage3

private void engage3(MasterHex hex)

flee

void flee(Legion legion)

concede

void concede(Legion attacker)

doNotFlee

void doNotFlee(Legion legion)

doNotConcede

void doNotConcede(Legion legion)
Used only for pre-battle attacker concession.


makeProposal

void makeProposal(java.lang.String playerName,
                  java.lang.String proposalString)
playerName offers proposal.


fight

void fight(MasterHex hex)

handleConcession

private void handleConcession(Legion loser,
                              Legion winner,
                              boolean fled)

handleNegotiation

private void handleNegotiation(Proposal results)

askAcquireAngel

void askAcquireAngel(PlayerServerSide player,
                     Legion legion,
                     java.util.List<CreatureType> recruits)

doneAcquiringAngels

void doneAcquiringAngels()

setEngagementResult

private void setEngagementResult(java.lang.String aResult,
                                 Legion winner,
                                 int aPoints,
                                 int aTurn)

checkEngagementDone

private void checkEngagementDone()

gameShouldContinue

public boolean gameShouldContinue()

getLegionByMarkerId

public LegionServerSide getLegionByMarkerId(java.lang.String markerId)
Overrides:
getLegionByMarkerId in class Game

getPlayerByMarkerId

public Player getPlayerByMarkerId(java.lang.String markerId)

getPlayerUsingColor

private Player getPlayerUsingColor(java.lang.String shortColor)

getStartingLegion

private LegionServerSide getStartingLegion(java.lang.String markerId,
                                           MasterHex hex,
                                           Player player)

mulligan

int mulligan()

getOptions

IOptions getOptions()

getOption

boolean getOption(java.lang.String optname)

getIntOption

int getIntOption(java.lang.String optname)

addCreatureEvent

void addCreatureEvent(AddCreatureAction event,
                      java.lang.String reason)

removeCreatureEvent

void removeCreatureEvent(Legion legion,
                         CreatureType creature,
                         java.lang.String reason)

splitEvent

void splitEvent(Legion parent,
                Legion child,
                java.util.List<CreatureType> splitoffs)

mergeEvent

void mergeEvent(java.lang.String splitoffId,
                java.lang.String survivorId)

revealEvent

void revealEvent(boolean allPlayers,
                 java.util.List<Player> players,
                 Legion legion,
                 java.util.List<CreatureType> creatureNames,
                 java.lang.String reason)

playerElimEvent

void playerElimEvent(Player player,
                     Player slayer)

movementRollEvent

void movementRollEvent(Player player,
                       int roll)

legionMoveEvent

void legionMoveEvent(Legion legion,
                     MasterHex newHex,
                     EntrySide entrySide,
                     boolean teleport,
                     CreatureType lord)

legionUndoMoveEvent

void legionUndoMoveEvent(Legion legion)

recruitEvent

void recruitEvent(Legion legion,
                  CreatureType recruit,
                  CreatureType recruiter)

undoRecruitEvent

void undoRecruitEvent(Legion legion)

getNotifyWebServer

INotifyWebServer getNotifyWebServer()

getBattleStrikeSS

public BattleStrikeServerSide getBattleStrikeSS()