Package VASSAL.build.module
Class GameState
java.lang.Object
VASSAL.build.module.GameState
- All Implemented Interfaces:
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 -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic Stringprotected Actionstatic Stringprotected List<GameComponent>protected Stringprotected Fileprotected Stringprotected Actionprotected Actionprotected Actionprotected Actionprotected DirectoryConfigurerstatic Stringprotected Actionprotected Actionprotected List<GameSetupStep> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddGameComponent(GameComponent theComponent)Add aGameComponentto the list of objects that will be notified when a game is started/endedvoidaddGameSetupStep(GameSetupStep step)Add aGameSetupStepvoidAdd aGamePieceto the current game.voidaddTo(GameModule mod)Expects to be added to a GameModule.protected booleanvoidCloses the game.A GameState recognizes instances ofGameState.SetupCommanddecodeSavedGame(File saveFile)Read a saved game and translate it into a Command.A GameState recognizes instances ofGameState.SetupCommandDeprecated, for removal: This API element is subject to removal in a future version.getPieceForId(String id)Deprecated, for removal: This API element is subject to removal in a future version.UsegetAllPieces()instead.booleanReturn true if a game is currently in progressbooleanbooleanbooleanvoidloadContinuation(File f)voidloadGame()Read the game from a savefile.voidloadGame(boolean continuation)Read the game from a savefile.voidvoidloadGameInBackground(String shortName, InputStream in)voidvoidloadGameInForeground(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.voidvoidPrompts the user for a file into which to save the gamevoidsaveGameRefresh(ZipArchive archive)protected StringvoidsetModified(boolean modified)voidsetup(boolean gameStarting)Start/end a game.voidsetup(boolean gameStarting, boolean gameUpdating)Start a game for updating (via editor).voidvoidIndicated 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
-
isSaveEnabled
public boolean isSaveEnabled()- Returns:
- true if saveGame action is enabled (mainly to detect if logging can start)
-
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.