Files
MinecraftConsoles/Minecraft.Client/Common/XUI/XUI_MainMenu.h
2026-03-01 12:16:08 +08:00

129 lines
4.5 KiB
C++

#pragma once
#include "../media/xuiscene_main.h"
#include "XUI_CustomMessages.h"
#define BUTTON_PLAYGAME 0
#define BUTTON_LEADERBOARDS 1
#define BUTTON_ACHIEVEMENTS 2
#define BUTTON_HELPANDOPTIONS 3
#define BUTTON_UNLOCKFULLGAME 4
#define BUTTON_EXITGAME 5
#define BUTTONS_MAX BUTTON_EXITGAME + 1
#define MAIN_MENU_MAX_TEXT_SCALE 1.5f
class Random;
class CScene_Main : public CXuiSceneImpl
{
private:
static Random *random;
vector<wstring> m_splashes;
D3DXVECTOR3 m_vPosExitGame;
bool m_bIgnorePress;
float m_fSubtitleHeight, m_fSubtitleWidth;
CXuiControl m_Timer;
// 4J Added
enum eSplashIndexes
{
eSplashHappyBirthdayEx = 0,
eSplashHappyBirthdayNotch,
eSplashMerryXmas,
eSplashHappyNewYear,
// The start index in the splashes vector from which we can select a random splash
eSplashRandomStart,
};
enum eActions
{
eAction_None=0,
eAction_RunGame,
eAction_RunLeaderboards,
eAction_RunAchievements,
eAction_RunHelpAndOptions,
eAction_RunUnlockOrDLC,
};
protected:
// Control and Element wrapper objects.
CXuiScene m_Scene;
CXuiControl m_Buttons[BUTTONS_MAX];
CXuiControl m_Subtitle, m_SubtitleMCFont;
// Message map. Here we tie messages to message handlers.
XUI_BEGIN_MSG_MAP()
XUI_ON_XM_INIT( OnInit )
XUI_ON_XM_NOTIFY_PRESS_EX(OnNotifyPressEx)
XUI_ON_XM_NAV_RETURN(OnNavReturn)
XUI_ON_XM_TRANSITION_START(OnTransitionStart)
XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate )
XUI_ON_XM_KEYDOWN( OnKeyDown )
XUI_ON_XM_NOTIFY_SET_FOCUS(OnNotifySetFocus)
XUI_ON_XM_TMS_BANFILE_RETRIEVED_MESSAGE(OnTMSBanFileRetrieved)
XUI_ON_XM_TMS_DLCFILE_RETRIEVED_MESSAGE(OnTMSDLCFileRetrieved)
XUI_ON_XM_TIMER( OnTimer )
XUI_END_MSG_MAP()
// Control mapping to objects
BEGIN_CONTROL_MAP()
MAP_CONTROL(IDC_XuiButton1, m_Buttons[BUTTON_PLAYGAME])
MAP_CONTROL(IDC_XuiButton2, m_Buttons[BUTTON_LEADERBOARDS ])
MAP_CONTROL(IDC_XuiButton3, m_Buttons[BUTTON_ACHIEVEMENTS ])
MAP_CONTROL(IDC_XuiButton4, m_Buttons[BUTTON_HELPANDOPTIONS])
MAP_CONTROL(IDC_XuiButton5, m_Buttons[BUTTON_UNLOCKFULLGAME])
MAP_CONTROL(IDC_XuiButton6, m_Buttons[BUTTON_EXITGAME])
MAP_CONTROL(IDC_XuiSplash, m_Subtitle)
MAP_CONTROL(IDC_XuiSplashMCFont, m_SubtitleMCFont)
MAP_CONTROL(IDC_Timer, m_Timer)
END_CONTROL_MAP()
HRESULT OnInit( XUIMessageInit* pInitData, BOOL& bHandled );
HRESULT OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData,BOOL& rfHandled);
HRESULT OnNavReturn(HXUIOBJ hObj,BOOL& rfHandled);
HRESULT OnTransitionStart( XUIMessageTransition *pTransition, BOOL& bHandled );
HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled);
HRESULT OnKeyDown(XUIMessageInput *pInputData, BOOL& bHandled);
HRESULT OnNotifySetFocus(HXUIOBJ hObjSource, XUINotifyFocus *pNotifyFocusData, BOOL& bHandled);
HRESULT OnTMSBanFileRetrieved();
HRESULT OnTMSDLCFileRetrieved( );
HRESULT OnTimer( XUIMessageTimer *pTimer, BOOL& bHandled );
int SetSaveDevice();
static void LoadTrial();
void RunPlayGame(int iPad);
void RunLeaderboards(int iPad);
void RunAchievements(int iPad);
void RunHelpAndOptions(int iPad);
void RunUnlockOrDLC(int iPad);
eActions m_eAction;
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_Main, L"CScene_Main", XUI_CLASS_SCENE )
static int SignInReturned(void *pParam,bool bContinue);
static int CreateLoad_SignInReturned(void *pParam,bool bContinue, int iPad);
static int CreateLoad_OfflineProfileReturned(void *pParam,bool bContinue, int iPad);
static int DeviceSelectReturned(void *pParam,bool bContinue);
static int SaveGameReturned(void *pParam,bool bContinue);
static int HelpAndOptions_SignInReturned(void *pParam,bool bContinue,int iPad);
static int ExitGameReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
static int AchievementsDeviceSelectReturned(void *pParam,bool bContinue);
static int Achievements_SignInReturned(void *pParam,bool bContinue,int iPad);
static int Leaderboards_SignInReturned(void* pParam, bool bContinue, int iPad);
static int UnlockFullGame_SignInReturned(void *pParam,bool bContinue,int iPad);
static int MustSignInReturned(void *pParam,int iPad,C4JStorage::EMessageResult result);
#ifdef _XBOX
static int TMSReadFileListReturned(void *pParam,int iPad,C4JStorage::PTMSPP_FILE_LIST pTmsFileList);
static int TMSFileWriteReturned(void *pParam,int iPad,int iResult);
static int TMSFileReadReturned(void *pParam,int iPad,C4JStorage::PTMSPP_FILEDATA pData);
#endif
};