Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
FocusNavigationController.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/gui/oreui/input/FocusDirection.h"
7#include "mc/client/gui/oreui/input/GamepadButton.h"
8#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
9
10// auto generated forward declare list
11// clang-format off
12namespace OreUI { class FocusNavigationBinding; }
13// clang-format on
14
15namespace OreUI {
16
17class FocusNavigationController : public ::Bedrock::EnableNonOwnerReferences {
18public:
19 // FocusNavigationController inner types declare
20 // clang-format off
21 struct FocusNodeDesc;
22 struct FocusBinding;
23 struct Node;
24 struct Placement;
25 // clang-format on
26
27 // FocusNavigationController inner types define
28 enum class FocusNodeKind : uchar {
29 Grid = 0,
30 Item = 1,
31 };
32
33 struct FocusNodeDesc {
34 public:
35 // member variables
36 // NOLINTBEGIN
37 ::ll::TypedStorage<4, 4, uint> id;
38 ::ll::TypedStorage<4, 4, uint> parentId;
39 ::ll::TypedStorage<1, 1, ::OreUI::FocusNavigationController::FocusNodeKind> kind;
40 ::ll::TypedStorage<2, 2, ushort> columns;
41 ::ll::TypedStorage<2, 2, ushort> rows;
42 ::ll::TypedStorage<1, 1, bool> hasExplicitCell;
43 ::ll::TypedStorage<2, 2, ushort> cellRow;
44 ::ll::TypedStorage<2, 2, ushort> cellCol;
45 ::ll::TypedStorage<2, 2, ushort> colSpan;
46 ::ll::TypedStorage<2, 2, ushort> rowSpan;
47 ::ll::TypedStorage<4, 4, int> order;
48 ::ll::TypedStorage<1, 1, bool> disabled;
49 ::ll::TypedStorage<1, 1, bool> hidden;
50 ::ll::TypedStorage<1, 1, bool> shouldBindFocus;
51 // NOLINTEND
52 };
53
54 struct FocusBinding {
55 public:
56 // member variables
57 // NOLINTBEGIN
58 ::ll::TypedStorage<4, 4, uint> id;
59 ::ll::TypedStorage<4, 4, uint> restoreId;
60 // NOLINTEND
61 };
62
63 struct Node {
64 public:
65 // member variables
66 // NOLINTBEGIN
67 ::ll::TypedStorage<4, 32, ::OreUI::FocusNavigationController::FocusNodeDesc> desc;
68 ::ll::TypedStorage<8, 8, uint64> seq;
69 // NOLINTEND
70 };
71
72 struct Placement {
73 public:
74 // member variables
75 // NOLINTBEGIN
76 ::ll::TypedStorage<4, 4, uint> id;
77 ::ll::TypedStorage<2, 2, ushort> row;
78 ::ll::TypedStorage<2, 2, ushort> col;
79 ::ll::TypedStorage<2, 2, ushort> colSpan;
80 ::ll::TypedStorage<2, 2, ushort> rowSpan;
81 // NOLINTEND
82 };
83
84 using FocusNodeId = uint;
85
86public:
87 // member variables
88 // NOLINTBEGIN
89 ::ll::TypedStorage<8, 8, ::OreUI::FocusNavigationBinding*> mBinding;
90 ::ll::TypedStorage<8, 64, ::std::unordered_map<uint, ::OreUI::FocusNavigationController::Node>> mNodes;
91 ::ll::TypedStorage<8, 64, ::std::unordered_map<uint, ::std::vector<uint>>> mChildren;
92 ::ll::TypedStorage<4, 4, uint> mFocused;
93 ::ll::TypedStorage<4, 4, uint> mLastNotifiedFocused;
94 ::ll::TypedStorage<8, 24, ::std::vector<::OreUI::FocusNavigationController::FocusBinding>> mFocusBindingStack;
95 ::ll::TypedStorage<8, 8, uint64> mNextSeq;
96 ::ll::TypedStorage<2, 2, ushort> mDesiredRow;
97 ::ll::TypedStorage<2, 2, ushort> mDesiredCol;
98 // NOLINTEND
99
100public:
101 // prevent constructor by default
102 FocusNavigationController();
103
104public:
105 // member functions
106 // NOLINTBEGIN
108
109 MCNAPI ::std::vector<::OreUI::FocusNavigationController::Placement> _computePlacements(uint gridId) const;
110
111 MCNAPI uint _descendToLeaf(uint nodeId, ::OreUI::FocusDirection enterDirection) const;
112
113 MCNAPI bool _isValidFocusPath(uint id) const;
114
115 MCNAPI void _linkToParent(uint id);
116
117 MCNAPI uint _navigate(::OreUI::FocusDirection direction);
118
120
121 MCNAPI void _unlinkFromParent(uint id);
122
123 MCNAPI void _updateFocusBinding(uint id, bool shouldBindFocus);
124
125 MCNAPI void activate(::OreUI::GamepadButton button);
126
128
129 MCNAPI void clear();
130
131 MCNAPI uint focusFirst();
132
133 MCNAPI bool isWithinFocusBinding(uint id) const;
134
135 MCNAPI uint navigate(::OreUI::FocusDirection direction);
136
137 MCNAPI void removeNode(uint id);
138
139 MCNAPI void requestFocus(uint id);
140
141 MCNAPI uint setFocus(uint id);
142
144 // NOLINTEND
145
146public:
147 // constructor thunks
148 // NOLINTBEGIN
150 // NOLINTEND
151
152public:
153 // vftables
154 // NOLINTBEGIN
155 MCNAPI static void** $vftable();
156 // NOLINTEND
157};
158
159} // namespace OreUI
Definition FocusNavigationBinding.h:7
Definition FocusNavigationController.h:7
MCAPI void _unlinkFromParent(uint id)
MCAPI void * $ctor(::OreUI::FocusNavigationBinding &binding)
MCAPI void activate(::OreUI::GamepadButton button)
MCAPI FocusNavigationController(::OreUI::FocusNavigationBinding &binding)
MCAPI void requestFocus(uint id)
MCAPI ::std::vector<::OreUI::FocusNavigationController::Placement > _computePlacements(uint gridId) const
MCAPI uint setFocus(uint id)
MCAPI void addNode(::OreUI::FocusNavigationController::FocusNodeDesc const &desc)
MCAPI void _updateFocusBinding(uint id, bool shouldBindFocus)
static MCAPI void ** $vftable()
MCAPI void removeNode(uint id)
MCAPI bool _isValidFocusPath(uint id) const
MCAPI uint _navigate(::OreUI::FocusDirection direction)
MCAPI void _linkToParent(uint id)
MCAPI void updateNode(::OreUI::FocusNavigationController::FocusNodeDesc const &desc)
MCAPI uint navigate(::OreUI::FocusDirection direction)
MCAPI void _restoreReleasedFocus(::OreUI::FocusNavigationController::FocusBinding const &previous)
MCAPI uint _descendToLeaf(uint nodeId, ::OreUI::FocusDirection enterDirection) const
MCAPI bool isWithinFocusBinding(uint id) const
Definition FocusNavigationController.h:20
Definition FocusNavigationController.h:24
Definition FocusNavigationController.h:26
Definition FocusNavigationController.h:22