DDraceNetwork Documentation
Loading...
Searching...
No Matches
menus_ingame_touch_controls.h
Go to the documentation of this file.
1#ifndef GAME_CLIENT_COMPONENTS_MENUS_INGAME_TOUCH_CONTROLS_H
2#define GAME_CLIENT_COMPONENTS_MENUS_INGAME_TOUCH_CONTROLS_H
5#include <game/client/ui.h>
6
7#include <memory>
8
10{
11public:
12 static constexpr const float BUTTON_EDITOR_WIDTH = 700.0f;
20
21 enum class EPredefinedType
22 {
34 };
35
36 // Which menu is selected.
46
47 enum class ESortType
48 {
55 };
57
66
75
76 // Mainly for passing values in popups.
79
80 // Storing everything you are editing.
86
90
115 std::vector<std::unique_ptr<CBehaviorElements>> m_vBehaviorElements;
116
117 unsigned m_ColorActive = 0;
118 unsigned m_ColorInactive = 0;
119
120 // Used for creating ui elements.
124
125 // Functional variables.
126 bool m_FirstEnter = true; // Execute something when first opening the editor.
127 bool m_CloseMenu = false; // Decide if closing menu after the popup confirm.
128 bool m_NeedUpdatePreview = true; // Whether to reload the button being previewed.
129 bool m_NeedSort = true; // Whether to sort all previewed buttons.
130 bool m_NeedFilter = false; // Whether to exclude some buttons from preview.
131 std::vector<CTouchControls::CTouchButton *> m_vpButtons;
132 std::vector<CTouchControls::CTouchButton *> m_vpMutableButtons;
135
136 void RenderTouchButtonEditor(CUIRect MainView);
140 void RenderTouchButtonBrowser(CUIRect MainView);
142
143 void RenderSelectingTab(CUIRect SelectingTab);
144 void RenderConfigSettings(CUIRect MainView);
145 void RenderPreviewSettings(CUIRect MainView);
146 void RenderTouchControlsEditor(CUIRect MainView);
147
148 // Confirm, Cancel only decide if saving cached settings.
151 void NoSpaceForOverlappingButton() const;
153
154 // Getter and setters.
155 bool UnsavedChanges() const;
157
158 // Convenient functions.
159 bool CheckCachedSettings() const;
160 void ResetCachedSettings();
166 void UpdateSampleButton();
167 void ResetButtonPointers();
169 void ResolveIssues();
170 int CalculatePredefinedType(const char *pType) const;
172 const char **VisibilityNames() const;
173 const char **PredefinedNames() const;
174 const char *HelpMessageForBehaviorType(EBehaviorType Type) const;
175 const char *HelpMessageForPredefinedType(EPredefinedType Type) const;
177
179 {
180 public:
181 const char *m_pId;
182 std::function<std::unique_ptr<CTouchControls::CPredefinedTouchButtonBehavior>()> m_Factory;
183 };
184
186};
187
188#endif
Definition ui.h:269
Definition component.h:15
Definition lineinput.h:202
Definition lineinput.h:215
void UpdateCommand()
Definition menus_ingame_touch_controls.h:112
std::string ParseLabel(const char *pLabel) const
Definition menus_ingame_touch_controls.cpp:1471
CButtonContainer m_aLabelTypeRadios[(int) CTouchControls::CButtonLabel::EType::NUM_TYPES]
Definition menus_ingame_touch_controls.h:99
CButtonContainer m_BindToggleDeleteButtons
Definition menus_ingame_touch_controls.h:98
CBehaviorElements() noexcept
Definition menus_ingame_touch_controls.cpp:1487
CButtonContainer m_BindToggleAddButtons
Definition menus_ingame_touch_controls.h:97
void Reset()
Definition menus_ingame_touch_controls.cpp:1521
CLineInputBuffered< 1024 > m_InputLabel
Definition menus_ingame_touch_controls.h:95
void UpdateLabel()
Definition menus_ingame_touch_controls.h:111
CLineInputBuffered< 1024 > m_InputCommand
Definition menus_ingame_touch_controls.h:94
void UpdateInputs()
Definition menus_ingame_touch_controls.cpp:1515
CTouchControls::CBindToggleTouchButtonBehavior::CCommand m_CachedCommands
Definition menus_ingame_touch_controls.h:96
Definition menus_ingame_touch_controls.h:179
const char * m_pId
Definition menus_ingame_touch_controls.h:181
std::function< std::unique_ptr< CTouchControls::CPredefinedTouchButtonBehavior >()> m_Factory
Definition menus_ingame_touch_controls.h:182
Definition menus_ingame_touch_controls.h:10
void DoPopupType(CTouchControls::CPopupParam PopupParam)
Definition menus_ingame_touch_controls.cpp:1133
void ResetButtonPointers()
Definition menus_ingame_touch_controls.cpp:1379
int m_SelectedPreviewButtonIndex
Definition menus_ingame_touch_controls.h:134
void ResetCachedSettings()
Definition menus_ingame_touch_controls.cpp:1216
CLineInputNumber m_InputX
Definition menus_ingame_touch_controls.h:81
EElementType m_EditElement
Definition menus_ingame_touch_controls.h:65
CTouchControls::CTouchButton * m_pNewSelectedButton
Definition menus_ingame_touch_controls.h:78
std::vector< CTouchControls::CTouchButton * > m_vpButtons
Definition menus_ingame_touch_controls.h:131
void InputPosFunction(CLineInputNumber *pInput)
Definition menus_ingame_touch_controls.cpp:1361
bool CheckCachedSettings() const
Definition menus_ingame_touch_controls.cpp:1178
CLineInputNumber m_InputH
Definition menus_ingame_touch_controls.h:84
void RenderTouchButtonEditor(CUIRect MainView)
Definition menus_ingame_touch_controls.cpp:45
CTouchControls::EButtonShape m_CachedShape
Definition menus_ingame_touch_controls.h:85
void SetUnsavedChanges(bool UnsavedChanges)
Definition menus_ingame_touch_controls.cpp:1172
EMenuType m_CurrentMenu
Definition menus_ingame_touch_controls.h:45
EBehaviorType m_EditBehaviorType
Definition menus_ingame_touch_controls.h:87
std::array< CButtonContainer,(unsigned) EElementType::NUM_ELEMENTS > m_aEditElementIds
Definition menus_ingame_touch_controls.h:123
bool m_NeedFilter
Definition menus_ingame_touch_controls.h:130
bool m_NeedSort
Definition menus_ingame_touch_controls.h:129
bool m_NeedUpdatePreview
Definition menus_ingame_touch_controls.h:128
void RenderTouchControlsEditor(CUIRect MainView)
Definition menus_ingame_touch_controls.cpp:1039
CTouchControls::CUnitRect GetPosInputs() const
Definition menus_ingame_touch_controls.cpp:1355
CLineInputNumber m_InputY
Definition menus_ingame_touch_controls.h:82
void UpdateSampleButton()
Definition menus_ingame_touch_controls.cpp:1371
bool m_CloseMenu
Definition menus_ingame_touch_controls.h:127
CTouchControls::CTouchButton * m_pOldSelectedButton
Definition menus_ingame_touch_controls.h:77
unsigned m_ColorActive
Definition menus_ingame_touch_controls.h:117
std::array< EVisibilityType,(size_t) CTouchControls::EButtonVisibility::NUM_VISIBILITIES > m_aCachedVisibilities
Definition menus_ingame_touch_controls.h:74
const char * HelpMessageForPredefinedType(EPredefinedType Type) const
Definition menus_ingame_touch_controls.cpp:1572
CLineInputNumber m_InputW
Definition menus_ingame_touch_controls.h:83
void SelectedButtonNotVisible()
Definition menus_ingame_touch_controls.cpp:1160
std::array< CButtonContainer,(unsigned) ESortType::NUM_SORTS > m_aSortHeaderIds
Definition menus_ingame_touch_controls.h:122
unsigned m_ColorInactive
Definition menus_ingame_touch_controls.h:118
const char ** PredefinedNames() const
Definition menus_ingame_touch_controls.cpp:1543
EBehaviorType
Definition menus_ingame_touch_controls.h:14
@ PREDEFINED
Definition menus_ingame_touch_controls.h:17
@ BIND
Definition menus_ingame_touch_controls.h:15
@ NUM_BEHAVIORS
Definition menus_ingame_touch_controls.h:18
@ BIND_TOGGLE
Definition menus_ingame_touch_controls.h:16
void CacheAllSettingsFromTarget(CTouchControls::CTouchButton *pTargetButton)
Definition menus_ingame_touch_controls.cpp:1233
static const CBehaviorFactoryEditor BEHAVIOR_FACTORIES_EDITOR[10]
Definition menus_ingame_touch_controls.h:33
bool RenderVisibilitySettingBlock(CUIRect Block)
Definition menus_ingame_touch_controls.cpp:558
void RenderConfigSettings(CUIRect MainView)
Definition menus_ingame_touch_controls.cpp:922
EMenuType
Definition menus_ingame_touch_controls.h:38
@ MENU_BUTTONS
Definition menus_ingame_touch_controls.h:40
@ NUM_MENUS
Definition menus_ingame_touch_controls.h:43
@ MENU_FILE
Definition menus_ingame_touch_controls.h:39
@ MENU_PREVIEW
Definition menus_ingame_touch_controls.h:42
@ MENU_SETTINGS
Definition menus_ingame_touch_controls.h:41
void RenderTouchButtonBrowser(CUIRect MainView)
Definition menus_ingame_touch_controls.cpp:635
bool NewButton(CTouchControls::CUnitRect Rect, CTouchControls::EButtonShape Shape)
Definition menus_ingame_touch_controls.cpp:1385
ESortType
Definition menus_ingame_touch_controls.h:48
@ X
Definition menus_ingame_touch_controls.h:50
@ NUM_SORTS
Definition menus_ingame_touch_controls.h:54
@ Y
Definition menus_ingame_touch_controls.h:51
@ W
Definition menus_ingame_touch_controls.h:52
@ LABEL
Definition menus_ingame_touch_controls.h:49
@ H
Definition menus_ingame_touch_controls.h:53
void ResolveIssues()
Definition menus_ingame_touch_controls.cpp:1400
void RenderPreviewButton(CUIRect MainView)
std::array< CButtonContainer,(unsigned) CTouchControls::EButtonVisibility::NUM_VISIBILITIES > m_aVisibilityIds
Definition menus_ingame_touch_controls.h:121
int m_CachedExtraMenuNumber
Definition menus_ingame_touch_controls.h:89
CLineInputBuffered< 1024 > m_FilterInput
Definition menus_ingame_touch_controls.h:133
std::vector< std::unique_ptr< CBehaviorElements > > m_vBehaviorElements
Definition menus_ingame_touch_controls.h:115
bool RenderBehaviorSettingBlock(CUIRect Block)
Definition menus_ingame_touch_controls.cpp:273
void SaveCachedSettingsToTarget(CTouchControls::CTouchButton *pTargetButton) const
Definition menus_ingame_touch_controls.cpp:1300
void ChangeSelectedButtonWhileHavingUnsavedChanges() const
Definition menus_ingame_touch_controls.cpp:1148
ESortType m_SortType
Definition menus_ingame_touch_controls.h:56
const char * HelpMessageForBehaviorType(EBehaviorType Type) const
Definition menus_ingame_touch_controls.cpp:1560
bool m_FirstEnter
Definition menus_ingame_touch_controls.h:126
std::vector< CTouchControls::CTouchButton * > m_vpMutableButtons
Definition menus_ingame_touch_controls.h:132
void SetPosInputs(CTouchControls::CUnitRect MyRect)
Definition menus_ingame_touch_controls.cpp:1347
int CalculatePredefinedType(const char *pType) const
Definition menus_ingame_touch_controls.cpp:1426
bool RenderLayoutSettingBlock(CUIRect Block)
Definition menus_ingame_touch_controls.cpp:192
void NoSpaceForOverlappingButton() const
Definition menus_ingame_touch_controls.cpp:1155
void RenderSelectingTab(CUIRect SelectingTab)
Definition menus_ingame_touch_controls.cpp:901
EElementType
Definition menus_ingame_touch_controls.h:59
@ NUM_ELEMENTS
Definition menus_ingame_touch_controls.h:63
@ LAYOUT
Definition menus_ingame_touch_controls.h:60
@ VISIBILITY
Definition menus_ingame_touch_controls.h:61
@ BEHAVIOR
Definition menus_ingame_touch_controls.h:62
static constexpr const float BUTTON_EDITOR_WIDTH
Definition menus_ingame_touch_controls.h:12
bool UnsavedChanges() const
Definition menus_ingame_touch_controls.cpp:1167
EVisibilityType
Definition menus_ingame_touch_controls.h:68
@ INCLUDE
Definition menus_ingame_touch_controls.h:70
@ NUM_VISIBILITIES
Definition menus_ingame_touch_controls.h:72
@ EXCLUDE
Definition menus_ingame_touch_controls.h:69
@ IGNORE
Definition menus_ingame_touch_controls.h:71
const char * HelpMessageForVisibilityType(CTouchControls::EButtonVisibility Type) const
Definition menus_ingame_touch_controls.cpp:1591
const char ** VisibilityNames() const
Definition menus_ingame_touch_controls.cpp:1528
EPredefinedType m_PredefinedBehaviorType
Definition menus_ingame_touch_controls.h:88
void RenderPreviewSettings(CUIRect MainView)
Definition menus_ingame_touch_controls.cpp:977
EPredefinedType
Definition menus_ingame_touch_controls.h:22
@ JOYSTICK_AIM
Definition menus_ingame_touch_controls.h:30
@ EMOTICON
Definition menus_ingame_touch_controls.h:25
@ EXTRA_MENU
Definition menus_ingame_touch_controls.h:24
@ JOYSTICK_ACTION
Definition menus_ingame_touch_controls.h:29
@ JOYSTICK_FIRE
Definition menus_ingame_touch_controls.h:31
@ JOYSTICK_HOOK
Definition menus_ingame_touch_controls.h:32
@ NUM_PREDEFINEDTYPES
Definition menus_ingame_touch_controls.h:33
@ SWAP_ACTION
Definition menus_ingame_touch_controls.h:27
@ USE_ACTION
Definition menus_ingame_touch_controls.h:28
@ INGAME_MENU
Definition menus_ingame_touch_controls.h:23
@ SPECTATE
Definition menus_ingame_touch_controls.h:26
std::string DetermineTouchButtonCommandLabel(CTouchControls::CTouchButton *pButton) const
Definition menus_ingame_touch_controls.cpp:1438
@ NUM_TYPES
Definition touch_controls.h:138
Definition touch_controls.h:676
Definition touch_controls.h:183
Definition touch_controls.h:75
EButtonShape
Definition touch_controls.h:111
EButtonVisibility
Definition touch_controls.h:93
@ NUM_VISIBILITIES
Definition touch_controls.h:106
Definition ui_rect.h:12