Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_ModesEditorUIComponent.c
Go to the documentation of this file.
1
2
4{
5 //Rename to active modes
6 protected ref array<EEditorMode> m_aActiveModes = {};
7 protected ref SCR_SortedArray<SCR_EditorModePrefab> m_aOrderedEditorModePrefabs = new SCR_SortedArray<SCR_EditorModePrefab>();
8 //Combobox
10
12
13// //------------------------------------------------------------------------------------------------
14// protected override bool IsUnique()
15// {
16// return false;
17// }
18
19 //------------------------------------------------------------------------------------------------
20 protected void OnModeAdd(SCR_EditorModeEntity modeEntity)
21 {
22 if (!modeEntity)
23 return;
24
25 m_aActiveModes.Insert(modeEntity.GetModeType());
27 }
28
29 //------------------------------------------------------------------------------------------------
30 protected void OnModeRemove(SCR_EditorModeEntity modeEntity)
31 {
32 if (!modeEntity)
33 return;
34
35 int index = m_aActiveModes.Find(modeEntity.GetModeType());
36 if (index < 0)
37 return;
38
39 m_aActiveModes.Remove(index);
41 }
42
43 //------------------------------------------------------------------------------------------------
44 protected void CreateDropdown()
45 {
46 //m_DropdownWidget.ClearAll();
47 if (!m_EditorManager)
48 return;
49
50 SCR_EditorModeEntity currentModeEntity = m_EditorManager.GetCurrentModeEntity();
51
52 int count = m_aOrderedEditorModePrefabs.Count();
53
54 for(int i = 0; i < count; ++i)
55 {
57
58 if (info)
59 {
60 m_DropdownWidget.AddItem(info, info.GetModeColor());
61
62 if (currentModeEntity && currentModeEntity.GetModeType() == m_aOrderedEditorModePrefabs[i].GetMode())
63 m_DropdownWidget.SetCurrentItem(i, false);
64 }
65
66 }
67
69 }
70
71 //------------------------------------------------------------------------------------------------
73 {
74 if (!m_EditorManager)
75 return;
76
77 m_EditorManager.SetCurrentMode(m_aOrderedEditorModePrefabs[index].GetMode());
78 m_DropdownWidget.CloseDropdown();
79 }
80
81 //------------------------------------------------------------------------------------------------
82 protected void OnModeChange(SCR_EditorModeEntity currentModeEntity, SCR_EditorModeEntity prevModeEntity)
83 {
84 //Close if dialog or close list if not (mainly for if mode is forced changed)
85 if (m_bIsInDialog)
87
88 if (!m_EditorManager)
89 return;
90
91 WorkspaceWidget workspace = GetGame().GetWorkspace();
92 if (workspace)
93 {
94 if (workspace.GetFocusedWidget() == m_DropdownWidget.GetRootWidget())
95 workspace.SetFocusedWidget(null);
96 }
97
99 }
100
101 //------------------------------------------------------------------------------------------------
102 protected void RefreshModes()
103 {
104 SCR_EditorModeEntity currentModeEntity = m_EditorManager.GetCurrentModeEntity();
105 if (!currentModeEntity)
106 return;
107
108 int modeCount = 0;
109
110 int count = m_aOrderedEditorModePrefabs.Count();
111 for(int i = 0; i < count; ++i)
112 {
113 m_DropdownWidget.SetItemVisible(i, m_aActiveModes.Contains(m_aOrderedEditorModePrefabs[i].GetMode()));
114
115 if (!m_aActiveModes.Contains(m_aOrderedEditorModePrefabs[i].GetMode()))
116 continue;
117
118 modeCount++;
119
120 //Set combobox selected element
121 if (currentModeEntity.GetModeType() == m_aOrderedEditorModePrefabs[i].GetMode())
122 m_DropdownWidget.SetCurrentItem(i, false);
123 }
124
125 //m_DropdownWidget.SetDropdownEnable(modeCount > 1);
126 }
127
128 //------------------------------------------------------------------------------------------------
129 protected override void OnDialogOpened(SCR_DialogEditorUIComponent linkedComponent)
130 {
131 super.OnDialogOpened(linkedComponent);
132 //m_DropdownWidget.AllowFocus(true);
133
134 int selected = 0;
135
136 if (m_EditorManager)
137 {
138 EEditorMode currentMode = m_EditorManager.GetCurrentMode();
139 int count = m_aOrderedEditorModePrefabs.Count();
140
141 for(int i = 0; i < count; ++i)
142 {
143 if (m_aOrderedEditorModePrefabs[i].GetMode() == currentMode)
144 {
145 selected = i;
146 break;
147 }
148 }
149
150 }
151 }
152
153 //---- REFACTOR NOTE START: Set current mode might be more clear?
154
155 //------------------------------------------------------------------------------------------------
156 protected void SetSiblingMode(int relIndex)
157 {
158 if (!m_EditorManager || m_EditorManager.IsModeChangeRequested())
159 return;
160
161 array<EEditorMode> modes = {};
162 int modesCount = m_EditorManager.GetModes(modes);
163 if (modesCount <= 1)
164 return;
165
166 int index = modes.Find(m_EditorManager.GetCurrentMode()) + relIndex;
167 m_EditorManager.SetCurrentMode(modes[(index + modesCount) % modesCount])
168 }
169
170 //---- REFACTOR NOTE END ----
171
172 //------------------------------------------------------------------------------------------------
173 protected void OnEditorModePrev(float value, EActionTrigger reason)
174 {
175 SetSiblingMode(-1);
176 }
177
178 //------------------------------------------------------------------------------------------------
179 protected void OnEditorModeNext(float value, EActionTrigger reason)
180 {
182 }
183
184 //------------------------------------------------------------------------------------------------
185 override void OnRepeat()
186 {
187 if (m_EditorManager)
188 m_EditorManager.RestorePreviousMode();
189 }
190
191 //------------------------------------------------------------------------------------------------
192 override void OnInputDeviceIsGamepad(bool isGamepad)
193 {
194 if (m_bIsInDialog)
195 CloseDialog();
196
197 m_DropdownWidget.CloseDropdown();
198 }
199
200 //------------------------------------------------------------------------------------------------
202 {
203 if (m_bIsInDialog)
205
206 }
207
208 //------------------------------------------------------------------------------------------------
210 {
211 if (m_bIsInDialog)
212 {
214 CloseDialog();
215 }
216 }
217
218 //------------------------------------------------------------------------------------------------
220 {
221 super.HandlerAttachedScripted(w);
222
224 if (!core)
225 return;
226
228 if (!m_EditorManager)
229 return;
230
232 if (!m_DropdownWidget)
233 return;
234
235 //~Hotfix for border always showing
236 Widget border = w.FindAnyWidget("Border");
237 if (border)
238 border.SetOpacity(0);
239
240 m_DropdownWidget.GetOnChanged().Insert(OnModeSelected);
241 m_DropdownWidget.GetOnOpened().Insert(OnDropdownOpen);
242
243 array<SCR_EditorModeEntity> modeEntities = {};
244 int modesCount = m_EditorManager.GetModeEntities(modeEntities);
245 for (int i = 0; i < modesCount; i++)
246 {
247 OnModeAdd(modeEntities[i]);
248 }
249
250 //Create combobox
253
254 SCR_EditorModeEntity currentModeEntity = m_EditorManager.GetCurrentModeEntity();
255
256 m_EditorManager.GetOnModeAdd().Insert(OnModeAdd);
257 m_EditorManager.GetOnModeRemove().Insert(OnModeRemove);
258 m_EditorManager.GetOnModeChange().Insert(OnModeChange);
259
260 InputManager inputManager = GetGame().GetInputManager();
261 if (inputManager)
262 {
263 inputManager.AddActionListener("EditorModePrev", EActionTrigger.PRESSED, OnEditorModePrev);
264 inputManager.AddActionListener("EditorModeNext", EActionTrigger.PRESSED, OnEditorModeNext);
265 }
266 }
267
268 //------------------------------------------------------------------------------------------------
269 override void HandlerDeattached(Widget w)
270 {
271 super.HandlerDeattached(w);
272
273 if (m_EditorManager)
274 {
275 m_EditorManager.GetOnModeAdd().Remove(OnModeAdd);
276 m_EditorManager.GetOnModeRemove().Remove(OnModeRemove);
277 m_EditorManager.GetOnModeChange().Remove(OnModeChange);
278 }
279
280 InputManager inputManager = GetGame().GetInputManager();
281 if (inputManager)
282 {
283 inputManager.RemoveActionListener("EditorModePrev", EActionTrigger.PRESSED, OnEditorModePrev);
284 inputManager.RemoveActionListener("EditorModeNext", EActionTrigger.PRESSED, OnEditorModeNext);
285 }
286
288 {
289 m_DropdownWidget.GetOnChanged().Remove(OnModeSelected);
290 m_DropdownWidget.GetOnOpened().Remove(OnDropdownOpen);
291 m_DropdownWidget.GetOnClosed().Remove(OnDropdownClosed);
292 }
293 }
294}
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
void SCR_EditorManagerEntity(IEntitySource src, IEntity parent)
Input management system for user interactions.
Core component to manage SCR_EditorManagerEntity.
int GetBaseModePrefabs(out notnull array< SCR_EditorModePrefab > outPrefabs, EEditorModeFlag flags=-1, bool coreOnly=false)
SCR_EditorManagerEntity m_EditorManager
void OnModeSelected(SCR_CustomDropdownEditorUIComponent dropdown, int index)
void OnEditorModePrev(float value, EActionTrigger reason)
override void HandlerAttachedScripted(Widget w)
void OnModeChange(SCR_EditorModeEntity currentModeEntity, SCR_EditorModeEntity prevModeEntity)
SCR_CustomDropdownEditorUIComponent m_DropdownWidget
void OnModeRemove(SCR_EditorModeEntity modeEntity)
void OnDropdownOpen(SCR_CustomDropdownEditorUIComponent dropdown)
ref SCR_SortedArray< SCR_EditorModePrefab > m_aOrderedEditorModePrefabs
void OnModeAdd(SCR_EditorModeEntity modeEntity)
ref array< EEditorMode > m_aActiveModes
override void OnInputDeviceIsGamepad(bool isGamepad)
void OnEditorModeNext(float value, EActionTrigger reason)
override void OnDialogOpened(SCR_DialogEditorUIComponent linkedComponent)
override void HandlerDeattached(Widget w)
void OnDropdownClosed(SCR_CustomDropdownEditorUIComponent dropdown)
EEditorMode
Editor mode that defines overall functionality.
Definition EEditorMode.c:6
EActionTrigger