20 class ResourceSnapshot;
56 std::array<SaveSlot, SaveSlotCount>
slots{};
83 SaveRuntimeState&
state,
86 std::shared_ptr<const data::ResourceSnapshot> resources);
88 [[
nodiscard]] std::expected<std::vector<std::uint8_t>, std::string>
92 SaveRuntimeState&
state,
96 std::string customBoardName,
102 SaveRuntimeState&
state,
103 std::span<const std::uint8_t>
gameBlob);
106 const SaveRuntimeState&
state,
void closeSaveDialog(SaveRuntimeState &state) noexcept
SaveDialogInput processSaveDialogInput(SaveRuntimeState &state, const uimsg::Message &message, fonts::Runtime *fontRuntime, std::shared_ptr< const data::ResourceSnapshot > resources)
std::expected< void, std::string > persistPendingSave(SaveRuntimeState &state, std::span< const std::uint8_t > gameBlob)
Rect saveSlotRect(std::size_t slot) noexcept
Rect dialogOkayRect(int width, int height) noexcept
constexpr std::size_t SaveSlotCount
std::expected< std::vector< std::uint8_t >, std::string > readSelectedGameBlob(const SaveRuntimeState &state)
void clearPendingSave(SaveRuntimeState &state) noexcept
std::expected< void, std::string > refreshSaveSlots(SaveRuntimeState &state, FileDialogMode mode)
std::filesystem::path gameMetadataPath(std::size_t slot)
std::filesystem::path gameBlobPath(std::size_t slot)
std::expected< void, std::string > applySelectedMetadata(const SaveRuntimeState &state, rules::GameState &ruleState, int &city, int &system)
std::filesystem::path saveGameDirectory()
std::expected< void, std::string > beginPendingSave(SaveRuntimeState &state, const rules::GameState &ruleState, int city, int system, std::string customBoardName, rules::PlayerNumber requester)
Rect dialogCancelRect(int width, int height) noexcept
std::uint8_t PlayerNumber
constexpr PlayerNumber NobodyPlayer
rules::PlayerNumber pendingSaveRequester
std::array< SaveSlot, SaveSlotCount > slots
SaveMetadata pendingMetadata
std::optional< std::size_t > pendingSaveSlot
std::u16string draftDescription