first commit
This commit is contained in:
197
Minecraft.Client/Xbox/Xbox_App.h
Normal file
197
Minecraft.Client/Xbox/Xbox_App.h
Normal file
@@ -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;
|
||||
Reference in New Issue
Block a user