Package VASSAL.build.module
Class GameState
java.lang.Object
VASSAL.build.module.GameState
- All Implemented Interfaces:
CommandEncoder
public class GameState extends Object implements CommandEncoder
The GameState contains methods to track and read/write the complete enumerated game state of the game
currently being played. Its main methods deal with saving/loading games and starting/ending games: see
saveGameAs(), loadGame(), setup(boolean). In each case, appropriate calls
are made to designated methods in all relevant GameComponents. Can also be queried if a game is in progress
isGameStarted() and if the game state has been modified since the last save isModified().
Only one game can be open at once in a single Player, or in a single Editor/Player pair.- See Also:
GameModule.getGameState()
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classGameState.SetupCommand -
Field Summary
Fields Modifier and Type Field Description static StringBEGIN_SAVEprotected ActioncloseGamestatic StringEND_SAVEprotected List<GameComponent>gameComponentsprotected StringlastSaveprotected FilelastSaveFileprotected StringloadCommentsprotected ActionloadContinuationprotected ActionloadGameprotected ActionloadGameOldprotected ActionnewGameprotected Map<String,GamePiece>piecesprotected DirectoryConfigurersavedGameDirectoryPreferencestatic StringSAVEFILE_ZIP_ENTRYprotected ActionsaveGameprotected ActionsaveGameAsprotected List<GameSetupStep>setupSteps -
Constructor Summary
Constructors Constructor Description GameState() -
Method Summary
Modifier and Type Method Description voidaddGameComponent(GameComponent theComponent)Add aGameComponentto the list of objects that will be notified when a game is started/endedvoidaddGameSetupStep(GameSetupStep step)Add aGameSetupStepvoidaddPiece(GamePiece p)Add aGamePieceto the current game.voidaddTo(GameModule mod)Expects to be added to a GameModule.protected booleancheckForOldSaveFile(File f)voidcloseGame()Closes the game.Commanddecode(String theCommand)A GameState recognizes instances ofGameState.SetupCommandCommanddecodeSavedGame(File saveFile)Read a saved game and translate it into a Command.CommanddecodeSavedGame(InputStream in)Stringencode(Command c)A GameState recognizes instances ofGameState.SetupCommandCollection<GamePiece>getAllPieces()Collection<GameComponent>getGameComponents()Enumeration<GameComponent>getGameComponentsEnum()Deprecated, for removal: This API element is subject to removal in a future version.StringgetNewPieceId()GamePiecegetPieceForId(String id)Enumeration<GamePiece>getPieces()Deprecated, for removal: This API element is subject to removal in a future version.UsegetAllPieces()instead.CommandgetRestoreCommand()CommandgetRestorePiecesCommand()DirectoryConfigurergetSavedGameDirectoryPreference()Iterator<GameSetupStep>getUnfinishedSetupSteps()booleanisGameStarted()Return true if a game is currently in progressbooleanisModified()booleanisUpdating()voidloadContinuation(File f)voidloadGame()Read the game from a savefile.voidloadGame(boolean continuation)Read the game from a savefile.voidloadGameInBackground(File f)voidloadGameInBackground(String shortName, InputStream in)voidloadGameInForeground(File f)voidloadGameInForeground(String shortName, InputStream in)voidremoveGameComponent(GameComponent theComponent)Remove aGameComponentfrom the list of objects that will be notified when a game is started/endedvoidremoveGameSetupStep(GameSetupStep step)Remove aGameSetupStepvoidremovePiece(String id)Remove aGamePiecefrom the current gamevoidsaveGame()Saves the game to an existing file, or prompts for a new one.voidsaveGame(File f)voidsaveGameAs()Prompts the user for a file into which to save the gamevoidsaveGameRefresh(ZipArchive archive)protected StringsaveString()voidsetModified(boolean modified)voidsetup(boolean gameStarting)Start/end a game.voidsetup(boolean gameStarting, boolean gameUpdating)Start a game for updating (via editor).voidsetupRefresh()voidupdateDone()Indicated game update is completed and game is saved.
-
Field Details
-
pieces
-
gameComponents
-
setupSteps
-
loadGame
-
loadGameOld
-
saveGame
-
saveGameAs
-
newGame
-
closeGame
-
loadContinuation
-
lastSave
-
lastSaveFile
-
savedGameDirectoryPreference
-
loadComments
-
SAVEFILE_ZIP_ENTRY
- See Also:
- Constant Field Values
-
BEGIN_SAVE
- See Also:
- Constant Field Values
-
END_SAVE
- See Also:
- Constant Field Values
-
-
Constructor Details
-
GameState
public GameState()
-
-
Method Details
-
addTo
Expects to be added to a GameModule. AddsNew,Load,Close, andSaveentries to theFilemenu of the controls window -
isModified
public boolean isModified()- Returns:
- true if the game state is different from when it was last saved
-
addGameComponent
Add aGameComponentto the list of objects that will be notified when a game is started/ended -
removeGameComponent
Remove aGameComponentfrom the list of objects that will be notified when a game is started/ended -
getGameComponentsEnum
@Deprecated(since="2020-08-06", forRemoval=true) public Enumeration<GameComponent> getGameComponentsEnum()Deprecated, for removal: This API element is subject to removal in a future version.UsegetGameComponents()instead.- Returns:
- an enumeration of all
GameComponentobjects that have been added to this GameState
-
getGameComponents
- Returns:
- a Collection of all
GameComponentobjects that have been added to this GameState
-
addGameSetupStep
Add aGameSetupStep -
removeGameSetupStep
Remove aGameSetupStep -
getUnfinishedSetupSteps
- Returns:
- an iterator of all
GameSetupSteps that are not yet finished
-
setupRefresh
public void setupRefresh() -
setup
public void setup(boolean gameStarting, boolean gameUpdating)Start a game for updating (via editor). NOTE: This method is not for use in custom code. -
updateDone
public void updateDone()Indicated game update is completed and game is saved. -
isUpdating
public boolean isUpdating() -
setup
public void setup(boolean gameStarting)Start/end a game. Prompt to save if the game state has been modified since last save. InvokeGameComponent.setup(boolean)on all registeredGameComponentobjects. -
isGameStarted
public boolean isGameStarted()Return true if a game is currently in progress -
loadGame
public void loadGame()Read the game from a savefile. The contents of the file is sent toGameModule.decode(java.lang.String)and translated into aCommand, which is then executed. The command read from the file should be that returned bygetRestoreCommand(). This version for binary compatibility w/ old style. -
loadGame
public void loadGame(boolean continuation)Read the game from a savefile. The contents of the file is sent toGameModule.decode(java.lang.String)and translated into aCommand, which is then executed. The command read from the file should be that returned bygetRestoreCommand().- Parameters:
continuation- if true then do the "old-style" version of load continuation
-
saveString
-
checkForOldSaveFile
-
closeGame
public void closeGame()Closes the game. -
saveGame
public void saveGame()Saves the game to an existing file, or prompts for a new one. -
saveGameAs
public void saveGameAs()Prompts the user for a file into which to save the game -
setModified
public void setModified(boolean modified) -
addPiece
-
getPieceForId
- Returns:
- the
GamePiecein the current game with the given id
-
removePiece
Remove aGamePiecefrom the current game -
getNewPieceId
- Returns:
- a String identifier guaranteed to be different from the id of all GamePieces in the game
- See Also:
GamePiece.getId()
-
loadContinuation
- Throws:
IOException
-
getPieces
Deprecated, for removal: This API element is subject to removal in a future version.UsegetAllPieces()instead.- Returns:
- an Enumeration of all
GamePieces in the game
-
getAllPieces
- Returns:
- a Collection of all
GamePieces in the game
-
getRestoreCommand
- Returns:
- a
Commandthat, when executed, will restore the game to its current state -- this command can then be written to a save game file. InvokesGameComponent.getRestoreCommand()on each registeredGameComponent, and then creates an AddPiece command for each game piece.
-
encode
A GameState recognizes instances ofGameState.SetupCommand- Specified by:
encodein interfaceCommandEncoder
-
decode
A GameState recognizes instances ofGameState.SetupCommand- Specified by:
decodein interfaceCommandEncoder
-
saveGameRefresh
- Throws:
IOException
-
saveGame
- Throws:
IOException
-
loadGameInForeground
-
loadGameInForeground
- Throws:
IOException
-
loadGameInBackground
-
loadGameInBackground
-
getRestorePiecesCommand
- Returns:
- a Command that, when executed, will add all pieces currently in the game. Used when saving a game. Pieces are grouped by map, and within a map by visual layer.
-
decodeSavedGame
Read a saved game and translate it into a Command. Executing the command will load the saved game.- Parameters:
saveFile- Save file name- Returns:
- Command
- Throws:
IOException- I/O Exception
-
decodeSavedGame
- Throws:
IOException
-
getSavedGameDirectoryPreference
-
getGameComponents()instead.