Files
Loki Rautio 087b7e7abf Revert "Project modernization (#630)"
This code was not tested and breaks in Release builds, reverting to restore
functionality of the nightly. All in-game menus do not work and generating
a world crashes.

This reverts commit a9be52c41a.
2026-03-07 21:12:22 -06:00

197 lines
8.6 KiB
C++

#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;