the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#pragma once
2using namespace std;
3#include <vector>
4#include "..\Media\xuiscene_multi_joinload.h"
5#include "XUI_CustomMessages.h"
6
7
8#define JOIN_LOAD_CREATE_BUTTON_INDEX 0
9
10#define JOIN_LOAD_ONLINE_TIMER_ID 0
11#define JOIN_LOAD_ONLINE_TIMER_TIME 100
12#define JOIN_LOAD_SEARCH_MINIMUM_TIMER_ID 1
13#define JOIN_LOAD_SEARCH_MINIMUM_TIMER_TIME 2000
14#define JOIN_LOAD_SCROLL_GAME_NAMES_TIMER_ID 2
15#define JOIN_LOAD_SCROLL_GAME_NAMES_TIMER_TIME 1000
16
17class CXuiCtrl4JList;
18class LevelGenerationOptions;
19class CScene_MultiGameInfo;
20
21class CScene_MultiGameJoinLoad : public CXuiSceneImpl
22{
23protected:
24 CXuiCtrl4JList *m_pSavesList;
25 CXuiCtrl4JList *m_pGamesList;
26 CXuiList m_SavesList;
27 CXuiList m_GamesList;
28 CXuiControl m_SavesListTimer;
29 CXuiControl m_NetGamesListTimer;
30 CXuiControl m_LabelNoGames;
31 int m_iPad;
32
33 bool m_bShowingPartyGamesOnly;
34 bool m_bInParty;
35
36 XUI_BEGIN_MSG_MAP()
37 XUI_ON_XM_INIT( OnInit )
38 XUI_ON_XM_DESTROY(OnDestroy)
39 XUI_ON_XM_KEYDOWN(OnKeyDown)
40 XUI_ON_XM_NOTIFY_PRESS_EX(OnNotifyPressEx)
41 XUI_ON_XM_NAV_RETURN(OnNavReturn)
42 XUI_ON_XM_NOTIFY_SELCHANGED(OnNotifySelChanged)
43 XUI_ON_XM_NOTIFY_SET_FOCUS(OnNotifySetFocus)
44 XUI_ON_XM_NOTIFY_KILL_FOCUS(OnNotifyKillFocus)
45 XUI_ON_XM_TIMER( OnTimer )
46 XUI_ON_XM_TRANSITION_START(OnTransitionStart)
47 XUI_ON_XM_FONTRENDERERCHANGE_MESSAGE(OnFontRendererChange)
48 XUI_ON_XM_DLCINSTALLED_MESSAGE(OnCustomMessage_DLCInstalled)
49 XUI_ON_XM_DLCLOADED_MESSAGE(OnCustomMessage_DLCMountingComplete)
50
51 XUI_END_MSG_MAP()
52
53 BEGIN_CONTROL_MAP()
54 MAP_CONTROL(IDC_GamesList, m_GamesList)
55 MAP_CONTROL(IDC_SavesTimer, m_SavesListTimer)
56 MAP_CONTROL(IDC_Timer, m_NetGamesListTimer)
57 MAP_CONTROL(IDC_LabelNoGames, m_LabelNoGames)
58 MAP_CONTROL(IDC_SavesList, m_SavesList)
59 END_CONTROL_MAP()
60
61
62 HRESULT OnInit( XUIMessageInit* pInitData, BOOL& bHandled );
63 HRESULT OnDestroy();
64 HRESULT OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData,BOOL& rfHandled);
65 HRESULT OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled);
66 HRESULT OnNavReturn(HXUIOBJ hObj,BOOL& rfHandled);
67 HRESULT OnNotifySelChanged(HXUIOBJ hObjSource, XUINotifySelChanged *pNotifySelChangedData, BOOL& bHandled);
68 HRESULT OnNotifySetFocus(HXUIOBJ hObjSource, XUINotifyFocus *pNotifyFocusData, BOOL& bHandled);
69 HRESULT OnNotifyKillFocus(HXUIOBJ hObjSource, XUINotifyFocus *pNotifyFocusData, BOOL& bHandled);
70 HRESULT OnTimer( XUIMessageTimer *pTimer, BOOL& bHandled );
71 HRESULT OnTransitionStart( XUIMessageTransition *pTransition, BOOL& bHandled );
72 HRESULT OnFontRendererChange();
73 HRESULT OnCustomMessage_DLCInstalled();
74 HRESULT OnCustomMessage_DLCMountingComplete();
75
76
77public:
78
79 // Define the class. The class name must match the ClassOverride property
80 // set for the scene in the UI Authoring tool.
81 XUI_IMPLEMENT_CLASS( CScene_MultiGameJoinLoad, L"CScene_MultiGameJoinLoad", XUI_CLASS_SCENE )
82
83private:
84 bool DoesSavesListHaveFocus();
85 bool DoesGamesListHaveFocus();
86 bool DoesMashUpWorldHaveFocus();
87
88public:
89 static void UpdateGamesListCallback(LPVOID pParam);
90
91private:
92 void AddDefaultButtons();
93 void UpdateGamesList();
94 void UpdateGamesList(DWORD dwNumResults, IQNetGameSearch *pGameSearch);
95 //void UpdateGamesListLabels();
96 static void SearchForGameCallback(void *hObj, DWORD dwNumResults, IQNetGameSearch *pGameSearch);
97 static int DeviceSelectReturned(void *pParam,bool bContinue);
98
99 unsigned char m_localPlayers;
100
101 HRESULT GetSaveInfo( );
102 static int LoadSaveDataReturned(void *pParam,bool bContinue);
103 static int DeleteSaveDataReturned(void *pParam,bool bSuccess);
104
105 unsigned int m_uiSaveC;
106 void LoadLevelGen(LevelGenerationOptions *levelGen);
107 void LoadSaveFromDisk(File *saveFile);
108
109 // callback
110#ifdef _XBOX
111 static bool GetSavesInfoCallback(LPVOID pParam,int iInstalledC, C4JStorage::CACHEINFOSTRUCT *InfoA, int iPad, HRESULT hRes);
112#else
113 static int GetSavesInfoCallback(LPVOID lpParam,const bool);
114#endif
115 static int DeleteSaveDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
116 static int SaveOptionsDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
117 static int DeviceRemovedDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
118 static int StartGame_SignInReturned(void *pParam,bool bContinue, int iPad);
119 static int CopySaveReturned(void *pParam,bool bResult);
120 static int LoadSaveDataForRenameReturned(void *pParam,bool bContinue);
121 static int KeyboardReturned(void *pParam,bool bSet);
122 static void StartGameFromSave(CScene_MultiGameJoinLoad* pClass, DWORD dwLocalUsersMask);
123 static int TexturePackDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
124 static int SaveTransferDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
125
126 static int Progress(void *pParam,float fProgress);
127 static int TransferComplete(void *pParam,int i1, int i2);
128 static int DeleteComplete(void *pParam,int i1, int i2);
129 static int UploadSaveForXboxOneThreadProc( LPVOID lpParameter );
130 static void DeleteFile(CScene_MultiGameJoinLoad *pClass, char *filename);
131 static void UploadFile(CScene_MultiGameJoinLoad *pClass, char *filename, LPVOID data, DWORD size);
132 static bool WaitForTransferComplete( CScene_MultiGameJoinLoad *pClass );
133 static void CancelSaveUploadCallback(LPVOID lpParam);
134 static void SaveUploadCompleteCallback(LPVOID lpParam);
135
136
137 bool m_bIgnoreInput;
138 vector<File *> *m_saves;
139
140 int m_iSaveInfoC;
141 int m_iDefaultButtonsC;
142 int m_iMashUpButtonsC;
143 int m_iChangingSaveGameInfoIndex;
144
145 bool m_bMultiplayerAllowed;
146 bool m_bKillSaveInfoEnumerate;
147
148 vector<FriendSessionInfo *> currentSessions;
149 bool m_bReady;
150 bool m_bRetrievingSaveInfo;
151 //bool m_bSaveRenamed;
152 WCHAR m_wchNewName[XCONTENT_MAX_DISPLAYNAME_LENGTH];
153 unsigned char m_szSeed[50];
154
155 vector<LevelGenerationOptions *> *m_generators;
156 JoinMenuInitData *m_initData;
157
158 UINT m_DefaultMinecraftIconSize;
159 PBYTE m_DefaultMinecraftIconData;
160 int *m_iConfigA; // track the texture packs that we don't have installed
161 int m_iTexturePacksNotInstalled;
162 PBYTE m_pbSaveTransferData;
163
164 float m_fProgress;
165 bool m_bTransferComplete;
166 bool m_bTransferFail;
167 bool m_bSaveTransferInProgress;
168};