aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Xbox/Xbox_App.h
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Xbox/Xbox_App.h
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Xbox/Xbox_App.h')
-rw-r--r--Minecraft.Client/Xbox/Xbox_App.h197
1 files changed, 197 insertions, 0 deletions
diff --git a/Minecraft.Client/Xbox/Xbox_App.h b/Minecraft.Client/Xbox/Xbox_App.h
new file mode 100644
index 00000000..f64e7142
--- /dev/null
+++ b/Minecraft.Client/Xbox/Xbox_App.h
@@ -0,0 +1,197 @@
+#pragma once
+
+#define GROUP_ID "A9C80F8E-5EAE-4883-89E6-0C456CADE89B"
+#define SAVETRANSFER_GROUP_ID "43FD7A62-2747-4489-8E71-F937163DC3C5"
+
+class XUI_FontRenderer;
+
+class CConsoleMinecraftApp : public CMinecraftApp
+{
+private:
+ bool m_bMenuDisplayed[XUSER_MAX_COUNT]; // track each players menu displayed
+ bool m_bMenuToBeClosed[XUSER_MAX_COUNT]; // actioned at the end of the game loop
+ bool m_bPauseMenuDisplayed[XUSER_MAX_COUNT];
+ bool m_bContainerMenuDisplayed[XUSER_MAX_COUNT];
+ bool m_bIgnoreAutosaveMenuDisplayed[XUSER_MAX_COUNT];
+ bool m_bIgnorePlayerJoinMenuDisplayed[XUSER_MAX_COUNT];
+ int m_iCountDown[XUSER_MAX_COUNT]; // ticks to block input
+
+ HXUIOBJ m_PlayerBaseScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hFirstScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hCurrentScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hFirstTutorialScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hCurrentTutorialScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hFirstChatScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hCurrentChatScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hFirstHudScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hCurrentHudScene[XUSER_MAX_COUNT];
+
+ std::list< SceneStackPair > m_sceneStack[XUSER_MAX_COUNT];
+
+ // XUI scene names
+ static WCHAR *wchSceneA[eUIScene_COUNT];
+ static WCHAR *wchTypefaceA[4];
+ static WCHAR *wchTypefaceLocatorA[4];
+
+ WCHAR m_SceneName[50];
+public:
+ CConsoleMinecraftApp();
+
+ virtual void SetRichPresenceContext(int iPad, int contextId);
+
+ virtual HRESULT RegisterXuiClasses();
+ virtual HRESULT UnregisterXuiClasses();
+
+ XTITLE_DEPLOYMENT_TYPE getDeploymentType() { return m_titleDeploymentType; }
+
+ void GetPreviewImage(int iPad,XSOCIAL_PREVIEWIMAGE *preview);
+
+ virtual HRESULT LoadXuiResources();
+
+ virtual void CaptureScreenshot(int iPad);
+ virtual void CaptureSaveThumbnail();
+ virtual void GetSaveThumbnail(PBYTE*,DWORD*);
+ virtual void ReleaseSaveThumbnail();
+ virtual void GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize);
+
+ virtual void RunFrame();
+
+ // TMS++
+ void TMSPP_SetTitleGroupID(LPCSTR szTitleGroupID);
+ void TMSPP_RetrieveFileList(int iPad,C4JStorage::eGlobalStorage eStorageFacility,CHAR *szPath,eTMSAction NextAction);
+ void TMSPP_ReadXuidsFile(int iPad,eTMSAction NextAction);
+ void TMSPP_ReadConfigFile(int iPad,eTMSAction NextAction);
+ void TMSPP_ReadDLCFile(int iPad,eTMSAction NextAction);
+ bool TMSPP_ReadBannedList(int iPad,eTMSAction NextAction);
+
+ static int Callback_TMSPPReadFileList(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILE_LIST pTmsFileList);
+ static int Callback_TMSPPReadXuidsFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename);
+ static int Callback_TMSPPReadConfigFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData, LPCSTR szFilename);
+ static int Callback_TMSPPReadDLCFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename);
+ static int Callback_TMSPPReadBannedList(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename);
+
+ virtual bool GetTMSGlobalFileListRead() { return m_bTMSPP_GlobalFileListRead;}
+ virtual bool GetTMSDLCInfoRead() { return m_bRead_TMS_DLCINFO_XML;}
+ virtual bool GetTMSXUIDsFileRead() { return m_bRead_TMS_XUIDS_XML;}
+
+ virtual int LoadLocalTMSFile(WCHAR *wchTMSFile);
+ virtual int LoadLocalTMSFile(WCHAR *wchTMSFile, eFileExtensionType eExt);
+ virtual void FreeLocalTMSFiles(eTMSFileType eType);
+ virtual int GetLocalTMSFileIndex(WCHAR *wchTMSFile,bool bFilenameIncludesExtension,eFileExtensionType eEXT=eFileExtensionType_PNG);
+ virtual int RetrieveTMSFileListIndex(WCHAR *wchTMSFile);
+
+ virtual void OverrideFontRenderer(bool set, bool immediate=true);
+ virtual void ToggleFontRenderer() { OverrideFontRenderer(!m_bFontRendererOverridden,false); }
+
+ virtual LPCWSTR GetString(int iID);
+ CXuiStringTable *GetStringTable();
+
+#ifdef _DEBUG_MENUS_ENABLED
+ void EnableDebugOverlay(bool enable, int iPad);
+#endif
+
+private:
+ XUI_FontRenderer *m_fontRenderer;
+ bool m_bFontRendererOverridden;
+ bool m_bOverrideFontRenderer;
+ // Global string table for this application.
+ CXuiStringTable StringTable;
+ CXuiScene debugContainerScene;
+
+
+ // screenshot for social post, and thumbnail for save
+ LPD3DXBUFFER m_ThumbnailBuffer;
+ LPD3DXBUFFER m_ScreenshotBuffer[XUSER_MAX_COUNT];
+
+private:
+ XTITLE_DEPLOYMENT_TYPE m_titleDeploymentType;
+ XSOCIAL_PREVIEWIMAGE m_PreviewBuffer[XUSER_MAX_COUNT];
+
+ bool m_bTMSPP_GlobalFileListRead; // track whether we have already read the file list from TMSPP
+ bool m_bRead_TMS_XUIDS_XML; // track whether we have already read the TMS xuids.xml file
+ bool m_bRead_TMS_Config_XML; // track whether we have already read the config file
+ bool m_bRead_TMS_DLCINFO_XML; // track whether we have already read the TMS DLC.xml file
+ BYTE *m_pXuidsFileBuffer;
+ DWORD m_dwXuidsFileSize;
+
+#ifdef _DEBUG_MENUS_ENABLED
+ bool debugOverlayCreated;
+ HXUIOBJ m_hDebugOverlay;
+#endif
+
+public:
+
+ void ReadBannedList(int iPad, eTMSAction action=(eTMSAction)0, bool bCallback=false);
+// void ReadXuidsFileFromTMS(int iPad,eTMSAction NextAction,bool bCallback);
+// void ReadDLCFileFromTMS(int iPad,eTMSAction NextAction, bool bCallback);
+
+// static int CallbackReadXuidsFileFromTMS(LPVOID lpParam, WCHAR *wchFilename, int iPad, bool bResult, int iAction);
+// static int CallbackDLCFileFromTMS(LPVOID lpParam, WCHAR *wchFilename, int iPad, bool bResult, int iAction);
+ static int CallbackBannedListFileFromTMS(LPVOID lpParam, WCHAR *wchFilename, int iPad, bool bResult, int iAction);
+
+ HRESULT RegisterFont(eFont eFontLanguage,eFont eFontFallback, bool bSetAsDefault=false);
+
+ WCHAR *GetSceneName(EUIScene eScene, bool bAppendToName,bool bSplitscreenScene);
+
+ virtual HRESULT NavigateToScene(int iPad,EUIScene eScene, void *initData = NULL, bool forceUsePad = false, BOOL bStayVisible=FALSE, HXUIOBJ *phResultingScene=NULL);
+ virtual HRESULT NavigateBack(int iPad, bool forceUsePad = false,EUIScene eScene = eUIScene_COUNT);
+ virtual HRESULT TutorialSceneNavigateBack(int iPad, bool forceUsePad = false);
+ virtual HRESULT CloseXuiScenes(int iPad, bool forceUsePad = false);
+ virtual HRESULT CloseAllPlayersXuiScenes();
+ virtual HRESULT CloseXuiScenesAndNavigateToScene(int iPad,EUIScene eScene, void *initData=NULL, bool forceUsePad = false);
+ virtual HRESULT RemoveBackScene(int iPad);
+ virtual HRESULT NavigateToHomeMenu();
+ D3DXVECTOR3 GetElementScreenPosition(HXUIOBJ hObj);
+ virtual void SetChatTextDisplayed(int iPad, bool bVal);
+ virtual void ReloadChatScene(int iPad, bool bJoining = false, bool bForce = false);
+ virtual void ReloadHudScene(int iPad, bool bJoining = false, bool bForce = false);
+
+ bool GetMenuDisplayed(int iPad);
+ void SetMenuDisplayed(int iPad,bool bVal);
+ void CheckMenuDisplayed();
+ bool IsSceneInStack(int iPad, EUIScene eScene);
+
+ bool IsPauseMenuDisplayed(int iPad) { return m_bPauseMenuDisplayed[iPad]; }
+ bool IsContainerMenuDisplayed(int iPad) { return m_bContainerMenuDisplayed[iPad]; }
+ bool IsIgnoreAutosaveMenuDisplayed(int iPad) { return m_bIgnoreAutosaveMenuDisplayed[iPad]; }
+ void SetIgnoreAutosaveMenuDisplayed(int iPad, bool displayed) { m_bIgnoreAutosaveMenuDisplayed[iPad] = displayed; }
+ bool IsIgnorePlayerJoinMenuDisplayed(int iPad) { return m_bIgnorePlayerJoinMenuDisplayed[iPad]; }
+ void SetIgnorePlayerJoinMenuDisplayed(int iPad, bool displayed) { m_bIgnorePlayerJoinMenuDisplayed[iPad] = displayed; }
+
+ HXUIOBJ GetFirstScene(int iPad)
+ {
+ return m_hFirstScene[iPad];
+ }
+ HXUIOBJ GetCurrentTutorialScene(int iPad)
+ {
+ return m_hCurrentTutorialScene[iPad];
+ }
+ HXUIOBJ GetCurrentHUDScene(int iPad)
+ {
+ return m_hCurrentHudScene[iPad];
+ }
+ HXUIOBJ GetCurrentScene(int iPad) { return m_hCurrentScene[iPad]; }
+
+ // Move splitscreen scenes based on which screen segment they are in
+ void AdjustSplitscreenScene(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bAdjustXForSafeArea=true);
+ void AdjustSplitscreenScene(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, float fXAdjust);
+ HRESULT AdjustSplitscreenScene_PlayerChanged(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bJoining, bool bAdjustXForSafeArea=true);
+ HRESULT AdjustSplitscreenScene_PlayerChanged(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bJoining, float fXAdjust);
+
+ // functions to store launch data, and to exit the game - required due to possibly being on a demo disc
+ virtual void StoreLaunchData();
+ virtual void ExitGame();
+ virtual void FatalLoadError();
+ static TMS_FILE TMSFileA[TMS_COUNT];
+
+
+ virtual void GetFileFromTPD(eTPDFileType eType,PBYTE pbData,DWORD dwBytes,PBYTE *ppbData,DWORD *pdwBytes );
+
+private:
+ static WCHAR m_wchTMSXZP[];
+ static WCHAR *CConsoleMinecraftApp::wchExt[MAX_EXTENSION_TYPES];
+
+
+};
+
+extern CConsoleMinecraftApp app; \ No newline at end of file