the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 310 lines 10 kB view raw
1#pragma once 2 3#include "UIScene.h" 4 5class LevelGenerationOptions; 6 7 8#if defined __PS3__ || defined __ORBIS__ || defined(__PSVITA__) 9#define SONY_REMOTE_STORAGE_DOWNLOAD 10#endif 11#if defined __PS3__ || __PSVITA__ 12#define SONY_REMOTE_STORAGE_UPLOAD 13#endif 14 15 16class UIScene_LoadOrJoinMenu : public UIScene 17{ 18private: 19 enum EControls 20 { 21 eControl_SavesList, 22 eControl_GamesList, 23#if defined(_XBOX_ONE) || defined(__ORBIS__) 24 eControl_SpaceIndicator, 25#endif 26 }; 27 28 enum EState 29 { 30 e_SavesIdle, 31 e_SavesRepopulate, 32 e_SavesRepopulateAfterMashupHide, 33 e_SavesRepopulateAfterDelete, 34 e_SavesRepopulateAfterTransferDownload, 35 }; 36 37 enum eActions 38 { 39 eAction_None=0, 40 eAction_ViewInvites, 41 eAction_JoinGame, 42 }; 43 eActions m_eAction; 44 45 static const int JOIN_LOAD_CREATE_BUTTON_INDEX = 0; 46 47 SaveListDetails *m_saveDetails; 48 int m_iSaveDetailsCount; 49 50protected: 51 UIControl_SaveList m_buttonListSaves; 52 UIControl_SaveList m_buttonListGames; 53 UIControl_Label m_labelSavesListTitle, m_labelJoinListTitle, m_labelNoGames; 54 UIControl m_controlSavesTimer, m_controlJoinTimer; 55#if defined(_XBOX_ONE) || defined(__ORBIS__) 56 UIControl_SpaceIndicatorBar m_spaceIndicatorSaves; 57#endif 58 59private: 60 UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene) 61 UI_MAP_ELEMENT( m_buttonListSaves, "SavesList") 62 UI_MAP_ELEMENT( m_buttonListGames, "JoinList") 63 64 UI_MAP_ELEMENT( m_labelSavesListTitle, "SavesListTitle") 65 UI_MAP_ELEMENT( m_labelJoinListTitle, "JoinListTitle") 66 UI_MAP_ELEMENT( m_labelNoGames, "NoGames") 67 68 UI_MAP_ELEMENT( m_controlSavesTimer, "SavesTimer") 69 UI_MAP_ELEMENT( m_controlJoinTimer, "JoinTimer") 70 71#if defined(_XBOX_ONE) || defined(__ORBIS__) 72 UI_MAP_ELEMENT( m_spaceIndicatorSaves, "SaveSizeBar") 73#endif 74 UI_END_MAP_ELEMENTS_AND_NAMES() 75 76 int m_iDefaultButtonsC; 77 int m_iMashUpButtonsC; 78 int m_iState; 79 80 vector<FriendSessionInfo *> *m_currentSessions; 81 vector<LevelGenerationOptions *> m_generators; 82 vector<File *> *m_saves; 83 84 bool m_bIgnoreInput; 85 bool m_bAllLoaded; 86 bool m_bRetrievingSaveThumbnails; 87 bool m_bSaveThumbnailReady; 88 bool m_bShowingPartyGamesOnly; 89 bool m_bInParty; 90 JoinMenuInitData *m_initData; 91 bool m_bMultiplayerAllowed; 92 int m_iTexturePacksNotInstalled; 93 int m_iRequestingThumbnailId; 94 SAVE_DETAILS *m_pSaveDetails; 95 bool m_bSavesDisplayed; 96 bool m_bExitScene; 97 bool m_bCopying; 98 bool m_bCopyingCancelled; 99 int m_iSaveInfoC; 100 int m_iSaveListIndex; 101 int m_iGameListIndex; 102 //int *m_iConfigA; // track the texture packs that we don't have installed 103#ifndef _XBOX_ONE 104 bool m_bSaveTransferInProgress; 105 bool m_bSaveTransferCancelled; 106#endif 107 bool m_bUpdateSaveSize; 108 109public: 110 UIScene_LoadOrJoinMenu(int iPad, void *initData, UILayer *parentLayer); 111 virtual ~UIScene_LoadOrJoinMenu(); 112 113 virtual void updateTooltips(); 114 virtual void updateComponents(); 115 116 virtual void handleDestroy(); 117 virtual void handleLoseFocus(); 118 virtual void handleGainFocus(bool navBack); 119 virtual void handleTimerComplete(int id); 120 // INPUT 121 virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled); 122 virtual void handleFocusChange(F64 controlId, F64 childId); 123 virtual void handleInitFocus(F64 controlId, F64 childId); 124 125 virtual EUIScene getSceneType() { return eUIScene_LoadOrJoinMenu;} 126 127 static void UpdateGamesListCallback(LPVOID pParam); 128#ifdef _XBOX_ONE 129 void HandleDLCLicenseChange(); 130#endif 131 virtual void tick(); 132 133private: 134 void Initialise(); 135 void GetSaveInfo(); 136 void UpdateGamesList(); 137 void AddDefaultButtons(); 138 bool DoesSavesListHaveFocus(); 139 bool DoesMashUpWorldHaveFocus(); 140 bool DoesGamesListHaveFocus(); 141 142protected: 143 // TODO: This should be pure virtual in this class 144 virtual wstring getMoviePath(); 145 146public: 147 148 static int LoadSaveDataThumbnailReturned(LPVOID lpParam,PBYTE pbThumbnail,DWORD dwThumbnailBytes); 149 static int LoadSaveCallback(LPVOID lpParam,bool bRes); 150 static int DeleteSaveDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); 151 static int SaveOptionsDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); 152 static int TexturePackDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); 153 static int DeleteSaveDataReturned(LPVOID lpParam,bool bRes); 154 static int RenameSaveDataReturned(LPVOID lpParam,bool bRes); 155 static int KeyboardCompleteWorldNameCallback(LPVOID lpParam,bool bRes); 156#ifdef __PSVITA__ 157 static int MustSignInTexturePack(void *pParam,int iPad,C4JStorage::EMessageResult result); 158 static int MustSignInReturnedTexturePack(void *pParam,bool bContinue, int iPad); 159 static int SignInAdhocReturned(void *pParam,bool bContinue, int iPad); 160#endif 161 162protected: 163 void handlePress(F64 controlId, F64 childId); 164 void LoadLevelGen(LevelGenerationOptions *levelGen); 165 void LoadSaveFromDisk(File *saveFile, ESavePlatform savePlatform = SAVE_FILE_PLATFORM_LOCAL); 166#if defined(__PS3__) || defined(__PSVITA__) || defined(__ORBIS__) 167 void LoadSaveFromCloud(); 168#endif 169public: 170 virtual void HandleDLCMountingComplete(); 171 172#ifdef __ORBIS__ 173 void LoadRemoteFileFromDisk(char* remoteFilename); 174#endif 175 176private: 177 void CheckAndJoinGame(int gameIndex); 178#if defined(__PS3__) || defined(__PSVITA__) || defined(__ORBIS__) 179 static int MustSignInReturnedPSN(void *pParam,int iPad,C4JStorage::EMessageResult result); 180 static int PSN_SignInReturned(void *pParam,bool bContinue, int iPad); 181 static void remoteStorageGetSaveCallback(LPVOID lpParam, SonyRemoteStorage::Status s, int error_code); 182#endif 183 184#ifdef __ORBIS__ 185 //static int PSPlusReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); 186#endif 187#ifdef _XBOX_ONE 188 typedef struct _SaveTransferStateContainer 189 { 190 int m_iProgress; 191 bool m_bSaveTransferInProgress; 192 bool m_bSaveTransferCancelled; 193 int m_iPad; 194 C4JStorage::eSaveTransferState m_eSaveTransferState; 195 UIScene_LoadOrJoinMenu *m_pClass; 196 } SaveTransferStateContainer; 197 enum ESaveTransferFiles 198 { 199 eSaveTransferFile_Marker, 200 eSaveTransferFile_Metadata, 201 eSaveTransferFile_SaveData, 202 }; 203 static ESaveTransferFiles s_eSaveTransferFile; 204 static unsigned long s_ulFileSize; 205 static byteArray s_transferData; 206 static wstring m_wstrStageText; 207 LoadMenuInitData *m_loadMenuInitData; 208 209#ifdef _DEBUG_MENUS_ENABLED 210 static C4JStorage::SAVETRANSFER_FILE_DETAILS m_debugTransferDetails; 211#endif 212 213 void LaunchSaveTransfer(); 214 static int DownloadXbox360SaveThreadProc( LPVOID lpParameter ); 215 static void RequestFileSize( SaveTransferStateContainer *pClass, wchar_t *filename ); 216 static void RequestFileData( SaveTransferStateContainer *pClass, wchar_t *filename ); 217 static int SaveTransferReturned(LPVOID lpParam,C4JStorage::SAVETRANSFER_FILE_DETAILS *pSaveTransferDetails); 218 static int SaveTransferUpdateProgress(LPVOID lpParam,unsigned long ulBytesReceived); 219 static void CancelSaveTransferCallback(LPVOID lpParam); 220 static int NeedSyncMessageReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); 221 static int CancelSaveTransferCompleteCallback(LPVOID lpParam); 222 223#endif 224 225 226 227#ifdef SONY_REMOTE_STORAGE_DOWNLOAD 228 enum eSaveTransferState 229 { 230 eSaveTransfer_Idle, 231 eSaveTransfer_Busy, 232 eSaveTransfer_GetRemoteSaveInfo, 233 eSaveTransfer_GettingRemoteSaveInfo, 234 eSaveTransfer_CreateDummyFile, 235 eSaveTransfer_CreatingDummyFile, 236 eSaveTransfer_GettingFileSize, 237 eSaveTransfer_FileSizeRetrieved, 238 eSaveTransfer_GetFileData, 239 eSaveTransfer_GettingFileData, 240 eSaveTransfer_FileDataRetrieved, 241 eSaveTransfer_GetSavesInfo, 242 eSaveTransfer_GettingSavesInfo, 243 eSaveTransfer_LoadSaveFromDisc, 244 eSaveTransfer_LoadingSaveFromDisc, 245 eSaveTransfer_CreatingNewSave, 246 eSaveTransfer_Converting, 247 eSaveTransfer_Saving, 248 eSaveTransfer_Succeeded, 249 eSaveTransfer_Cancelled, 250 eSaveTransfer_Error, 251 eSaveTransfer_ErrorDeletingSave, 252 eSaveTransfer_ErrorMesssage, 253 eSaveTransfer_Finished, 254 255 }; 256 eSaveTransferState m_eSaveTransferState; 257 static unsigned long m_ulFileSize; 258 static wstring m_wstrStageText; 259 static bool m_bSaveTransferRunning; 260 int m_iProgress; 261 char m_downloadedUniqueFilename[64];//SCE_SAVE_DATA_DIRNAME_DATA_MAXSIZE]; 262 bool m_saveTransferDownloadCancelled; 263 void LaunchSaveTransfer(); 264 static int CreateDummySaveDataCallback(LPVOID lpParam,bool bRes); 265 static int CrossSaveGetSavesInfoCallback(LPVOID lpParam, SAVE_DETAILS *pSaveDetails,bool bRes); 266 static int LoadCrossSaveDataCallback(void *pParam,bool bIsCorrupt, bool bIsOwner); 267 static int CrossSaveFinishedCallback(void *pParam,int iPad,C4JStorage::EMessageResult result); 268 static int CrossSaveDeleteOnErrorReturned(LPVOID lpParam,bool bRes); 269 static int RemoteSaveNotFoundCallback(void *pParam,int iPad,C4JStorage::EMessageResult result); 270 static int DownloadSonyCrossSaveThreadProc( LPVOID lpParameter ); 271 static void SaveTransferReturned(LPVOID lpParam, SonyRemoteStorage::Status s, int error_code); 272 static ConsoleSaveFile* SonyCrossSaveConvert(); 273 274 static void CancelSaveTransferCallback(LPVOID lpParam); 275public: 276 static bool isSaveTransferRunning() { return m_bSaveTransferRunning; } 277private: 278#endif 279 280#ifdef SONY_REMOTE_STORAGE_UPLOAD 281 enum eSaveUploadState 282 { 283 eSaveUpload_Idle, 284 eSaveUpload_UploadingFileData, 285 eSaveUpload_FileDataUploaded, 286 eSaveUpload_Cancelled, 287 eSaveUpload_Error, 288 esaveUpload_Finished 289 }; 290 291 eSaveUploadState m_eSaveUploadState; 292 bool m_saveTransferUploadCancelled; 293 294 void LaunchSaveUpload(); 295 static int UploadSonyCrossSaveThreadProc( LPVOID lpParameter ); 296 static void SaveUploadReturned(LPVOID lpParam, SonyRemoteStorage::Status s, int error_code); 297 static void CancelSaveUploadCallback(LPVOID lpParam); 298 static int SaveTransferDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); 299 static int CrossSaveUploadFinishedCallback(void *pParam,int iPad,C4JStorage::EMessageResult result); 300#endif 301 302#if defined _XBOX_ONE || defined __ORBIS__ 303 static int CopySaveDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); 304 static int CopySaveThreadProc( LPVOID lpParameter ); 305 static int CopySaveDataReturned( LPVOID lpParameter, bool success, C4JStorage::ESaveGameState state ); 306 static bool CopySaveDataProgress(LPVOID lpParam, int percent); 307 static void CancelCopySaveCallback(LPVOID lpParam); 308 static int CopySaveErrorDialogFinishedCallback(void *pParam,int iPad,C4JStorage::EMessageResult result); 309#endif 310};