Package net.sf.colossus.server
Class GameServerSide
- java.lang.Object
-
- net.sf.colossus.game.Game
-
- net.sf.colossus.server.GameServerSide
-
- Direct Known Subclasses:
GameServerSideTestAccess
public 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 theGameclass which then can be shared between server and clients (the class, not the instances). Other parts should be moved into theServerclass or elsewhere.- Author:
- David Ripton, Bruce Sherrod, Romain Dolbeau
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) classGameServerSide.GamePhaseAdvancerWrap the complexity of phase advancing.
-
Field Summary
Fields Modifier and Type Field Description private booleanacquiringprivate intactivePlayerNumprivate java.util.Set<Proposal>attackerProposalsprivate booleanbattleInProgressprivate BattleStrikeServerSidebattleStrikeSSprivate java.util.LinkedList<Player>colorPickOrderprivate java.util.List<PlayerColor>colorsLeftprivate PlayercvbPlayerprivate java.util.Set<Proposal>defenderProposalsprivate java.lang.StringengagementResultprivate java.lang.StringflagFilenameprivate static intgameCounterprivate java.lang.StringgameIdprivate GameSavinggameSaverThe object that handles the Game Saving procedureprivate Historyhistoryprivate java.lang.StringhostingPlayerNameprivate booleanhotSeatModeprivate java.io.PrintWriteriscMessagesThe file where to send the spectator messages.private booleanisFirstAutoSaveFrom the very first autosave file name, we derive the file where to store all the messages that are sent to the internal spectator client.private intlastRecruitTurnNumberprivate booleanloadingGameprivate static java.util.logging.LoggerLOGGERprivate MovementServerSidemovementSSprivate INotifyWebServernotifyWebServerprivate Optionsoptionsprivate booleanpendingAdvancePhaseprivate PhaseAdvancerphaseAdvancerprivate intpointsScoredprivate booleanreinforcingprivate booleanreplayOngoingprivate Serverserver(package private) booleanserverGotAllprivate WebClientstartingWebClientprivate booleansummoningprivate intturnCombatFinished(package private) java.lang.ObjectwaitForClientsMutexprivate WhatNextManagerwhatNextManagerprivate Legionwinner-
Fields inherited from class net.sf.colossus.game.Game
battle, phase, players, turnNumber
-
-
Constructor Summary
Constructors Constructor Description GameServerSide(WhatNextManager whatNextMgr, Options serverOptions, Variant variant)The normal constructor to be used everywhere
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidacquireMaybe(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.voidactOnWaitForClientsCompleted(boolean gotAll)(package private) voidaddCreatureEvent(AddCreatureAction event, java.lang.String reason)private voidaddPlayersFromOptions()(package private) voidadvancePhase(Phase oldPhase, Player player)Advance to the next phase, only if the passed oldPhase and playerName are current.private voidannounceGameOver(boolean disposeFollows)private booleananonymousRecruitLegal(Legion legion, CreatureType recruit)Return true if this legion can recruit this recruit without disclosing a recruiter.(package private) voidaskAcquireAngel(PlayerServerSide player, Legion legion, java.util.List<CreatureType> recruits)(package private) voidassignColor(Player player, PlayerColor color)private voidassignColors()private voidassignTowers()Randomize towers by rolling dice and rerolling ties.(package private) voidautoSave()private voidcheckEngagementDone()(package private) voidcheckForVictory()private voidcleanupWhenGameOver()private voidclearFlags()(package private) voidconcede(Legion attacker)(package private) PlayerServerSidecreateAndAddPlayer(java.lang.String name, java.lang.String shortTypeName)voidcreateBattle(Legion attacker, Legion defender, BattleServerSide.LegionTags activeLegionTag, MasterHex engagementHex, BattlePhase battlePhase)private voidcreateInternalDummyClient()private voidcreateLocalClient(PlayerServerSide player, boolean createGUI, java.lang.String type)voidcreateLocalClients()(package private) voidcreateSummonAngel(Legion attacker)(package private) voiddispose()(package private) java.lang.StringdoMove(Legion legion, MasterHex hex, EntrySide entrySide, boolean teleport, CreatureType teleportingLord)Move the legion to the hex if legal.(package private) voiddoneAcquiringAngels()(package private) voiddoneReinforcing()(package private) voiddoNotConcede(Legion legion)Used only for pre-battle attacker concession.(package private) voiddoNotFlee(Legion legion)(package private) voiddoRecruit(Legion legion, CreatureType recruit, CreatureType recruiter)Add recruit to legion.(package private) booleandoSplit(Legion parent, java.lang.String childId, java.util.List<CreatureType> creaturesToSplit)Return true and call Server.didSplit() if the split succeeded.(package private) voiddoSummon(Summoning event)Handles summoning of a creature.voideditModeAddCreature(java.lang.String markerId, java.lang.String creatureName)voideditModeRelocateLegion(java.lang.String markerId, java.lang.String hexLabel)voideditModeRemoveCreature(java.lang.String markerId, java.lang.String creatureName)(package private) voidengage(MasterHex hex)private voidengage2(MasterHex hex)private voidengage3(MasterHex hex)(package private) voidfight(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) PlayerfindNetworkPlayer(java.lang.String playerName)Find a Player for a new remote client.(package private) voidfinishBattle(MasterHex masterHex, boolean attackerEntered, int points, int turnDone)(package private) voidflee(Legion legion)booleangameShouldContinue()(package private) PlayergetActivePlayer()(package private) intgetActivePlayerNum()(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) BattleServerSidegetBattleSS()BattleStrikeServerSidegetBattleStrikeSS()(package private) HistorygetHistory()java.lang.StringgetHostingPlayer()(package private) intgetIntOption(java.lang.String optname)java.io.PrintWritergetIscMessageFile()LegionServerSidegetLegionByMarkerId(java.lang.String markerId)intgetMovementRoll()(package private) PlayergetNextColorPicker()(package private) INotifyWebServergetNotifyWebServer()(package private) booleangetOption(java.lang.String optname)(package private) IOptionsgetOptions()PlayergetPlayerByMarkerId(java.lang.String markerId)(package private) PlayergetPlayerByName(java.lang.String playerName)Resolve playerName into Player object.(package private) PlayergetPlayerByNameIgnoreNull(java.lang.String playerName)Resolve playerName into Player object.(package private) PlayergetPlayerByShortColor(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 PlayergetPlayerUsingColor(java.lang.String shortColor)private intgetPort()(package private) ServergetServer()private LegionServerSidegetStartingLegion(java.lang.String markerId, MasterHex hex, Player player)(package private) java.lang.StringgetUniqueName(java.lang.String name, Player player)If the name is taken, add random digits to the end.private PlayergetWinner()private voidhandleConcession(Legion loser, Legion winner, boolean fled)private voidhandleNegotiation(Proposal results)(package private) voidhandlePlayerWithdrawal(Player player)A player requested he wants to withdraw (or connection was lost, and server socket handling does withdraw then).booleanhasConventionalMove(LegionServerSide legion, MasterHex hex, int roll, boolean ignoreFriends)private voidhotSeatModeChangeBoards()private voidinitServer()private booleanisAutoSavePoint()So far, we do autosave only at begin of each players turn, i.e.(package private) booleanisBattleInProgress()(package private) booleanisLoadingGame()(package private) booleanisReplayOngoing()voidkickstartGame()(package private) voidlegionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord)(package private) voidlegionUndoMoveEvent(Legion legion)booleanloadGame(org.jdom.Element root)(package private) booleanloadGame2()booleanloadGameAndWaitUntilOver(org.jdom.Element root)private voidmakeMovementRoll()private java.lang.StringmakeNameByType(java.lang.String templateName, java.lang.String type)(package private) static GameServerSidemakeNewGameServerSide(Variant variant)Shortcut for UnitTests, to create a Game with dummy input objects on the fly.(package private) voidmakeProposal(java.lang.String playerName, java.lang.String proposalString)playerName offers proposal.(package private) voidmergeEvent(java.lang.String splitoffId, java.lang.String survivorId)(package private) voidmovementRollEvent(Player player, int roll)(package private) intmulligan()private booleannameIsTaken(java.lang.String name, Player checkedPlayer)(package private) booleannewGame(java.lang.String hostingPlayer)Start a new game.(package private) voidnewGame2()private voidnewGame3()Done picking player colors; proceed to start game.static GameServerSidenewGameServerSide(WhatNextManager whatNextMgr, Options serverOptions, Variant variant)For more complicated functional tests(package private) voidnextPickColor()protected voidnotifyTestCaseGameIsUpNow()private voidplaceInitialLegion(PlayerServerSide player, java.lang.String markerId)(package private) voidplayerElimEvent(Player player, Player slayer)private voidreadLegion(org.jdom.Element leg, PlayerServerSide player)(package private) voidrecruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter)(package private) voidreinforce(Legion legion)Called locally and from Battle.(package private) voidremoveCreatureEvent(Legion legion, CreatureType creature, java.lang.String reason)private booleanresyncBackupData()(package private) voidrevealEvent(boolean allPlayers, java.util.List<Player> players, Legion legion, java.util.List<CreatureType> creatureNames, java.lang.String reason)(package private) voidsaveGameWithErrorHandling(java.lang.String filename, boolean autoSave)private voidsetEngagementResult(java.lang.String aResult, Legion winner, int aPoints, int aTurn)voidsetFlagFilename(java.lang.String flagFilename)voidsetGameOver(boolean gameOver, java.lang.String message)private voidsetupFight()private voidsetupMove()private voidsetupMuster()private voidsetupPhase()private voidsetupSplit()private voidsortPlayersDescendingTower()Temporary solution ...(package private) voidsplitEvent(Legion parent, Legion child, java.util.List<CreatureType> splitoffs)booleanstartNewGameAndWaitUntilOver(java.lang.String hostingPlayer)private booleanstartServerAndWaitUntilNotifiedThatWaitForClientsCompleted()voidstopAllDueToFunctionalTestCompleted()protected voidstoreLocalClient(java.lang.String playerName, Client c)private voidsyncOptions()Send all current game option values to all clients.(package private) voidundoMove(Legion legion)(package private) voidundoRecruitEvent(Legion legion)voidupdateCaretakerDisplays()Update the dead and available counts for all creature types on all clients.private voidupdateCaretakerDisplaysFor(CreatureType type)Update the dead and available counts for a creature type on all clients.protected voidwaitUntilGameFinishes()-
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
-
-
-
-
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
-
isFirstAutoSave
private boolean isFirstAutoSave
From the very first autosave file name, we derive the file where to store all the messages that are sent to the internal spectator client.
-
iscMessages
private java.io.PrintWriter iscMessages
The file where to send the spectator messages. Might/will be null when autosave disabled.
-
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.
-
newGameServerSide
public static GameServerSide newGameServerSide(WhatNextManager whatNextMgr, Options serverOptions, Variant variant)
For more complicated functional tests- Parameters:
whatNextMgr-serverOptions-variant-- Returns:
-
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)
-
createInternalDummyClient
private void createInternalDummyClient()
-
storeLocalClient
protected void storeLocalClient(java.lang.String playerName, Client c)
-
updateCaretakerDisplaysFor
private void updateCaretakerDisplaysFor(CreatureType type)
Update the dead and available counts for a creature type on all clients.
-
updateCaretakerDisplays
public void updateCaretakerDisplays()
Update the dead and available counts for all creature types on all clients.
-
waitUntilGameFinishes
protected void waitUntilGameFinishes()
-
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:
getMovementRollin classGame
-
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 (well, did earlier, at the moment (03/2012) replace with SEVERE error; exception would totally throw server thread out of the orbit...)- 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()
-
notifyTestCaseGameIsUpNow
protected void notifyTestCaseGameIsUpNow()
-
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:
setGameOverin classGame
-
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()
-
getIscMessageFile
public java.io.PrintWriter getIscMessageFile()
-
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 acqirablescoreBeforeAdd- Score from which to startpointsToAdd- 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)
-
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:
getLegionByMarkerIdin classGame
-
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)
-
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()
-
-