From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- .../Common/XUI/XUI_MultiGameJoinLoad.h | 168 +++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 Minecraft.Client/Common/XUI/XUI_MultiGameJoinLoad.h (limited to 'Minecraft.Client/Common/XUI/XUI_MultiGameJoinLoad.h') diff --git a/Minecraft.Client/Common/XUI/XUI_MultiGameJoinLoad.h b/Minecraft.Client/Common/XUI/XUI_MultiGameJoinLoad.h new file mode 100644 index 00000000..e91fbac2 --- /dev/null +++ b/Minecraft.Client/Common/XUI/XUI_MultiGameJoinLoad.h @@ -0,0 +1,168 @@ +#pragma once +using namespace std; +#include +#include "..\Media\xuiscene_multi_joinload.h" +#include "XUI_CustomMessages.h" + + +#define JOIN_LOAD_CREATE_BUTTON_INDEX 0 + +#define JOIN_LOAD_ONLINE_TIMER_ID 0 +#define JOIN_LOAD_ONLINE_TIMER_TIME 100 +#define JOIN_LOAD_SEARCH_MINIMUM_TIMER_ID 1 +#define JOIN_LOAD_SEARCH_MINIMUM_TIMER_TIME 2000 +#define JOIN_LOAD_SCROLL_GAME_NAMES_TIMER_ID 2 +#define JOIN_LOAD_SCROLL_GAME_NAMES_TIMER_TIME 1000 + +class CXuiCtrl4JList; +class LevelGenerationOptions; +class CScene_MultiGameInfo; + +class CScene_MultiGameJoinLoad : public CXuiSceneImpl +{ +protected: + CXuiCtrl4JList *m_pSavesList; + CXuiCtrl4JList *m_pGamesList; + CXuiList m_SavesList; + CXuiList m_GamesList; + CXuiControl m_SavesListTimer; + CXuiControl m_NetGamesListTimer; + CXuiControl m_LabelNoGames; + int m_iPad; + + bool m_bShowingPartyGamesOnly; + bool m_bInParty; + + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit ) + XUI_ON_XM_DESTROY(OnDestroy) + XUI_ON_XM_KEYDOWN(OnKeyDown) + XUI_ON_XM_NOTIFY_PRESS_EX(OnNotifyPressEx) + XUI_ON_XM_NAV_RETURN(OnNavReturn) + XUI_ON_XM_NOTIFY_SELCHANGED(OnNotifySelChanged) + XUI_ON_XM_NOTIFY_SET_FOCUS(OnNotifySetFocus) + XUI_ON_XM_NOTIFY_KILL_FOCUS(OnNotifyKillFocus) + XUI_ON_XM_TIMER( OnTimer ) + XUI_ON_XM_TRANSITION_START(OnTransitionStart) + XUI_ON_XM_FONTRENDERERCHANGE_MESSAGE(OnFontRendererChange) + XUI_ON_XM_DLCINSTALLED_MESSAGE(OnCustomMessage_DLCInstalled) + XUI_ON_XM_DLCLOADED_MESSAGE(OnCustomMessage_DLCMountingComplete) + + XUI_END_MSG_MAP() + + BEGIN_CONTROL_MAP() + MAP_CONTROL(IDC_GamesList, m_GamesList) + MAP_CONTROL(IDC_SavesTimer, m_SavesListTimer) + MAP_CONTROL(IDC_Timer, m_NetGamesListTimer) + MAP_CONTROL(IDC_LabelNoGames, m_LabelNoGames) + MAP_CONTROL(IDC_SavesList, m_SavesList) + END_CONTROL_MAP() + + + HRESULT OnInit( XUIMessageInit* pInitData, BOOL& bHandled ); + HRESULT OnDestroy(); + HRESULT OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData,BOOL& rfHandled); + HRESULT OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled); + HRESULT OnNavReturn(HXUIOBJ hObj,BOOL& rfHandled); + HRESULT OnNotifySelChanged(HXUIOBJ hObjSource, XUINotifySelChanged *pNotifySelChangedData, BOOL& bHandled); + HRESULT OnNotifySetFocus(HXUIOBJ hObjSource, XUINotifyFocus *pNotifyFocusData, BOOL& bHandled); + HRESULT OnNotifyKillFocus(HXUIOBJ hObjSource, XUINotifyFocus *pNotifyFocusData, BOOL& bHandled); + HRESULT OnTimer( XUIMessageTimer *pTimer, BOOL& bHandled ); + HRESULT OnTransitionStart( XUIMessageTransition *pTransition, BOOL& bHandled ); + HRESULT OnFontRendererChange(); + HRESULT OnCustomMessage_DLCInstalled(); + HRESULT OnCustomMessage_DLCMountingComplete(); + + +public: + + // Define the class. The class name must match the ClassOverride property + // set for the scene in the UI Authoring tool. + XUI_IMPLEMENT_CLASS( CScene_MultiGameJoinLoad, L"CScene_MultiGameJoinLoad", XUI_CLASS_SCENE ) + +private: + bool DoesSavesListHaveFocus(); + bool DoesGamesListHaveFocus(); + bool DoesMashUpWorldHaveFocus(); + +public: + static void UpdateGamesListCallback(LPVOID pParam); + +private: + void AddDefaultButtons(); + void UpdateGamesList(); + void UpdateGamesList(DWORD dwNumResults, IQNetGameSearch *pGameSearch); + //void UpdateGamesListLabels(); + static void SearchForGameCallback(void *hObj, DWORD dwNumResults, IQNetGameSearch *pGameSearch); + static int DeviceSelectReturned(void *pParam,bool bContinue); + + unsigned char m_localPlayers; + + HRESULT GetSaveInfo( ); + static int LoadSaveDataReturned(void *pParam,bool bContinue); + static int DeleteSaveDataReturned(void *pParam,bool bSuccess); + + unsigned int m_uiSaveC; + void LoadLevelGen(LevelGenerationOptions *levelGen); + void LoadSaveFromDisk(File *saveFile); + + // callback +#ifdef _XBOX + static bool GetSavesInfoCallback(LPVOID pParam,int iInstalledC, C4JStorage::CACHEINFOSTRUCT *InfoA, int iPad, HRESULT hRes); +#else + static int GetSavesInfoCallback(LPVOID lpParam,const bool); +#endif + static int DeleteSaveDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); + static int SaveOptionsDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); + static int DeviceRemovedDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); + static int StartGame_SignInReturned(void *pParam,bool bContinue, int iPad); + static int CopySaveReturned(void *pParam,bool bResult); + static int LoadSaveDataForRenameReturned(void *pParam,bool bContinue); + static int KeyboardReturned(void *pParam,bool bSet); + static void StartGameFromSave(CScene_MultiGameJoinLoad* pClass, DWORD dwLocalUsersMask); + static int TexturePackDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); + static int SaveTransferDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); + + static int Progress(void *pParam,float fProgress); + static int TransferComplete(void *pParam,int i1, int i2); + static int DeleteComplete(void *pParam,int i1, int i2); + static int UploadSaveForXboxOneThreadProc( LPVOID lpParameter ); + static void DeleteFile(CScene_MultiGameJoinLoad *pClass, char *filename); + static void UploadFile(CScene_MultiGameJoinLoad *pClass, char *filename, LPVOID data, DWORD size); + static bool WaitForTransferComplete( CScene_MultiGameJoinLoad *pClass ); + static void CancelSaveUploadCallback(LPVOID lpParam); + static void SaveUploadCompleteCallback(LPVOID lpParam); + + + bool m_bIgnoreInput; + vector *m_saves; + + int m_iSaveInfoC; + int m_iDefaultButtonsC; + int m_iMashUpButtonsC; + int m_iChangingSaveGameInfoIndex; + + bool m_bMultiplayerAllowed; + bool m_bKillSaveInfoEnumerate; + + vector currentSessions; + bool m_bReady; + bool m_bRetrievingSaveInfo; + //bool m_bSaveRenamed; + WCHAR m_wchNewName[XCONTENT_MAX_DISPLAYNAME_LENGTH]; + unsigned char m_szSeed[50]; + + vector *m_generators; + JoinMenuInitData *m_initData; + + UINT m_DefaultMinecraftIconSize; + PBYTE m_DefaultMinecraftIconData; + int *m_iConfigA; // track the texture packs that we don't have installed + int m_iTexturePacksNotInstalled; + PBYTE m_pbSaveTransferData; + + float m_fProgress; + bool m_bTransferComplete; + bool m_bTransferFail; + bool m_bSaveTransferInProgress; +}; \ No newline at end of file -- cgit v1.2.3