Files
GTASource/game/SaveLoad/savegame_messages.h
expvintl 419f2e4752 init
2025-02-23 17:40:52 +08:00

365 lines
12 KiB
C++

#ifndef SAVEGAME_MESSAGES_H
#define SAVEGAME_MESSAGES_H
#include "text/TextFile.h"
enum SaveGameDialogCode
{
SAVE_GAME_DIALOG_SIGN_IN,
SAVE_GAME_DIALOG_DONT_SIGN_IN_TRY_AGAIN,
SAVE_GAME_DIALOG_DEVICE_SELECTION,
SAVE_GAME_DIALOG_DONT_SELECT_DEVICE_TRY_AGAIN,
SAVE_GAME_DIALOG_FREE_SPACE_CHECK,
SAVE_GAME_DIALOG_NO_FREE_SPACE_AT_START_OF_GAME,
// ******** User Cancelled ********
// SAVE_GAME_DIALOG_SCAN_FAILED,
// SAVE_GAME_DIALOG_LOAD_FAILED,
// SAVE_GAME_DIALOG_AUTOSAVE_FAILED,
// SAVE_GAME_DIALOG_SAVE_FAILED,
// ******* Errors *******
SAVE_GAME_DIALOG_NONE,
SAVE_GAME_DIALOG_DEVICE_SELECTION_FAILED,
SAVE_GAME_DIALOG_DEVICE_SELECTION_FAILED2,
SAVE_GAME_DIALOG_DEVICE_SELECTION_FAILED3,
SAVE_GAME_DIALOG_BEGIN_FREE_SPACE_CHECK_FAILED,
SAVE_GAME_DIALOG_CHECK_FREE_SPACE_CHECK_FAILED1,
SAVE_GAME_DIALOG_CHECK_FREE_SPACE_CHECK_FAILED2,
SAVE_GAME_DIALOG_DELETE_FROM_LIST_FAILED,
// SAVE_GAME_DIALOG_PLAYER_DOESNT_WANT_TO_FREE_SPACE,
SAVE_GAME_DIALOG_BEGIN_ENUMERATION_FAILED,
SAVE_GAME_DIALOG_CHECK_ENUMERATION_FAILED1,
SAVE_GAME_DIALOG_CHECK_ENUMERATION_FAILED2,
SAVE_GAME_DIALOG_BEGIN_SAVE_FAILED,
SAVE_GAME_DIALOG_CHECK_SAVE_FAILED1,
SAVE_GAME_DIALOG_CHECK_SAVE_FAILED2,
SAVE_GAME_DIALOG_BEGIN_GET_FILE_MODIFIED_TIME_FAILED,
SAVE_GAME_DIALOG_CHECK_GET_FILE_MODIFIED_TIME_FAILED1,
SAVE_GAME_DIALOG_CHECK_GET_FILE_MODIFIED_TIME_FAILED2,
SAVE_GAME_DIALOG_BEGIN_ICON_SAVE_FAILED,
SAVE_GAME_DIALOG_CHECK_ICON_SAVE_FAILED1,
SAVE_GAME_DIALOG_CHECK_ICON_SAVE_FAILED2,
SAVE_GAME_DIALOG_BEGIN_GET_CREATOR_FAILED,
SAVE_GAME_DIALOG_CHECK_GET_CREATOR_FAILED1,
SAVE_GAME_DIALOG_CHECK_GET_CREATOR_FAILED2,
SAVE_GAME_DIALOG_PLAYER_IS_NOT_CREATOR,
SAVE_GAME_DIALOG_BEGIN_LOAD_FAILED,
SAVE_GAME_DIALOG_LOAD_BUFFER_SIZE_MISMATCH,
SAVE_GAME_DIALOG_CHECK_LOAD_FAILED1,
SAVE_GAME_DIALOG_CHECK_LOAD_FAILED2,
// SAVE_GAME_DIALOG_BEGIN_GET_FILE_TIME_FAILED,
// SAVE_GAME_DIALOG_CHECK_GET_FILE_TIME_FAILED1,
// SAVE_GAME_DIALOG_CHECK_GET_FILE_TIME_FAILED2,
SAVE_GAME_DIALOG_BEGIN_GET_FILE_SIZE_FAILED,
SAVE_GAME_DIALOG_CHECK_GET_FILE_SIZE_FAILED1,
SAVE_GAME_DIALOG_CHECK_GET_FILE_SIZE_FAILED2,
SAVE_GAME_DIALOG_ALLOCATE_MEMORY_FOR_LOAD_FAILED,
SAVE_GAME_DIALOG_ALLOCATE_MEMORY_FOR_SAVE_FAILED,
SAVE_GAME_DIALOG_SAVE_BLOCK_DATA_FAILED,
SAVE_GAME_DIALOG_PLAYER_HAS_SIGNED_OUT,
SAVE_GAME_DIALOG_SELECTED_DEVICE_HAS_BEEN_REMOVED,
SAVE_GAME_DIALOG_OVERWRITE_EXISTING_AUTOSAVE,
SAVE_GAME_DIALOG_AUTOSAVE_FAILED_TRY_AGAIN,
SAVE_GAME_DIALOG_AUTOSAVE_OFF_ARE_YOU_SURE,
SAVE_GAME_DIALOG_AUTOSAVE_SWITCHED_OFF,
SAVE_GAME_DIALOG_CANT_LOAD_A_DAMAGED_SAVE,
SAVE_GAME_DIALOG_LOAD_WILL_OVERWRITE,
// SAVE_GAME_DIALOG_LOAD_ARE_YOU_SURE,
SAVE_GAME_DIALOG_DELETE_ARE_YOU_SURE,
#if __ALLOW_CLOUD_UPLOAD_OF_LOCAL_SAVEGAME
SAVE_GAME_DIALOG_UPLOAD_ARE_YOU_SURE,
#endif // __ALLOW_CLOUD_UPLOAD_OF_LOCAL_SAVEGAME
#if __ALLOW_EXPORT_OF_SP_SAVEGAMES
SAVE_GAME_DIALOG_CANT_EXPORT_A_DAMAGED_SAVE,
SAVE_GAME_DIALOG_CONFIRM_EXPORT_OF_SAVEGAME,
#endif // __ALLOW_EXPORT_OF_SP_SAVEGAMES
#if __ALLOW_IMPORT_OF_SP_SAVEGAMES
SAVE_GAME_DIALOG_IMPORT_WILL_OVERWRITE_SLOT,
SAVE_GAME_DIALOG_IMPORT_ARE_YOU_SURE,
SAVE_GAME_DIALOG_IMPORT_OF_SAVEGAME_SUCCEEDED,
SAVE_GAME_DIALOG_IMPORT_OF_SAVEGAME_FAILED,
SAVE_GAME_DIALOG_LOADING_OF_IMPORTED_SAVEGAME_FAILED,
#endif // __ALLOW_IMPORT_OF_SP_SAVEGAMES
SAVE_GAME_DIALOG_SAVE_WILL_OVERWRITE_SLOT,
SAVE_GAME_DIALOG_SAVE_ARE_YOU_SURE,
SAVE_GAME_DIALOG_TOO_MANY_SAVE_FILES_IN_FOLDER,
SAVE_GAME_DIALOG_UNEXPECTED_FILENAME,
SAVE_GAME_DIALOG_TWO_SAVE_FILES_WITH_SAME_NAME,
SAVE_GAME_DIALOG_WRONG_VERSION,
SAVE_GAME_DIALOG_EXTRA_CONTENT_ERROR,
// ******* AutoLoad *******
SAVE_GAME_DIALOG_AUTOLOAD_SIGN_IN,
// SAVE_GAME_DIALOG_AUTOLOAD_DONT_SIGN_IN_SURE,
SAVE_GAME_DIALOG_AUTOLOAD_DONT_SIGN_IN_OK,
SAVE_GAME_DIALOG_AUTOLOAD_NOT_SIGNED_IN_TRY_AGAIN,
SAVE_GAME_DIALOG_MOST_RECENT_SAVE_IS_DAMAGED,
SAVE_GAME_DIALOG_AUTOLOAD_NO_PAD_CONNECTED,
SAVE_GAME_DIALOG_AUTOLOAD_MULTIPLE_PROFILES,
// #if __PPU
// SAVE_GAME_DIALOG_FLASHING_HDD_LIGHT_WARNING
// #endif
SAVE_GAME_DIALOG_BEGIN_LOCAL_DELETE_FAILED,
SAVE_GAME_DIALOG_CHECK_LOCAL_DELETE_FAILED1,
SAVE_GAME_DIALOG_CHECK_LOCAL_DELETE_FAILED2,
SAVE_GAME_DIALOG_BEGIN_CLOUD_DELETE_FAILED,
SAVE_GAME_DIALOG_CHECK_CLOUD_DELETE_FAILED,
SAVE_GAME_DIALOG_BEGIN_CLOUD_LOAD_PHOTO_LIST_FAILED,
SAVE_GAME_DIALOG_CHECK_CLOUD_LOAD_PHOTO_LIST_FAILED,
SAVE_GAME_DIALOG_BEGIN_CLOUD_LOAD_JPEG_FAILED,
SAVE_GAME_DIALOG_CHECK_CLOUD_LOAD_JPEG_FAILED,
SAVE_GAME_DIALOG_BEGIN_LOCAL_LOAD_JPEG_FAILED,
SAVE_GAME_DIALOG_CHECK_LOCAL_LOAD_JPEG_FAILED,
SAVE_GAME_DIALOG_BEGIN_CLOUD_LOAD_JSON_FAILED,
SAVE_GAME_DIALOG_CHECK_CLOUD_LOAD_JSON_FAILED,
SAVE_GAME_DIALOG_BEGIN_CLOUD_SAVE_JPEG_FAILED,
SAVE_GAME_DIALOG_CHECK_CLOUD_SAVE_JPEG_FAILED,
SAVE_GAME_DIALOG_BEGIN_CLOUD_SAVE_JSON_FAILED,
SAVE_GAME_DIALOG_CHECK_CLOUD_SAVE_JSON_FAILED,
SAVE_GAME_DIALOG_BEGIN_UGC_PHONE_PHOTO_SAVE_FAILED,
SAVE_GAME_DIALOG_CHECK_UGC_PHONE_PHOTO_SAVE_FAILED,
SAVE_GAME_DIALOG_LIMELIGHT_UGC_CREATE_ALREADY_PENDING,
SAVE_GAME_DIALOG_LIMELIGHT_UGC_CREATION_FAILED_TO_START,
SAVE_GAME_DIALOG_LIMELIGHT_UGC_CREATION_FAILED,
SAVE_GAME_DIALOG_LIMELIGHT_GET_UGC_CREATE_CONTENT_ID_FAILED,
SAVE_GAME_DIALOG_LIMELIGHT_GET_UGC_CREATE_RESULT_FAILED,
SAVE_GAME_DIALOG_LIMELIGHT_UGC_METADATA_PARSE_ERROR,
SAVE_GAME_DIALOG_LIMELIGHT_CREATE_TASK_FAILED,
SAVE_GAME_DIALOG_LIMELIGHT_CONFIGURE_FAILED,
SAVE_GAME_DIALOG_LIMELIGHT_ADD_PARALLEL_TASK_FAILED,
SAVE_GAME_DIALOG_LIMELIGHT_UPLOAD_FAILED,
SAVE_GAME_DIALOG_LIMELIGHT_UGC_PUBLISH_FAILED_TO_START,
SAVE_GAME_DIALOG_LIMELIGHT_UGC_PUBLISH_FAILED,
#if __ALLOW_CLOUD_UPLOAD_OF_LOCAL_SAVEGAME
SAVE_GAME_DIALOG_LOADING_LOCAL_SAVEGAME_BEFORE_UPLOADING_TO_CLOUD,
SAVE_GAME_DIALOG_UPLOADING_SAVEGAME_TO_CLOUD,
SAVE_GAME_DIALOG_UPLOAD_OF_SAVEGAME_SUCCEEDED,
SAVE_GAME_DIALOG_BEGIN_CLOUD_SAVE_SP_SAVEGAME_FAILED,
SAVE_GAME_DIALOG_CHECK_CLOUD_SAVE_SP_SAVEGAME_FAILED,
#endif // __ALLOW_CLOUD_UPLOAD_OF_LOCAL_SAVEGAME
#if RSG_PC
SAVE_GAME_DIALOG_MOST_RECENT_PC_SAVE_IS_DAMAGED,
SAVE_GAME_DIALOG_CANT_LOAD_A_DAMAGED_PC_SAVE,
#endif // RSG_PC
SAVE_GAME_DIALOG_MISSION_REPEAT_MAKES_A_SAVE,
SAVE_GAME_DIALOG_PC_BENCHMARK_TEST_MAKES_A_SAVE,
SAVE_GAME_DIALOG_DELETION_OF_SAVEGAME_SUCCEEDED,
SAVE_GAME_DIALOG_PLAYER_HAS_SKIPPED_AUTOLOAD,
SAVE_GAME_DIALOG_OLDEST_UPLOADED_PHOTO_WILL_BE_DELETED
};
enum ePlayerConfirmationReturn
{
NO_PLAYER_CONFIRMATION_CHECK_IN_PROGRESS,
PLAYER_CONFIRMATION_CHECK_IN_PROGRESS,
PLAYER_CONFIRMATION_CHECK_FINISHED_BEGIN_LOADING,
PLAYER_CONFIRMATION_CHECK_FINISHED_BEGIN_DELETING_FROM_LOAD_MENU,
PLAYER_CONFIRMATION_CHECK_FINISHED_BEGIN_DELETING_FROM_SAVE_MENU,
#if __ALLOW_CLOUD_UPLOAD_OF_LOCAL_SAVEGAME
PLAYER_CONFIRMATION_CHECK_FINISHED_BEGIN_UPLOADING,
#endif // __ALLOW_CLOUD_UPLOAD_OF_LOCAL_SAVEGAME
#if __ALLOW_EXPORT_OF_SP_SAVEGAMES
PLAYER_CONFIRMATION_CHECK_FINISHED_BEGIN_EXPORTING,
#endif // __ALLOW_EXPORT_OF_SP_SAVEGAMES
#if __ALLOW_IMPORT_OF_SP_SAVEGAMES
PLAYER_CONFIRMATION_CHECK_FINISHED_BEGIN_IMPORTING,
#endif // __ALLOW_IMPORT_OF_SP_SAVEGAMES
PLAYER_CONFIRMATION_CHECK_FINISHED_BEGIN_SAVING,
PLAYER_CONFIRMATION_CHECK_INTERRUPTED_NEED_TO_RESCAN,
PLAYER_CONFIRMATION_CHECK_INTERRUPTED_PLAYER_HAS_SIGNED_OUT
};
#define MAX_MENU_ITEM_CHAR_LENGTH (60) // should be plenty to hold longer menu items
class CSavegameDialogScreens
{
private:
// Private data
static SaveGameDialogCode ms_MostRecentErrorCode;
static char DialogBoxHeading[TEXT_KEY_SIZE];
static u32 ms_NumberOfFramesToRenderBlackScreen;
static u32 ms_NumberOfFramesThatTheMessageHasBeenDisplayingFor;
static bool ms_bAllowSetMessageAsProcessingToBeCalled;
static bool ms_bMessageIsProcessingThisFrame;
static bool ms_bMessageWasProcessedLastFrame;
static bool sm_bStartedUserPause;
static bool sm_bScriptWasPaused;
static bool sm_bLoadingScreensHaveBeenSuspended;
// Private functions
static void DisplayRockstarDevWarning(const char *pStringToDisplay, const char *pSubString1 = NULL, const char *pSubString2 = NULL, bool bInsertNumber = false, int numberToInsert = -1);
public:
// Public functions
static void Init(unsigned initMode);
static void BeforeUpdatingTheSavegameQueue();
static void AfterUpdatingTheSavegameQueue();
static void SetMessageAsProcessing(bool bProcessing);
static bool IsMessageProcessing() { return ms_bMessageIsProcessingThisFrame; }
static void SetDialogBoxHeading(const char *pNewHeading);
static void SetSaveGameError(SaveGameDialogCode NewErrorCode);
static void ClearSaveGameError() { ms_MostRecentErrorCode = SAVE_GAME_DIALOG_NONE; }
static SaveGameDialogCode GetMostRecentErrorCode() { return ms_MostRecentErrorCode; }
static bool HandleSaveGameErrorCode();
static bool HandleSaveGameDialogBox(u32 MessageToDisplay, const int NumberToInsertInMessage, bool *pReturnSelection);
static void RenderBlackScreen();
static bool ShouldRenderBlackScreen();
};
class CLoadConfirmationMessage
{
public:
enum eLoadMessageType
{
LOAD_MESSAGE_LOAD,
LOAD_MESSAGE_DELETE
#if __ALLOW_CLOUD_UPLOAD_OF_LOCAL_SAVEGAME
,LOAD_MESSAGE_UPLOAD
#endif // __ALLOW_CLOUD_UPLOAD_OF_LOCAL_SAVEGAME
#if __ALLOW_EXPORT_OF_SP_SAVEGAMES
, LOAD_MESSAGE_EXPORT
#endif // __ALLOW_EXPORT_OF_SP_SAVEGAMES
};
private:
// Private data
enum eLoadConfirmationType
{
LOAD_CONFIRMATION_NONE,
LOAD_CONFIRMATION_DISPLAY_MESSAGE,
LOAD_CONFIRMATION_PLAYER_HAS_SIGNED_OUT,
LOAD_CONFIRMATION_STORAGE_DEVICE_REMOVED
};
static s32 ms_SlotForPlayerConfirmation;
static eLoadConfirmationType ms_TypeOfPlayerConfirmationCheck;
static eLoadMessageType ms_LoadMessageType;
static bool ms_bSlotIsDamaged;
public:
static void Clear();
static void Begin(s32 SlotNumber, eLoadMessageType loadMessageType);
static ePlayerConfirmationReturn Process();
static bool IsThereAMessageToProcess() { return (LOAD_CONFIRMATION_NONE != ms_TypeOfPlayerConfirmationCheck); }
static s32 GetSlotIndex() { return ms_SlotForPlayerConfirmation; }
};
class CSaveConfirmationMessage
{
public:
enum eSaveMessageType
{
SAVE_MESSAGE_SAVE,
SAVE_MESSAGE_DELETE
#if __ALLOW_IMPORT_OF_SP_SAVEGAMES
, SAVE_MESSAGE_IMPORT
#endif // __ALLOW_IMPORT_OF_SP_SAVEGAMES
};
private:
// Private data
enum eSaveConfirmationType
{
SAVE_CONFIRMATION_NONE,
SAVE_CONFIRMATION_DISPLAY_MESSAGE,
SAVE_CONFIRMATION_DO_INITIAL_CHECKS_FOR_FREE_SPACE,
SAVE_CONFIRMATION_HANDLE_ERRORS,
SAVE_CONFIRMATION_PLAYER_HAS_SIGNED_OUT,
SAVE_CONFIRMATION_STORAGE_DEVICE_REMOVED
};
static s32 ms_SlotForPlayerConfirmation;
static eSaveConfirmationType ms_TypeOfPlayerConfirmationCheck;
static eSaveMessageType ms_SaveMessageType;
public:
static void Clear();
static void Begin(s32 SlotNumber, eSaveMessageType saveMessageType);
static ePlayerConfirmationReturn Process();
static bool IsThereAMessageToProcess() { return (SAVE_CONFIRMATION_NONE != ms_TypeOfPlayerConfirmationCheck); }
static s32 GetSlotIndex() { return ms_SlotForPlayerConfirmation; }
};
class CSavingMessage
{
public :
enum eTypeOfMessage
{
STORAGE_DEVICE_MESSAGE_INVALID,
STORAGE_DEVICE_MESSAGE_SAVING,
STORAGE_DEVICE_MESSAGE_LOADING,
STORAGE_DEVICE_MESSAGE_LOAD_SUCCESSFUL,
STORAGE_DEVICE_MESSAGE_CLOUD_SAVING,
STORAGE_DEVICE_MESSAGE_CLOUD_LOADING,
STORAGE_DEVICE_MESSAGE_LOCAL_DELETING,
STORAGE_DEVICE_MESSAGE_CLOUD_DELETING
#if GTA_REPLAY
, STORAGE_DEVICE_MESSAGE_SAVING_REPLAY
, STORAGE_DEVICE_MESSAGE_SAVING_REPLAY_PROJECT
, STORAGE_DEVICE_MESSAGE_SAVING_REPLAY_PROJECT_NO_TEXT
, STORAGE_DEVICE_MESSAGE_SAVING_REPLAY_THUMBNAIL
#endif // GTA_REPLAY
};
private:
// Private data
static sysTimer m_TimeDisplayedFor;
static bool m_bDisplaySavingMessage;
static eTypeOfMessage m_eTypeOfMessage;
public:
// Public functions
static void Clear();
static void BeginDisplaying(eTypeOfMessage MessageType);
static void DisplaySavingMessage();
static bool IsDisplayingSavingMessage() { return m_bDisplaySavingMessage; }
static bool ShouldDisplaySavingSpinner();
static bool HasLoadingMessageDisplayedForLongEnough();
static eTypeOfMessage GetMessageType() { return m_eTypeOfMessage; }
};
#endif // SAVEGAME_MESSAGES_H