1#ifndef GAME_CLIENT_COMPONENTS_TOUCH_CONTROLS_H
2#define GAME_CLIENT_COMPONENTS_TOUCH_CONTROLS_H
45 int Sizeof()
const override {
return sizeof(*this); }
49 bool OnTouchState(
const std::vector<IInput::CTouchFingerState> &vTouchFingerStates)
override;
180 class CTouchButtonBehavior;
216 void Render(std::optional<bool> Selected = std::nullopt, std::optional<CUnitRect> Rect = std::nullopt)
const;
379 static constexpr const char *
const BEHAVIOR_ID =
"joystick-action";
577 void UpdateButtonsGame(
const std::vector<IInput::CTouchFingerState> &vTouchFingerStates);
585 std::optional<ColorRGBA>
ParseColor(
const json_value *pColorValue,
const char *pAttributeName, std::optional<ColorRGBA> DefaultColor)
const;
606 void UpdateButtonsEditor(
const std::vector<IInput::CTouchFingerState> &vTouchFingerStates);
Definition component.h:165
Definition jsonwriter.h:15
Definition touch_controls.h:547
IInput::CTouchFinger m_Finger
Definition touch_controls.h:550
bool m_Active
Definition touch_controls.h:549
Definition touch_controls.h:696
CTouchButton * m_pTargetButton
Definition touch_controls.h:699
bool m_Resolved
Definition touch_controls.h:698
Definition touch_controls.h:75
bool IsOverlap(const CUnitRect &Other) const
Definition touch_controls.h:82
bool operator==(const CUnitRect &Other) const
Definition touch_controls.h:86
int m_Y
Definition touch_controls.h:78
int m_X
Definition touch_controls.h:77
float Distance(const CUnitRect &Other) const
Definition touch_controls.cpp:2516
int m_H
Definition touch_controls.h:80
int m_W
Definition touch_controls.h:79
Definition touch_controls.h:24
std::vector< ivec2 > m_vTargets
Definition touch_controls.h:594
void SetBackgroundColorInactive(ColorRGBA Color)
Definition touch_controls.h:654
void UpdateButtonsGame(const std::vector< IInput::CTouchFingerState > &vTouchFingerStates)
Definition touch_controls.cpp:976
std::optional< IInput::CTouchFingerState > m_ActiveFingerState
Definition touch_controls.h:611
void SetSelectedButton(CTouchButton *TargetButton)
Definition touch_controls.h:646
void ResetVirtualVisibilities()
Definition touch_controls.cpp:1736
std::vector< CUnitRect > m_vYSortedRects
Definition touch_controls.h:597
std::vector< IInput::CTouchFingerState > m_vDeletedFingerState
Definition touch_controls.h:616
void OnWindowResize() override
Definition touch_controls.cpp:773
std::optional< CUnitRect > FindPositionXY(std::vector< CUnitRect > &vVisibleButtonRects, CUnitRect MyRect)
Definition touch_controls.cpp:2086
vec2 m_AccumulatedDelta
Definition touch_controls.h:615
void SetPreviewAllButtons(bool Preview)
Definition touch_controls.h:658
void OnReset() override
Definition touch_controls.cpp:767
std::optional< EDirectTouchIngameMode > ParseDirectTouchIngameMode(const json_value *pModeValue)
Definition touch_controls.cpp:1310
void WriteConfiguration(CJsonWriter *pWriter)
Definition touch_controls.cpp:1705
std::optional< CUnitRect > ShownRect() const
Definition touch_controls.h:643
vec2 m_ZoomStartPos
Definition touch_controls.h:614
void ResetButtonPointers()
Definition touch_controls.cpp:2455
int m_DirectTouchLastAction
Definition touch_controls.h:544
std::array< bool,(size_t) EButtonVisibility::NUM_VISIBILITIES > m_aVirtualVisibilities
Definition touch_controls.h:617
@ ACTION_AIM
Definition touch_controls.h:171
@ ACTION_HOOK
Definition touch_controls.h:173
@ NUM_ACTIONS
Definition touch_controls.h:174
@ ACTION_FIRE
Definition touch_controls.h:172
void SetBackgroundColorActive(ColorRGBA Color)
Definition touch_controls.h:655
std::optional< CUnitRect > m_ShownRect
Definition touch_controls.h:622
void UpdateButtonsEditor(const std::vector< IInput::CTouchFingerState > &vTouchFingerStates)
Definition touch_controls.cpp:1743
int NextActiveAction(int Action) const
Definition touch_controls.cpp:929
std::array< CTouchControls::CIssueParam,(unsigned) CTouchControls::EIssueType::NUM_ISSUES > Issues()
Definition touch_controls.cpp:2479
void SaveConfigurationToClipboard()
Definition touch_controls.cpp:869
int m_ActionSelected
Definition touch_controls.h:533
void SetEditingActive(bool EditingActive)
Definition touch_controls.h:70
ColorRGBA BackgroundColorInactive() const
Definition touch_controls.h:652
void OnRender() override
Definition touch_controls.cpp:806
int m_LastWidth
Definition touch_controls.h:598
CUIRect CalculateScreenFromUnitRect(CUnitRect Unit, EButtonShape Shape=EButtonShape::RECT) const
Definition touch_controls.cpp:108
CTouchButton * SampleButton() const
Definition touch_controls.h:648
int NextDirectTouchAction() const
Definition touch_controls.cpp:942
int m_JoystickPressCount
Definition touch_controls.h:538
std::vector< IInput::CTouchFinger > m_vStaleFingers
Definition touch_controls.h:562
EButtonShape
Definition touch_controls.h:111
@ CIRCLE
Definition touch_controls.h:113
@ RECT
Definition touch_controls.h:112
@ NUM_SHAPES
Definition touch_controls.h:114
CTouchButton * SelectedButton() const
Definition touch_controls.h:645
std::unique_ptr< CTouchButton > m_pSampleButton
Definition touch_controls.h:620
std::vector< CUnitRect > m_vLastUpdateRects
Definition touch_controls.h:595
bool IsRectOverlapping(CUnitRect MyRect, EButtonShape Shape) const
Definition touch_controls.cpp:2421
static constexpr const char *const SHAPE_NAMES[(int) EButtonShape::NUM_SHAPES]
Definition touch_controls.h:148
void SetShownRect(std::optional< CUnitRect > Rect)
Definition touch_controls.h:644
ColorRGBA DefaultBackgroundColorActive() const
Definition touch_controls.h:651
CPopupParam m_PopupParam
Definition touch_controls.h:706
void DeleteSelectedButton()
Definition touch_controls.cpp:2410
bool IsButtonEditing() const
Definition touch_controls.h:649
bool m_aExtraMenuActive[(int) EButtonVisibility::EXTRA_MENU_5 -(int) EButtonVisibility::EXTRA_MENU_1+1]
Definition touch_controls.h:528
void ReverseVirtualVisibilities(int Number)
Definition touch_controls.h:642
bool IsEditingActive() const
Definition touch_controls.h:69
std::array< CIssueParam,(int) EIssueType::NUM_ISSUES > m_aIssueParam
Definition touch_controls.h:707
int Sizeof() const override
Definition touch_controls.h:45
EDirectTouchSpectateMode DirectTouchSpectate() const
Definition touch_controls.h:63
bool LoadConfigurationFromClipboard()
Definition touch_controls.cpp:849
std::optional< EDirectTouchSpectateMode > ParseDirectTouchSpectateMode(const json_value *pModeValue)
Definition touch_controls.cpp:1340
void RenderButtonsGame()
Definition touch_controls.cpp:1191
std::array< bool,(size_t) EButtonVisibility::NUM_VISIBILITIES > VirtualVisibilities() const
Definition touch_controls.h:641
std::optional< CTouchButton > ParseButton(const json_value *pButtonObject)
Definition touch_controls.cpp:1391
std::unique_ptr< CBindTouchButtonBehavior > ParseBindBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1591
static constexpr const int BUTTON_SIZE_MAXIMUM
Definition touch_controls.h:28
void UpdateSampleButton(const CTouchButton &SrcButton)
Definition touch_controls.cpp:2491
bool m_EditingActive
Definition touch_controls.h:567
CTouchButton * m_pSelectedButton
Definition touch_controls.h:623
vec2 CalculateScreenSize() const
Definition touch_controls.cpp:1209
std::unique_ptr< CBindToggleTouchButtonBehavior > ParseBindToggleBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1639
CActionState m_aDirectTouchActionStates[NUM_ACTIONS]
Definition touch_controls.h:556
std::vector< CTouchButton * > GetButtonsEditor()
Definition touch_controls.cpp:2504
static constexpr const char *const DIRECT_TOUCH_SPECTATE_MODE_NAMES[(int) EDirectTouchSpectateMode::NUM_STATES]
Definition touch_controls.h:147
bool PreviewAllButtons() const
Definition touch_controls.h:657
void SetUnsavedChanges(bool UnsavedChanges)
Definition touch_controls.h:640
std::vector< CTouchButton > m_vTouchButtons
Definition touch_controls.h:523
bool LoadConfigurationFromFile(int StorageType)
Definition touch_controls.cpp:834
void OnInit() override
Definition touch_controls.cpp:758
void SetDirectTouchSpectate(EDirectTouchSpectateMode DirectTouchSpectate)
Definition touch_controls.h:64
void SetEditingChanges(bool EditingChanges)
Definition touch_controls.h:72
std::unique_ptr< CExtraMenuTouchButtonBehavior > ParseExtraMenuBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1575
static const constexpr int MAX_EXTRA_MENU_NUMBER
Definition touch_controls.h:108
bool m_UnsavedChanges
Definition touch_controls.h:625
int m_LastHeight
Definition touch_controls.h:599
EDirectTouchIngameMode
Definition touch_controls.h:30
@ DISABLED
Definition touch_controls.h:31
@ HOOK
Definition touch_controls.h:35
@ AIM
Definition touch_controls.h:33
@ FIRE
Definition touch_controls.h:34
@ NUM_STATES
Definition touch_controls.h:36
@ ACTION
Definition touch_controls.h:32
ColorRGBA m_BackgroundColorInactive
Definition touch_controls.h:509
EPopupType
Definition touch_controls.h:662
@ BUTTON_CHANGED
Definition touch_controls.h:664
@ NO_SPACE
Definition touch_controls.h:666
@ NUM_POPUPS
Definition touch_controls.h:669
@ BUTTON_INVISIBLE
Definition touch_controls.h:668
void RemakeSampleButton()
Definition touch_controls.h:647
ColorRGBA DefaultBackgroundColorInactive() const
Definition touch_controls.h:650
CTouchButton * NewButton()
Definition touch_controls.cpp:2385
EDirectTouchIngameMode DirectTouchIngame() const
Definition touch_controls.h:57
bool m_PreventSaving
Definition touch_controls.h:610
bool HasEditingChanges() const
Definition touch_controls.h:71
EIssueType
Definition touch_controls.h:688
@ CACHE_SETTINGS
Definition touch_controls.h:689
@ CACHE_POSITION
Definition touch_controls.h:691
@ NUM_ISSUES
Definition touch_controls.h:692
@ SAVE_SETTINGS
Definition touch_controls.h:690
std::unique_ptr< CPredefinedTouchButtonBehavior > ParsePredefinedBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1536
std::optional< IInput::CTouchFingerState > m_LongPressFingerState
Definition touch_controls.h:613
ColorRGBA BackgroundColorActive() const
Definition touch_controls.h:653
void SetDirectTouchIngame(EDirectTouchIngameMode DirectTouchIngame)
Definition touch_controls.h:58
ColorRGBA m_BackgroundColorActive
Definition touch_controls.h:516
bool ParseConfiguration(const void *pFileData, unsigned FileLength)
Definition touch_controls.cpp:1216
void ResetButtons()
Definition touch_controls.cpp:1179
bool OnTouchState(const std::vector< IInput::CTouchFingerState > &vTouchFingerStates) override
Definition touch_controls.cpp:782
std::optional< CUnitRect > UpdatePosition(CUnitRect MyRect, EButtonShape Shape, bool Ignore=false)
Definition touch_controls.cpp:2437
CButtonVisibilityData m_aVisibilityFunctions[(int) EButtonVisibility::NUM_VISIBILITIES]
Definition touch_controls.h:167
static constexpr const char *const LABEL_TYPE_NAMES[(int) CButtonLabel::EType::NUM_TYPES]
Definition touch_controls.h:177
CPopupParam RequiredPopup()
Definition touch_controls.cpp:2463
static constexpr const int BUTTON_SIZE_SCALE
Definition touch_controls.h:26
std::vector< CUnitRect > m_vXSortedRects
Definition touch_controls.h:596
std::unique_ptr< CTouchButtonBehavior > ParseBehavior(const json_value *pBehaviorObject)
Definition touch_controls.cpp:1501
bool AnyIssueNotResolved() const
Definition touch_controls.cpp:2472
EDirectTouchIngameMode m_DirectTouchIngame
Definition touch_controls.h:495
void RenderButtonsEditor()
Definition touch_controls.cpp:2066
static constexpr const int BUTTON_SIZE_MINIMUM
Definition touch_controls.h:27
bool m_PreviewAllButtons
Definition touch_controls.h:626
std::optional< ColorRGBA > ParseColor(const json_value *pColorValue, const char *pAttributeName, std::optional< ColorRGBA > DefaultColor) const
Definition touch_controls.cpp:1370
std::optional< IInput::CTouchFingerState > m_ZoomFingerState
Definition touch_controls.h:612
bool SaveConfigurationToFile()
Definition touch_controls.cpp:855
bool m_EditingChanges
Definition touch_controls.h:572
EButtonVisibility
Definition touch_controls.h:93
@ EXTRA_MENU_3
Definition touch_controls.h:103
@ EXTRA_MENU_2
Definition touch_controls.h:102
@ DUMMY_ALLOWED
Definition touch_controls.h:97
@ NUM_VISIBILITIES
Definition touch_controls.h:106
@ ZOOM_ALLOWED
Definition touch_controls.h:95
@ EXTRA_MENU_5
Definition touch_controls.h:105
@ VOTE_ACTIVE
Definition touch_controls.h:96
@ DEMO_PLAYER
Definition touch_controls.h:100
@ EXTRA_MENU_4
Definition touch_controls.h:104
@ RCON_AUTHED
Definition touch_controls.h:99
@ INGAME
Definition touch_controls.h:94
@ DUMMY_CONNECTED
Definition touch_controls.h:98
@ EXTRA_MENU_1
Definition touch_controls.h:101
bool HasUnsavedChanges() const
Definition touch_controls.h:639
EDirectTouchSpectateMode
Definition touch_controls.h:39
@ AIM
Definition touch_controls.h:41
@ NUM_STATES
Definition touch_controls.h:42
void InitVisibilityFunctions()
Definition touch_controls.cpp:877
CUnitRect CalculateHitbox(const CUnitRect &Rect, EButtonShape Shape) const
Definition touch_controls.cpp:120
static constexpr const char *const DIRECT_TOUCH_INGAME_MODE_NAMES[(int) EDirectTouchIngameMode::NUM_STATES]
Definition touch_controls.h:146
void BuildPositionXY(std::vector< CUnitRect > vVisibleButtonRects, CUnitRect MyRect)
Definition touch_controls.cpp:2174
EDirectTouchSpectateMode m_DirectTouchSpectate
Definition touch_controls.h:502
struct _json_value json_value
Definition serverbrowser.h:18
vector2_base< float > vec2
Definition vmath.h:161