// Copyright (c) 2023 Alex Diener. All rights reserved. #ifndef __GameSavedState_H__ #define __GameSavedState_H__ #include "PROJECT_NAME/EntityPlayer.h" #include "PROJECT_NAME/RoomSavedState.h" #include "utilities/UndoStack.h" typedef struct GameSavedState { unsigned int roomCount; RoomSavedState ** roomSaves; RoomSavedState * roomResetSave; unsigned int currentRoomIndex; void * playerData; unsigned int playerDataSize; void * roomResetPlayerData; unsigned int roomResetPlayerDataSize; unsigned int undoNodeCount; unsigned int currentUndoDepth; UndoStateDelta ** undoNodes; } GameSavedState; GameSavedState * GameSavedState_create(unsigned int roomCount, unsigned int currentRoomIndex, EntityPlayer * player, EntityPlayer * roomResetPlayer); void GameSavedState_dispose(GameSavedState * save); void GameSavedState_encodeUndoStack(GameSavedState * save, UndoStack * undoStack); EntityPlayer * GameSavedState_decodePlayer(GameSavedState * save, void * playerData, struct RoomState * roomState); void GameSavedState_decodeUndoStack(GameSavedState * save, UndoStack * undoStack); #endif