#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 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 };