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 ActionloadGameprotected 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)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()Return aCommandthat, when executed, will restore the game to its current state.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.voidloadGameInBackground(File f)voidloadGameInBackground(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 gameprotected StringsaveString()voidsetModified(boolean modified)voidsetup(boolean gameStarting)Start/end a game.voidsetup(boolean gameStarting, boolean gameUpdating)Start a game for updating (via editor).voidupdateDone()Indicated game update is completed and game is saved.
-
Field Details
-
pieces
-
gameComponents
-
setupSteps
-
loadGame
-
saveGame
-
saveGameAs
-
newGame
-
closeGame
-
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
-
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(). -
saveString
-
checkForOldSaveFile
-
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
Return aCommandthat, when executed, will restore the game to its current state. InvokesGameComponent.getRestoreCommand()on each registeredGameComponent -
encode
A GameState recognizes instances ofGameState.SetupCommand- Specified by:
encodein interfaceCommandEncoder
-
decode
A GameState recognizes instances ofGameState.SetupCommand- Specified by:
decodein interfaceCommandEncoder
-
saveGame
- Throws:
IOException
-
loadGameInBackground
-
loadGameInBackground
-
getRestorePiecesCommand
- Returns:
- a Command that, when executed, will add all pieces currently in the game. Used when saving a game.
-
decodeSavedGame
Read a saved game and translate it into a Command. Executing the command will load the saved game.- Parameters:
saveFile- Sqve file name- Returns:
- Command
- Throws:
IOException- I/O Exception
-
decodeSavedGame
- Throws:
IOException
-
getSavedGameDirectoryPreference
-
getGameComponents()instead.