aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.h
blob: 62d75115cf1567df92a034f092cee75a9a8dc88c (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
#pragma once

#include "UIScene.h"

class UIScene_LaunchMoreOptionsMenu : public UIScene
{
private:
	enum EControls
	{
		// Add all checkboxes at the start as they also index into a checkboxes array
		eLaunchCheckbox_Online,
		eLaunchCheckbox_InviteOnly,
		eLaunchCheckbox_AllowFoF,
		eLaunchCheckbox_PVP,
		eLaunchCheckbox_TrustSystem,
		eLaunchCheckbox_FireSpreads,
		eLaunchCheckbox_TNT,
		eLaunchCheckbox_HostPrivileges,
		eLaunchCheckbox_ResetNether,
		eLaunchCheckbox_Structures,
		eLaunchCheckbox_FlatWorld,
		eLaunchCheckbox_BonusChest,
		eLaunchCheckbox_DisableSaving,

		eLaunchCheckboxes_Count,

		eControl_EditSeed,
		eControl_WorldSize,
	};

	UIControl m_gameOptions, m_worldOptions;
	UIControl_CheckBox m_checkboxes[eLaunchCheckboxes_Count];
	UIControl_Label m_labelWorldOptions, m_labelGameOptions, m_labelDescription;
	UIControl_Label m_labelSeed, m_labelRandomSeed, m_labelWorldSize;
	UIControl_TextInput m_editSeed;
	UIControl_Slider m_sliderWorldSize;
	IggyName m_funcSetMenuType, m_funcChangeTab;
	UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
		if(m_loadedResolution == eSceneResolution_1080)
		{
			UI_MAP_ELEMENT( m_labelGameOptions, "LabelGame")
			UI_MAP_ELEMENT( m_labelWorldOptions, "LabelWorld")

			UI_MAP_ELEMENT( m_gameOptions, "GameOptions")
			UI_BEGIN_MAP_CHILD_ELEMENTS(m_gameOptions)
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_Online], "CheckboxOnline")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_InviteOnly], "CheckboxInviteOnly")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_AllowFoF], "CheckboxAllowFoF")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_PVP], "CheckboxPVP")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_TrustSystem], "CheckboxTrustSystem")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_FireSpreads], "CheckboxFireSpreads")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_TNT], "CheckboxTNT")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_HostPrivileges], "CheckboxHostPrivileges")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_ResetNether], "CheckboxResetNether")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_DisableSaving], "CheckboxDisableSaving")
			UI_END_MAP_CHILD_ELEMENTS()
			
			UI_MAP_ELEMENT(m_worldOptions, "WorldOptions")
			UI_BEGIN_MAP_CHILD_ELEMENTS(m_worldOptions)
				UI_MAP_ELEMENT( m_labelSeed, "Seed")
				UI_MAP_ELEMENT( m_editSeed, "EditSeed")
				UI_MAP_ELEMENT( m_labelRandomSeed, "RandomSeed")
				UI_MAP_ELEMENT( m_labelWorldSize, "WorldSize")
				UI_MAP_ELEMENT( m_sliderWorldSize, "WorldSizeSlider")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_Structures], "CheckboxStructures")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_BonusChest], "CheckboxBonusChest")
				UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_FlatWorld], "CheckboxFlatWorld")
			UI_END_MAP_CHILD_ELEMENTS()

			UI_MAP_NAME( m_funcChangeTab, L"ChangeTab")
		}
		else
		{
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_Online], "CheckboxOnline")
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_InviteOnly], "CheckboxInviteOnly")
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_AllowFoF], "CheckboxAllowFoF")
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_PVP], "CheckboxPVP")
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_TrustSystem], "CheckboxTrustSystem")
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_FireSpreads], "CheckboxFireSpreads")
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_TNT], "CheckboxTNT")
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_HostPrivileges], "CheckboxHostPrivileges")
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_ResetNether], "CheckboxResetNether")

			UI_MAP_ELEMENT( m_labelWorldOptions, "WorldOptions")
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_Structures], "CheckboxStructures")
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_FlatWorld], "CheckboxFlatWorld")
			UI_MAP_ELEMENT( m_checkboxes[eLaunchCheckbox_BonusChest], "CheckboxBonusChest")
		}

		UI_MAP_ELEMENT( m_labelDescription, "Description")

		UI_MAP_NAME( m_funcSetMenuType, L"SetMenuType")
	UI_END_MAP_ELEMENTS_AND_NAMES()

	LaunchMoreOptionsMenuInitData *m_params;
	bool m_bMultiplayerAllowed;
	bool m_bIgnoreInput;
	bool m_tabIndex;

public:
	UIScene_LaunchMoreOptionsMenu(int iPad, void *initData, UILayer *parentLayer);
	
	virtual void updateTooltips();
	virtual void updateComponents();

	virtual EUIScene getSceneType() { return eUIScene_LaunchMoreOptionsMenu;}

protected:
	// TODO: This should be pure virtual in this class
	virtual wstring getMoviePath();

public:
	virtual void tick();
	virtual void handleDestroy();
	// INPUT
	virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled);
	virtual void handleFocusChange(F64 controlId, F64 childId);
	virtual void handleTimerComplete(int id);
	static int KeyboardCompleteSeedCallback(LPVOID lpParam,const bool bRes);
	virtual void handlePress(F64 controlId, F64 childId);
	virtual void handleSliderMove(F64 sliderId, F64 currentValue);

protected:
	void handleCheckboxToggled(F64 controlId, bool selected);
};