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.
197 lines
8.6 KiB
C++
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; |