aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/XUI/XUI_MainMenu.h
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/Common/XUI/XUI_MainMenu.h')
-rw-r--r--Minecraft.Client/Common/XUI/XUI_MainMenu.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/XUI/XUI_MainMenu.h b/Minecraft.Client/Common/XUI/XUI_MainMenu.h
new file mode 100644
index 00000000..2e4279e4
--- /dev/null
+++ b/Minecraft.Client/Common/XUI/XUI_MainMenu.h
@@ -0,0 +1,128 @@
+#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
+};