the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 197 lines 8.8 kB view raw
1#pragma once 2 3#define GROUP_ID "A9C80F8E-5EAE-4883-89E6-0C456CADE89B" 4#define SAVETRANSFER_GROUP_ID "43FD7A62-2747-4489-8E71-F937163DC3C5" 5 6class XUI_FontRenderer; 7 8class CConsoleMinecraftApp : public CMinecraftApp 9{ 10private: 11 bool m_bMenuDisplayed[XUSER_MAX_COUNT]; // track each players menu displayed 12 bool m_bMenuToBeClosed[XUSER_MAX_COUNT]; // actioned at the end of the game loop 13 bool m_bPauseMenuDisplayed[XUSER_MAX_COUNT]; 14 bool m_bContainerMenuDisplayed[XUSER_MAX_COUNT]; 15 bool m_bIgnoreAutosaveMenuDisplayed[XUSER_MAX_COUNT]; 16 bool m_bIgnorePlayerJoinMenuDisplayed[XUSER_MAX_COUNT]; 17 int m_iCountDown[XUSER_MAX_COUNT]; // ticks to block input 18 19 HXUIOBJ m_PlayerBaseScene[XUSER_MAX_COUNT]; 20 HXUIOBJ m_hFirstScene[XUSER_MAX_COUNT]; 21 HXUIOBJ m_hCurrentScene[XUSER_MAX_COUNT]; 22 HXUIOBJ m_hFirstTutorialScene[XUSER_MAX_COUNT]; 23 HXUIOBJ m_hCurrentTutorialScene[XUSER_MAX_COUNT]; 24 HXUIOBJ m_hFirstChatScene[XUSER_MAX_COUNT]; 25 HXUIOBJ m_hCurrentChatScene[XUSER_MAX_COUNT]; 26 HXUIOBJ m_hFirstHudScene[XUSER_MAX_COUNT]; 27 HXUIOBJ m_hCurrentHudScene[XUSER_MAX_COUNT]; 28 29 std::list< SceneStackPair > m_sceneStack[XUSER_MAX_COUNT]; 30 31 // XUI scene names 32 static WCHAR *wchSceneA[eUIScene_COUNT]; 33 static WCHAR *wchTypefaceA[4]; 34 static WCHAR *wchTypefaceLocatorA[4]; 35 36 WCHAR m_SceneName[50]; 37public: 38 CConsoleMinecraftApp(); 39 40 virtual void SetRichPresenceContext(int iPad, int contextId); 41 42 virtual HRESULT RegisterXuiClasses(); 43 virtual HRESULT UnregisterXuiClasses(); 44 45 XTITLE_DEPLOYMENT_TYPE getDeploymentType() { return m_titleDeploymentType; } 46 47 void GetPreviewImage(int iPad,XSOCIAL_PREVIEWIMAGE *preview); 48 49 virtual HRESULT LoadXuiResources(); 50 51 virtual void CaptureScreenshot(int iPad); 52 virtual void CaptureSaveThumbnail(); 53 virtual void GetSaveThumbnail(PBYTE*,DWORD*); 54 virtual void ReleaseSaveThumbnail(); 55 virtual void GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize); 56 57 virtual void RunFrame(); 58 59 // TMS++ 60 void TMSPP_SetTitleGroupID(LPCSTR szTitleGroupID); 61 void TMSPP_RetrieveFileList(int iPad,C4JStorage::eGlobalStorage eStorageFacility,CHAR *szPath,eTMSAction NextAction); 62 void TMSPP_ReadXuidsFile(int iPad,eTMSAction NextAction); 63 void TMSPP_ReadConfigFile(int iPad,eTMSAction NextAction); 64 void TMSPP_ReadDLCFile(int iPad,eTMSAction NextAction); 65 bool TMSPP_ReadBannedList(int iPad,eTMSAction NextAction); 66 67 static int Callback_TMSPPReadFileList(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILE_LIST pTmsFileList); 68 static int Callback_TMSPPReadXuidsFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename); 69 static int Callback_TMSPPReadConfigFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData, LPCSTR szFilename); 70 static int Callback_TMSPPReadDLCFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename); 71 static int Callback_TMSPPReadBannedList(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename); 72 73 virtual bool GetTMSGlobalFileListRead() { return m_bTMSPP_GlobalFileListRead;} 74 virtual bool GetTMSDLCInfoRead() { return m_bRead_TMS_DLCINFO_XML;} 75 virtual bool GetTMSXUIDsFileRead() { return m_bRead_TMS_XUIDS_XML;} 76 77 virtual int LoadLocalTMSFile(WCHAR *wchTMSFile); 78 virtual int LoadLocalTMSFile(WCHAR *wchTMSFile, eFileExtensionType eExt); 79 virtual void FreeLocalTMSFiles(eTMSFileType eType); 80 virtual int GetLocalTMSFileIndex(WCHAR *wchTMSFile,bool bFilenameIncludesExtension,eFileExtensionType eEXT=eFileExtensionType_PNG); 81 virtual int RetrieveTMSFileListIndex(WCHAR *wchTMSFile); 82 83 virtual void OverrideFontRenderer(bool set, bool immediate=true); 84 virtual void ToggleFontRenderer() { OverrideFontRenderer(!m_bFontRendererOverridden,false); } 85 86 virtual LPCWSTR GetString(int iID); 87 CXuiStringTable *GetStringTable(); 88 89#ifdef _DEBUG_MENUS_ENABLED 90 void EnableDebugOverlay(bool enable, int iPad); 91#endif 92 93private: 94 XUI_FontRenderer *m_fontRenderer; 95 bool m_bFontRendererOverridden; 96 bool m_bOverrideFontRenderer; 97 // Global string table for this application. 98 CXuiStringTable StringTable; 99 CXuiScene debugContainerScene; 100 101 102 // screenshot for social post, and thumbnail for save 103 LPD3DXBUFFER m_ThumbnailBuffer; 104 LPD3DXBUFFER m_ScreenshotBuffer[XUSER_MAX_COUNT]; 105 106private: 107 XTITLE_DEPLOYMENT_TYPE m_titleDeploymentType; 108 XSOCIAL_PREVIEWIMAGE m_PreviewBuffer[XUSER_MAX_COUNT]; 109 110 bool m_bTMSPP_GlobalFileListRead; // track whether we have already read the file list from TMSPP 111 bool m_bRead_TMS_XUIDS_XML; // track whether we have already read the TMS xuids.xml file 112 bool m_bRead_TMS_Config_XML; // track whether we have already read the config file 113 bool m_bRead_TMS_DLCINFO_XML; // track whether we have already read the TMS DLC.xml file 114 BYTE *m_pXuidsFileBuffer; 115 DWORD m_dwXuidsFileSize; 116 117#ifdef _DEBUG_MENUS_ENABLED 118 bool debugOverlayCreated; 119 HXUIOBJ m_hDebugOverlay; 120#endif 121 122public: 123 124 void ReadBannedList(int iPad, eTMSAction action=(eTMSAction)0, bool bCallback=false); 125// void ReadXuidsFileFromTMS(int iPad,eTMSAction NextAction,bool bCallback); 126// void ReadDLCFileFromTMS(int iPad,eTMSAction NextAction, bool bCallback); 127 128// static int CallbackReadXuidsFileFromTMS(LPVOID lpParam, WCHAR *wchFilename, int iPad, bool bResult, int iAction); 129// static int CallbackDLCFileFromTMS(LPVOID lpParam, WCHAR *wchFilename, int iPad, bool bResult, int iAction); 130 static int CallbackBannedListFileFromTMS(LPVOID lpParam, WCHAR *wchFilename, int iPad, bool bResult, int iAction); 131 132 HRESULT RegisterFont(eFont eFontLanguage,eFont eFontFallback, bool bSetAsDefault=false); 133 134 WCHAR *GetSceneName(EUIScene eScene, bool bAppendToName,bool bSplitscreenScene); 135 136 virtual HRESULT NavigateToScene(int iPad,EUIScene eScene, void *initData = NULL, bool forceUsePad = false, BOOL bStayVisible=FALSE, HXUIOBJ *phResultingScene=NULL); 137 virtual HRESULT NavigateBack(int iPad, bool forceUsePad = false,EUIScene eScene = eUIScene_COUNT); 138 virtual HRESULT TutorialSceneNavigateBack(int iPad, bool forceUsePad = false); 139 virtual HRESULT CloseXuiScenes(int iPad, bool forceUsePad = false); 140 virtual HRESULT CloseAllPlayersXuiScenes(); 141 virtual HRESULT CloseXuiScenesAndNavigateToScene(int iPad,EUIScene eScene, void *initData=NULL, bool forceUsePad = false); 142 virtual HRESULT RemoveBackScene(int iPad); 143 virtual HRESULT NavigateToHomeMenu(); 144 D3DXVECTOR3 GetElementScreenPosition(HXUIOBJ hObj); 145 virtual void SetChatTextDisplayed(int iPad, bool bVal); 146 virtual void ReloadChatScene(int iPad, bool bJoining = false, bool bForce = false); 147 virtual void ReloadHudScene(int iPad, bool bJoining = false, bool bForce = false); 148 149 bool GetMenuDisplayed(int iPad); 150 void SetMenuDisplayed(int iPad,bool bVal); 151 void CheckMenuDisplayed(); 152 bool IsSceneInStack(int iPad, EUIScene eScene); 153 154 bool IsPauseMenuDisplayed(int iPad) { return m_bPauseMenuDisplayed[iPad]; } 155 bool IsContainerMenuDisplayed(int iPad) { return m_bContainerMenuDisplayed[iPad]; } 156 bool IsIgnoreAutosaveMenuDisplayed(int iPad) { return m_bIgnoreAutosaveMenuDisplayed[iPad]; } 157 void SetIgnoreAutosaveMenuDisplayed(int iPad, bool displayed) { m_bIgnoreAutosaveMenuDisplayed[iPad] = displayed; } 158 bool IsIgnorePlayerJoinMenuDisplayed(int iPad) { return m_bIgnorePlayerJoinMenuDisplayed[iPad]; } 159 void SetIgnorePlayerJoinMenuDisplayed(int iPad, bool displayed) { m_bIgnorePlayerJoinMenuDisplayed[iPad] = displayed; } 160 161 HXUIOBJ GetFirstScene(int iPad) 162 { 163 return m_hFirstScene[iPad]; 164 } 165 HXUIOBJ GetCurrentTutorialScene(int iPad) 166 { 167 return m_hCurrentTutorialScene[iPad]; 168 } 169 HXUIOBJ GetCurrentHUDScene(int iPad) 170 { 171 return m_hCurrentHudScene[iPad]; 172 } 173 HXUIOBJ GetCurrentScene(int iPad) { return m_hCurrentScene[iPad]; } 174 175 // Move splitscreen scenes based on which screen segment they are in 176 void AdjustSplitscreenScene(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bAdjustXForSafeArea=true); 177 void AdjustSplitscreenScene(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, float fXAdjust); 178 HRESULT AdjustSplitscreenScene_PlayerChanged(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bJoining, bool bAdjustXForSafeArea=true); 179 HRESULT AdjustSplitscreenScene_PlayerChanged(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bJoining, float fXAdjust); 180 181 // functions to store launch data, and to exit the game - required due to possibly being on a demo disc 182 virtual void StoreLaunchData(); 183 virtual void ExitGame(); 184 virtual void FatalLoadError(); 185 static TMS_FILE TMSFileA[TMS_COUNT]; 186 187 188 virtual void GetFileFromTPD(eTPDFileType eType,PBYTE pbData,DWORD dwBytes,PBYTE *ppbData,DWORD *pdwBytes ); 189 190private: 191 static WCHAR m_wchTMSXZP[]; 192 static WCHAR *CConsoleMinecraftApp::wchExt[MAX_EXTENSION_TYPES]; 193 194 195}; 196 197extern CConsoleMinecraftApp app;