DDNet 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
36
37 // Which menu is selected.
47
48 enum class ESortType
49 {
56 };
58
67
76
77 // Mainly for passing values in popups.
80
81 // Storing everything you are editing.
87
91
116 std::vector<std::unique_ptr<CBehaviorElements>> m_vBehaviorElements;
117
118 unsigned m_ColorActive = 0;
119 unsigned m_ColorInactive = 0;
120
121 // Used for creating ui elements.
125
126 // Functional variables.
127 bool m_FirstEnter = true; // Execute something when first opening the editor.
128 bool m_CloseMenu = false; // Decide if closing menu after the popup confirm.
129 bool m_NeedUpdatePreview = true; // Whether to reload the button being previewed.
130 bool m_NeedSort = true; // Whether to sort all previewed buttons.
131 bool m_NeedFilter = false; // Whether to exclude some buttons from preview.
132 std::vector<CTouchControls::CTouchButton *> m_vpButtons;
133 std::vector<CTouchControls::CTouchButton *> m_vpMutableButtons;
136
137 void RenderTouchButtonEditor(CUIRect MainView);
141 void RenderTouchButtonBrowser(CUIRect MainView);
143
144 void RenderSelectingTab(CUIRect SelectingTab);
145 void RenderConfigSettings(CUIRect MainView);
146 void RenderPreviewSettings(CUIRect MainView);
147 void RenderTouchControlsEditor(CUIRect MainView);
148
149 // Confirm, Cancel only decide if saving cached settings.
152 void NoSpaceForOverlappingButton() const;
154
155 // Getter and setters.
156 bool UnsavedChanges() const;
158
159 // Convenient functions.
160 bool CheckCachedSettings() const;
161 void ResetCachedSettings();
167 void UpdateSampleButton();
168 void ResetButtonPointers();
170 void ResolveIssues();
171 int CalculatePredefinedType(const char *pType) const;
173 const char **VisibilityNames() const;
174 const char **PredefinedNames() const;
175 const char *HelpMessageForBehaviorType(EBehaviorType Type) const;
176 const char *HelpMessageForPredefinedType(EPredefinedType Type) const;
178
180 {
181 public:
182 const char *m_pId;
183 std::function<std::unique_ptr<CTouchControls::CPredefinedTouchButtonBehavior>()> m_Factory;
184 };
185
187};
188
189#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:113
std::string ParseLabel(const char *pLabel) const
Definition menus_ingame_touch_controls.cpp:1475
CButtonContainer m_aLabelTypeRadios[(int) CTouchControls::CButtonLabel::EType::NUM_TYPES]
Definition menus_ingame_touch_controls.h:100
CButtonContainer m_BindToggleDeleteButtons
Definition menus_ingame_touch_controls.h:99
CBehaviorElements() noexcept
Definition menus_ingame_touch_controls.cpp:1492
CButtonContainer m_BindToggleAddButtons
Definition menus_ingame_touch_controls.h:98
void Reset()
Definition menus_ingame_touch_controls.cpp:1526
CLineInputBuffered< 1024 > m_InputLabel
Definition menus_ingame_touch_controls.h:96
void UpdateLabel()
Definition menus_ingame_touch_controls.h:112
CLineInputBuffered< 1024 > m_InputCommand
Definition menus_ingame_touch_controls.h:95
void UpdateInputs()
Definition menus_ingame_touch_controls.cpp:1520
CTouchControls::CBindToggleTouchButtonBehavior::CCommand m_CachedCommands
Definition menus_ingame_touch_controls.h:97
Definition menus_ingame_touch_controls.h:180
const char * m_pId
Definition menus_ingame_touch_controls.h:182
std::function< std::unique_ptr< CTouchControls::CPredefinedTouchButtonBehavior >()> m_Factory
Definition menus_ingame_touch_controls.h:183
Definition menus_ingame_touch_controls.h:10
void DoPopupType(CTouchControls::CPopupParam PopupParam)
Definition menus_ingame_touch_controls.cpp:1137
void ResetButtonPointers()
Definition menus_ingame_touch_controls.cpp:1383
int m_SelectedPreviewButtonIndex
Definition menus_ingame_touch_controls.h:135
void ResetCachedSettings()
Definition menus_ingame_touch_controls.cpp:1220
CLineInputNumber m_InputX
Definition menus_ingame_touch_controls.h:82
EElementType m_EditElement
Definition menus_ingame_touch_controls.h:66
CTouchControls::CTouchButton * m_pNewSelectedButton
Definition menus_ingame_touch_controls.h:79
std::vector< CTouchControls::CTouchButton * > m_vpButtons
Definition menus_ingame_touch_controls.h:132
void InputPosFunction(CLineInputNumber *pInput)
Definition menus_ingame_touch_controls.cpp:1365
bool CheckCachedSettings() const
Definition menus_ingame_touch_controls.cpp:1182
CLineInputNumber m_InputH
Definition menus_ingame_touch_controls.h:85
void RenderTouchButtonEditor(CUIRect MainView)
Definition menus_ingame_touch_controls.cpp:48
CTouchControls::EButtonShape m_CachedShape
Definition menus_ingame_touch_controls.h:86
void SetUnsavedChanges(bool UnsavedChanges)
Definition menus_ingame_touch_controls.cpp:1176
EMenuType m_CurrentMenu
Definition menus_ingame_touch_controls.h:46
EBehaviorType m_EditBehaviorType
Definition menus_ingame_touch_controls.h:88
std::array< CButtonContainer,(unsigned) EElementType::NUM_ELEMENTS > m_aEditElementIds
Definition menus_ingame_touch_controls.h:124
bool m_NeedFilter
Definition menus_ingame_touch_controls.h:131
bool m_NeedSort
Definition menus_ingame_touch_controls.h:130
bool m_NeedUpdatePreview
Definition menus_ingame_touch_controls.h:129
void RenderTouchControlsEditor(CUIRect MainView)
Definition menus_ingame_touch_controls.cpp:1043
CTouchControls::CUnitRect GetPosInputs() const
Definition menus_ingame_touch_controls.cpp:1359
CLineInputNumber m_InputY
Definition menus_ingame_touch_controls.h:83
void UpdateSampleButton()
Definition menus_ingame_touch_controls.cpp:1375
bool m_CloseMenu
Definition menus_ingame_touch_controls.h:128
CTouchControls::CTouchButton * m_pOldSelectedButton
Definition menus_ingame_touch_controls.h:78
unsigned m_ColorActive
Definition menus_ingame_touch_controls.h:118
std::array< EVisibilityType,(size_t) CTouchControls::EButtonVisibility::NUM_VISIBILITIES > m_aCachedVisibilities
Definition menus_ingame_touch_controls.h:75
const char * HelpMessageForPredefinedType(EPredefinedType Type) const
Definition menus_ingame_touch_controls.cpp:1578
CLineInputNumber m_InputW
Definition menus_ingame_touch_controls.h:84
void SelectedButtonNotVisible()
Definition menus_ingame_touch_controls.cpp:1164
std::array< CButtonContainer,(unsigned) ESortType::NUM_SORTS > m_aSortHeaderIds
Definition menus_ingame_touch_controls.h:123
unsigned m_ColorInactive
Definition menus_ingame_touch_controls.h:119
const char ** PredefinedNames() const
Definition menus_ingame_touch_controls.cpp:1548
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:1237
bool RenderVisibilitySettingBlock(CUIRect Block)
Definition menus_ingame_touch_controls.cpp:559
void RenderConfigSettings(CUIRect MainView)
Definition menus_ingame_touch_controls.cpp:921
EMenuType
Definition menus_ingame_touch_controls.h:39
@ MENU_BUTTONS
Definition menus_ingame_touch_controls.h:41
@ NUM_MENUS
Definition menus_ingame_touch_controls.h:44
@ MENU_FILE
Definition menus_ingame_touch_controls.h:40
@ MENU_PREVIEW
Definition menus_ingame_touch_controls.h:43
@ MENU_SETTINGS
Definition menus_ingame_touch_controls.h:42
void RenderTouchButtonBrowser(CUIRect MainView)
Definition menus_ingame_touch_controls.cpp:634
bool NewButton(CTouchControls::CUnitRect Rect, CTouchControls::EButtonShape Shape)
Definition menus_ingame_touch_controls.cpp:1389
ESortType
Definition menus_ingame_touch_controls.h:49
@ X
Definition menus_ingame_touch_controls.h:51
@ NUM_SORTS
Definition menus_ingame_touch_controls.h:55
@ Y
Definition menus_ingame_touch_controls.h:52
@ W
Definition menus_ingame_touch_controls.h:53
@ LABEL
Definition menus_ingame_touch_controls.h:50
@ H
Definition menus_ingame_touch_controls.h:54
void ResolveIssues()
Definition menus_ingame_touch_controls.cpp:1404
void RenderPreviewButton(CUIRect MainView)
std::array< CButtonContainer,(unsigned) CTouchControls::EButtonVisibility::NUM_VISIBILITIES > m_aVisibilityIds
Definition menus_ingame_touch_controls.h:122
int m_CachedExtraMenuNumber
Definition menus_ingame_touch_controls.h:90
CLineInputBuffered< 1024 > m_FilterInput
Definition menus_ingame_touch_controls.h:134
std::vector< std::unique_ptr< CBehaviorElements > > m_vBehaviorElements
Definition menus_ingame_touch_controls.h:116
bool RenderBehaviorSettingBlock(CUIRect Block)
Definition menus_ingame_touch_controls.cpp:276
void SaveCachedSettingsToTarget(CTouchControls::CTouchButton *pTargetButton) const
Definition menus_ingame_touch_controls.cpp:1304
void ChangeSelectedButtonWhileHavingUnsavedChanges() const
Definition menus_ingame_touch_controls.cpp:1152
ESortType m_SortType
Definition menus_ingame_touch_controls.h:57
const char * HelpMessageForBehaviorType(EBehaviorType Type) const
Definition menus_ingame_touch_controls.cpp:1566
static const CBehaviorFactoryEditor BEHAVIOR_FACTORIES_EDITOR[11]
Definition menus_ingame_touch_controls.h:35
bool m_FirstEnter
Definition menus_ingame_touch_controls.h:127
std::vector< CTouchControls::CTouchButton * > m_vpMutableButtons
Definition menus_ingame_touch_controls.h:133
void SetPosInputs(CTouchControls::CUnitRect MyRect)
Definition menus_ingame_touch_controls.cpp:1351
int CalculatePredefinedType(const char *pType) const
Definition menus_ingame_touch_controls.cpp:1430
bool RenderLayoutSettingBlock(CUIRect Block)
Definition menus_ingame_touch_controls.cpp:195
void NoSpaceForOverlappingButton() const
Definition menus_ingame_touch_controls.cpp:1159
void RenderSelectingTab(CUIRect SelectingTab)
Definition menus_ingame_touch_controls.cpp:900
EElementType
Definition menus_ingame_touch_controls.h:60
@ NUM_ELEMENTS
Definition menus_ingame_touch_controls.h:64
@ LAYOUT
Definition menus_ingame_touch_controls.h:61
@ VISIBILITY
Definition menus_ingame_touch_controls.h:62
@ BEHAVIOR
Definition menus_ingame_touch_controls.h:63
static constexpr const float BUTTON_EDITOR_WIDTH
Definition menus_ingame_touch_controls.h:12
bool UnsavedChanges() const
Definition menus_ingame_touch_controls.cpp:1171
EVisibilityType
Definition menus_ingame_touch_controls.h:69
@ INCLUDE
Definition menus_ingame_touch_controls.h:71
@ NUM_VISIBILITIES
Definition menus_ingame_touch_controls.h:73
@ EXCLUDE
Definition menus_ingame_touch_controls.h:70
@ IGNORE
Definition menus_ingame_touch_controls.h:72
const char * HelpMessageForVisibilityType(CTouchControls::EButtonVisibility Type) const
Definition menus_ingame_touch_controls.cpp:1598
const char ** VisibilityNames() const
Definition menus_ingame_touch_controls.cpp:1533
EPredefinedType m_PredefinedBehaviorType
Definition menus_ingame_touch_controls.h:89
void RenderPreviewSettings(CUIRect MainView)
Definition menus_ingame_touch_controls.cpp:983
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_AIM_RELATIVE
Definition menus_ingame_touch_controls.h:31
@ JOYSTICK_ACTION
Definition menus_ingame_touch_controls.h:29
@ JOYSTICK_FIRE
Definition menus_ingame_touch_controls.h:32
@ JOYSTICK_HOOK
Definition menus_ingame_touch_controls.h:33
@ NUM_PREDEFINEDTYPES
Definition menus_ingame_touch_controls.h:34
@ 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:1442
@ NUM_TYPES
Definition touch_controls.h:139
Definition touch_controls.h:690
Definition touch_controls.h:184
Definition touch_controls.h:76
EButtonShape
Definition touch_controls.h:112
EButtonVisibility
Definition touch_controls.h:94
@ NUM_VISIBILITIES
Definition touch_controls.h:107
Definition ui_rect.h:12