aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/XUI/XUI_MainMenu.h
blob: 2e4279e423d7c47e5babdd18f54cec50d8da85af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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
};