1#ifndef GAME_CLIENT_COMPONENTS_TOUCH_CONTROLS_H
2#define GAME_CLIENT_COMPONENTS_TOUCH_CONTROLS_H
46 int Sizeof()
const override {
return sizeof(*this); }
50 bool OnTouchState(
const std::vector<IInput::CTouchFingerState> &vTouchFingerStates)
override;
181 class CTouchButtonBehavior;
217 void Render(std::optional<bool> Selected = std::nullopt, std::optional<CUnitRect> Rect = std::nullopt)
const;
381 static constexpr const char *
const BEHAVIOR_ID =
"joystick-action";
403 static constexpr const char *
const BEHAVIOR_ID =
"joystick-aim-relative";
591 void UpdateButtonsGame(
const std::vector<IInput::CTouchFingerState> &vTouchFingerStates);
599 std::optional<ColorRGBA>
ParseColor(
const json_value *pColorValue,
const char *pAttributeName, std::optional<ColorRGBA> DefaultColor)
const;
621 void UpdateButtonsEditor(
const std::vector<IInput::CTouchFingerState> &vTouchFingerStates);
Definition component.h:165
Definition jsonwriter.h:15
Definition touch_controls.h:561
IInput::CTouchFinger m_Finger
Definition touch_controls.h:564
bool m_Active
Definition touch_controls.h:563
Definition touch_controls.h:711
CTouchButton * m_pTargetButton
Definition touch_controls.h:714
bool m_Resolved
Definition touch_controls.h:713
Definition touch_controls.h:76
bool IsOverlap(const CUnitRect &Other) const
Definition touch_controls.h:83
bool operator==(const CUnitRect &Other) const
Definition touch_controls.h:87
int m_Y
Definition touch_controls.h:79
int m_X
Definition touch_controls.h:78
float Distance(const CUnitRect &Other) const
Definition touch_controls.cpp:2551
int m_H
Definition touch_controls.h:81
int m_W
Definition touch_controls.h:80
Definition touch_controls.h:24
std::vector< ivec2 > m_vTargets
Definition touch_controls.h:608
void SetBackgroundColorInactive(ColorRGBA Color)
Definition touch_controls.h:669
void UpdateButtonsGame(const std::vector< IInput::CTouchFingerState > &vTouchFingerStates)
Definition touch_controls.cpp:999
std::optional< IInput::CTouchFingerState > m_ActiveFingerState
Definition touch_controls.h:626
void SetSelectedButton(CTouchButton *TargetButton)
Definition touch_controls.h:661
void ResetVirtualVisibilities()
Definition touch_controls.cpp:1756
std::vector< CUnitRect > m_vYSortedRects
Definition touch_controls.h:611
std::vector< IInput::CTouchFingerState > m_vDeletedFingerState
Definition touch_controls.h:631
void OnWindowResize() override
Definition touch_controls.cpp:788
std::optional< CUnitRect > FindPositionXY(std::vector< CUnitRect > &vVisibleButtonRects, CUnitRect MyRect)
Definition touch_controls.cpp:2050
vec2 m_AccumulatedDelta
Definition touch_controls.h:630
void SetPreviewAllButtons(bool Preview)
Definition touch_controls.h:673
void OnReset() override
Definition touch_controls.cpp:782
std::optional< EDirectTouchIngameMode > ParseDirectTouchIngameMode(const json_value *pModeValue)
Definition touch_controls.cpp:1329
void WriteConfiguration(CJsonWriter *pWriter)
Definition touch_controls.cpp:1725
std::optional< CUnitRect > ShownRect() const
Definition touch_controls.h:658
vec2 m_ZoomStartPos
Definition touch_controls.h:629
void ResetButtonPointers()
Definition touch_controls.cpp:2490
int m_DirectTouchLastAction
Definition touch_controls.h:558
std::array< bool,(size_t) EButtonVisibility::NUM_VISIBILITIES > m_aVirtualVisibilities
Definition touch_controls.h:632
@ ACTION_AIM
Definition touch_controls.h:172
@ ACTION_HOOK
Definition touch_controls.h:174
@ NUM_ACTIONS
Definition touch_controls.h:175
@ ACTION_FIRE
Definition touch_controls.h:173
void SetBackgroundColorActive(ColorRGBA Color)
Definition touch_controls.h:670
std::optional< CUnitRect > m_ShownRect
Definition touch_controls.h:637
void UpdateButtonsEditor(const std::vector< IInput::CTouchFingerState > &vTouchFingerStates)
Definition touch_controls.cpp:1763
int NextActiveAction(int Action) const
Definition touch_controls.cpp:944
std::array< CTouchControls::CIssueParam,(unsigned) CTouchControls::EIssueType::NUM_ISSUES > Issues()
Definition touch_controls.cpp:2514
void SaveConfigurationToClipboard()
Definition touch_controls.cpp:884
int m_ActionSelected
Definition touch_controls.h:547
void SetEditingActive(bool EditingActive)
Definition touch_controls.h:71
ColorRGBA BackgroundColorInactive() const
Definition touch_controls.h:667
void OnRender() override
Definition touch_controls.cpp:821
int m_LastWidth
Definition touch_controls.h:612
CUIRect CalculateScreenFromUnitRect(CUnitRect Unit, EButtonShape Shape=EButtonShape::RECT) const
Definition touch_controls.cpp:107
CTouchButton * SampleButton() const
Definition touch_controls.h:663
int NextDirectTouchAction() const
Definition touch_controls.cpp:957
int m_JoystickPressCount
Definition touch_controls.h:552
std::vector< IInput::CTouchFinger > m_vStaleFingers
Definition touch_controls.h:576
EButtonShape
Definition touch_controls.h:112
@ CIRCLE
Definition touch_controls.h:114
@ RECT
Definition touch_controls.h:113
@ NUM_SHAPES
Definition touch_controls.h:115
CTouchButton * SelectedButton() const
Definition touch_controls.h:660
std::unique_ptr< CTouchButton > m_pSampleButton
Definition touch_controls.h:635
std::vector< CUnitRect > m_vLastUpdateRects
Definition touch_controls.h:609
bool IsRectOverlapping(CUnitRect MyRect, EButtonShape Shape) const
Definition touch_controls.cpp:2456
static constexpr const char *const SHAPE_NAMES[(int) EButtonShape::NUM_SHAPES]
Definition touch_controls.h:149
void SetShownRect(std::optional< CUnitRect > Rect)
Definition touch_controls.h:659
ColorRGBA DefaultBackgroundColorActive() const
Definition touch_controls.h:666
CPopupParam m_PopupParam
Definition touch_controls.h:721
void DeleteSelectedButton()
Definition touch_controls.cpp:2445
bool IsButtonEditing() const
Definition touch_controls.h:664
bool m_aExtraMenuActive[(int) EButtonVisibility::EXTRA_MENU_5 -(int) EButtonVisibility::EXTRA_MENU_1+1]
Definition touch_controls.h:542
void ReverseVirtualVisibilities(int Number)
Definition touch_controls.h:657
bool IsEditingActive() const
Definition touch_controls.h:70
std::array< CIssueParam,(int) EIssueType::NUM_ISSUES > m_aIssueParam
Definition touch_controls.h:722
int Sizeof() const override
Definition touch_controls.h:46
EDirectTouchSpectateMode DirectTouchSpectate() const
Definition touch_controls.h:64
bool LoadConfigurationFromClipboard()
Definition touch_controls.cpp:864
std::optional< EDirectTouchSpectateMode > ParseDirectTouchSpectateMode(const json_value *pModeValue)
Definition touch_controls.cpp:1359
void RenderButtonsGame()
Definition touch_controls.cpp:1210
std::array< bool,(size_t) EButtonVisibility::NUM_VISIBILITIES > VirtualVisibilities() const
Definition touch_controls.h:656
std::optional< CTouchButton > ParseButton(const json_value *pButtonObject)
Definition touch_controls.cpp:1410
std::unique_ptr< CBindTouchButtonBehavior > ParseBindBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1611
static constexpr const int BUTTON_SIZE_MAXIMUM
Definition touch_controls.h:28
void UpdateSampleButton(const CTouchButton &SrcButton)
Definition touch_controls.cpp:2526
bool m_EditingActive
Definition touch_controls.h:581
CTouchButton * m_pSelectedButton
Definition touch_controls.h:638
vec2 CalculateScreenSize() const
Definition touch_controls.cpp:1228
std::unique_ptr< CBindToggleTouchButtonBehavior > ParseBindToggleBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1659
CActionState m_aDirectTouchActionStates[NUM_ACTIONS]
Definition touch_controls.h:570
std::vector< CTouchButton * > GetButtonsEditor()
Definition touch_controls.cpp:2539
static constexpr const char *const DIRECT_TOUCH_SPECTATE_MODE_NAMES[(int) EDirectTouchSpectateMode::NUM_STATES]
Definition touch_controls.h:148
bool PreviewAllButtons() const
Definition touch_controls.h:672
void SetUnsavedChanges(bool UnsavedChanges)
Definition touch_controls.h:655
std::vector< CTouchButton > m_vTouchButtons
Definition touch_controls.h:537
bool LoadConfigurationFromFile(int StorageType)
Definition touch_controls.cpp:849
void OnInit() override
Definition touch_controls.cpp:773
void SetDirectTouchSpectate(EDirectTouchSpectateMode DirectTouchSpectate)
Definition touch_controls.h:65
void SetEditingChanges(bool EditingChanges)
Definition touch_controls.h:73
std::unique_ptr< CExtraMenuTouchButtonBehavior > ParseExtraMenuBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1595
static const constexpr int MAX_EXTRA_MENU_NUMBER
Definition touch_controls.h:109
bool m_UnsavedChanges
Definition touch_controls.h:640
int m_LastHeight
Definition touch_controls.h:613
EDirectTouchIngameMode
Definition touch_controls.h:30
@ DISABLED
Definition touch_controls.h:31
@ HOOK
Definition touch_controls.h:36
@ AIM
Definition touch_controls.h:33
@ FIRE
Definition touch_controls.h:35
@ NUM_STATES
Definition touch_controls.h:37
@ AIM_RELATIVE
Definition touch_controls.h:34
@ ACTION
Definition touch_controls.h:32
ColorRGBA m_BackgroundColorInactive
Definition touch_controls.h:523
EPopupType
Definition touch_controls.h:677
@ BUTTON_CHANGED
Definition touch_controls.h:679
@ NO_SPACE
Definition touch_controls.h:681
@ NUM_POPUPS
Definition touch_controls.h:684
@ BUTTON_INVISIBLE
Definition touch_controls.h:683
void RemakeSampleButton()
Definition touch_controls.h:662
ColorRGBA DefaultBackgroundColorInactive() const
Definition touch_controls.h:665
CTouchButton * NewButton()
Definition touch_controls.cpp:2420
EDirectTouchIngameMode DirectTouchIngame() const
Definition touch_controls.h:58
bool m_PreventSaving
Definition touch_controls.h:625
bool HasEditingChanges() const
Definition touch_controls.h:72
EIssueType
Definition touch_controls.h:703
@ CACHE_SETTINGS
Definition touch_controls.h:704
@ CACHE_POSITION
Definition touch_controls.h:706
@ NUM_ISSUES
Definition touch_controls.h:707
@ SAVE_SETTINGS
Definition touch_controls.h:705
std::unique_ptr< CPredefinedTouchButtonBehavior > ParsePredefinedBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1555
std::optional< IInput::CTouchFingerState > m_LongPressFingerState
Definition touch_controls.h:628
ColorRGBA BackgroundColorActive() const
Definition touch_controls.h:668
void SetDirectTouchIngame(EDirectTouchIngameMode DirectTouchIngame)
Definition touch_controls.h:59
ColorRGBA m_BackgroundColorActive
Definition touch_controls.h:530
bool ParseConfiguration(const void *pFileData, unsigned FileLength)
Definition touch_controls.cpp:1235
void ResetButtons()
Definition touch_controls.cpp:1198
bool OnTouchState(const std::vector< IInput::CTouchFingerState > &vTouchFingerStates) override
Definition touch_controls.cpp:797
std::optional< CUnitRect > UpdatePosition(CUnitRect MyRect, EButtonShape Shape, bool Ignore=false)
Definition touch_controls.cpp:2472
CButtonVisibilityData m_aVisibilityFunctions[(int) EButtonVisibility::NUM_VISIBILITIES]
Definition touch_controls.h:168
static constexpr const char *const LABEL_TYPE_NAMES[(int) CButtonLabel::EType::NUM_TYPES]
Definition touch_controls.h:178
CPopupParam RequiredPopup()
Definition touch_controls.cpp:2498
static constexpr const int BUTTON_SIZE_SCALE
Definition touch_controls.h:26
std::vector< CUnitRect > m_vXSortedRects
Definition touch_controls.h:610
std::unique_ptr< CTouchButtonBehavior > ParseBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1520
bool AnyIssueNotResolved() const
Definition touch_controls.cpp:2507
CUnitRect FindSizeWH(std::vector< CUnitRect > vVisibleButtonRects, CUnitRect MyRect)
Definition touch_controls.cpp:2351
EDirectTouchIngameMode m_DirectTouchIngame
Definition touch_controls.h:509
void RenderButtonsEditor()
Definition touch_controls.cpp:2030
static constexpr const int BUTTON_SIZE_MINIMUM
Definition touch_controls.h:27
bool m_PreviewAllButtons
Definition touch_controls.h:641
std::optional< ColorRGBA > ParseColor(const json_value *pColorValue, const char *pAttributeName, std::optional< ColorRGBA > DefaultColor) const
Definition touch_controls.cpp:1389
std::optional< IInput::CTouchFingerState > m_ZoomFingerState
Definition touch_controls.h:627
bool SaveConfigurationToFile()
Definition touch_controls.cpp:870
bool m_EditingChanges
Definition touch_controls.h:586
EButtonVisibility
Definition touch_controls.h:94
@ EXTRA_MENU_3
Definition touch_controls.h:104
@ EXTRA_MENU_2
Definition touch_controls.h:103
@ DUMMY_ALLOWED
Definition touch_controls.h:98
@ NUM_VISIBILITIES
Definition touch_controls.h:107
@ ZOOM_ALLOWED
Definition touch_controls.h:96
@ EXTRA_MENU_5
Definition touch_controls.h:106
@ VOTE_ACTIVE
Definition touch_controls.h:97
@ DEMO_PLAYER
Definition touch_controls.h:101
@ EXTRA_MENU_4
Definition touch_controls.h:105
@ RCON_AUTHED
Definition touch_controls.h:100
@ INGAME
Definition touch_controls.h:95
@ DUMMY_CONNECTED
Definition touch_controls.h:99
@ EXTRA_MENU_1
Definition touch_controls.h:102
bool HasUnsavedChanges() const
Definition touch_controls.h:654
EDirectTouchSpectateMode
Definition touch_controls.h:40
@ AIM
Definition touch_controls.h:42
@ NUM_STATES
Definition touch_controls.h:43
void InitVisibilityFunctions()
Definition touch_controls.cpp:892
CUnitRect CalculateHitbox(const CUnitRect &Rect, EButtonShape Shape) const
Definition touch_controls.cpp:119
static constexpr const char *const DIRECT_TOUCH_INGAME_MODE_NAMES[(int) EDirectTouchIngameMode::NUM_STATES]
Definition touch_controls.h:147
void BuildPositionXY(std::vector< CUnitRect > vVisibleButtonRects, CUnitRect MyRect)
Definition touch_controls.cpp:2138
EDirectTouchSpectateMode m_DirectTouchSpectate
Definition touch_controls.h:516
struct _json_value json_value
Definition serverbrowser.h:18
vector2_base< float > vec2
Definition vmath.h:168