Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_TaskListEntryHandler.c
Go to the documentation of this file.
1[Obsolete("Replaced with SCR_TaskListEntryUIComponent")]
3{
4 /*
5 protected SCR_CollapseWidgetComponent m_CollapseHandler;
6
7 protected SCR_InputButtonComponent m_AssignButton;
8 protected SCR_InputButtonComponent m_ShowOnMapButton;
9
10 protected SCR_BaseTask m_Task;
11 protected Widget m_wMainWidget;
12
13 protected static const string ACCEPT_TASK = "#AR-CampaignTasks_ButtonAccept";
14 protected static const string ABANDON_TASK = "#AR-CampaignTasks_ButtonAbandon";
15 protected static const string CANCEL_TASK = "#AR-CampaignTasks_ButtonCancel";
16 protected static const string LOCAL_EXECUTOR_IS_ASSIGNED_TEXT = "#AR-CampaignTasks_ButtonBusy";
17 protected static const string ASSIGNEE_TIMEOUT_TEXT = "#AR-CampaignTasks_ButtonWait";
18 protected static const string TASK_ABANDONED_TEXT = "#AR-CampaignTasks_ButtonWait";
19
20 protected static const float ANIM_SPEED = UIConstants.FADE_RATE_SUPER_FAST;
21
22 protected ref array<SCR_BaseTaskExecutor> m_aAssignees = new array<SCR_BaseTaskExecutor>();
23
24 protected string m_sAssignees = "AssigneesLayout";
25 protected Widget m_wAssignees;
26 protected Widget m_wRootWidget;
27
28 [Attribute("0.761 0.386 0.08 1")]
29 protected ref Color m_AssignedTaskColor;
30
31 [Attribute("{10C0A9A305E8B3A4}UI/Imagesets/Tasks/Task_Icons.imageset", category: "Task icon", params: "imageset")]
32 protected ResourceName m_sIconImageset;
33
34 //------------------------------------------------------------------------------------------------
35 SCR_BaseTask GetTask()
36 {
37 return m_Task;
38 }
39
40 //------------------------------------------------------------------------------------------------
41 void SetTask(SCR_BaseTask task)
42 {
43 m_Task = task;
44 }
45
46 //------------------------------------------------------------------------------------------------
47 void SetAssigneeCount(int count)
48 {
49 TextWidget text = TextWidget.Cast(m_wAssignees.FindAnyWidget("Text"));
50 if (text)
51 text.SetText(count.ToString());
52 m_wAssignees.SetVisible(count > 0);
53 }
54
55 //------------------------------------------------------------------------------------------------
56 void SetTaskTextColor()
57 {
58 SCR_BaseTask localTask = SCR_BaseTaskExecutor.GetLocalExecutor().GetAssignedTask();
59 RichTextWidget textWidget = RichTextWidget.Cast(m_wRoot.FindAnyWidget("TaskTitle"));
60 if (m_Task == localTask)
61 textWidget.SetColor(m_AssignedTaskColor);
62 else
63 textWidget.SetColor(Color.FromInt(Color.WHITE));
64 }
65 //------------------------------------------------------------------------------------------------
66 void SetTaskIconColor()
67 {
68 SCR_BaseTask m_LocalTask = SCR_BaseTaskExecutor.GetLocalExecutor().GetAssignedTask();
69 ImageWidget m_wOutline = ImageWidget.Cast(m_wRoot.FindAnyWidget("Icon_Outline"));
70 ImageWidget m_wSymbol = ImageWidget.Cast(m_wRoot.FindAnyWidget("m_wTaskIcon"));
71 ImageWidget m_wLocalBackground = ImageWidget.Cast(m_wRoot.FindAnyWidget("Icon_Background"));
72 Color m_Orange = Color.FromSRGBA(226,167,80,255);
73
74 if (!m_wOutline || !m_wSymbol || !m_wLocalBackground || !m_Task)
75 return;
76
77 SCR_Faction faction = SCR_Faction.Cast(m_Task.GetTargetFaction());
78 if (!faction)
79 return;
80
81 if (m_Task == m_LocalTask)
82 m_wLocalBackground.SetColor(faction.GetFactionColor());
83
84 if(m_Task != m_LocalTask)
85 m_wLocalBackground.SetColor(Color.White);
86
87 if (m_Task.IsPriority())
88 {
89 m_wLocalBackground.LoadImageFromSet(0,m_sIconImageset, SCR_BaseTask.TASK_BG_M);
90 m_wLocalBackground.LoadImageFromSet(0,m_sIconImageset, SCR_BaseTask.TASK_BG_M);
91 m_wOutline.LoadImageFromSet(0,m_sIconImageset, SCR_BaseTask.TASK_O_M);
92
93 if(m_Task.IsAssigned() && m_Task == m_LocalTask)
94 {
95 m_wOutline.SetColor(faction.GetOutlineFactionColor());
96 m_wSymbol.SetColor(faction.GetOutlineFactionColor());
97 m_wLocalBackground.SetColor(UIColors.CONTRAST_COLOR);
98 }
99 else
100 {
101 m_wOutline.SetColor(faction.GetFactionColor());
102 m_wSymbol.SetColor(faction.GetFactionColor());
103 m_wLocalBackground.SetColor(faction.GetOutlineFactionColor());
104 }
105 }
106 if (!m_Task.IsPriority())
107 {
108 m_wLocalBackground.LoadImageFromSet(0,m_sIconImageset, SCR_BaseTask.TASK_BG);
109 m_wOutline.LoadImageFromSet(0,m_sIconImageset, SCR_BaseTask.TASK_O);
110 m_wSymbol.LoadImageFromSet(0, m_Task.GetIconImageset(), m_Task.GetFullTaskIconName());
111
112 if(m_Task.IsAssigned() && m_Task == m_LocalTask )
113 {
114 m_wOutline.SetColor(faction.GetOutlineFactionColor());
115 m_wSymbol.SetColor(faction.GetOutlineFactionColor());
116 m_wLocalBackground.SetColor(faction.GetFactionColor());
117 }
118 else
119 {
120 m_wOutline.SetColor(faction.GetOutlineFactionColor());
121 m_wSymbol.SetColor(faction.GetOutlineFactionColor());
122 m_wLocalBackground.SetColor(Color.White);
123 }
124 }
125 }
126
127 //------------------------------------------------------------------------------------------------
128 void UpdateTask(SCR_BaseTask task)
129 {
130 ImageWidget outline = ImageWidget.Cast(m_wRoot.FindAnyWidget("Icon_Outline"));
131 ImageWidget symbol = ImageWidget.Cast(m_wRoot.FindAnyWidget("m_wTaskIcon"));
132 ImageWidget background = ImageWidget.Cast(m_wRoot.FindAnyWidget("Icon_Background"));
133
134 if (!outline || !symbol || !background || !m_Task)
135 return;
136
137 if (task == m_Task)
138 {
139 SetAssigneeCount(task.GetAssigneeCount());
140 UpdateAssignButtonText(task);
141 SetTaskTextColor();
142 SetTaskIconColor();
143
144 TextWidget textWidget = TextWidget.Cast(m_wRoot.FindAnyWidget("TaskTitle"));
145 if (textWidget)
146 task.SetTitleWidgetText(textWidget, task.GetTaskListTaskTitle());
147
148 textWidget = TextWidget.Cast(m_wRoot.FindAnyWidget("TaskDescription"));
149 if (textWidget)
150 task.SetTitleWidgetText(textWidget, task.GetTaskListTaskText());
151 }
152
153 if (m_Task.IsPriority())
154 {
155 SetTaskIconColor();
156 background.LoadImageFromSet(0,m_sIconImageset, SCR_BaseTask.TASK_BG_M);
157 outline.LoadImageFromSet(0,m_sIconImageset, SCR_BaseTask.TASK_O_M);
158 }
159 else
160 {
161 background.LoadImageFromSet(0,m_sIconImageset, SCR_BaseTask.TASK_BG);
162 outline.LoadImageFromSet(0,m_sIconImageset, SCR_BaseTask.TASK_O);
163 }
164 }
165
166 //------------------------------------------------------------------------------------------------
167 protected void UpdateAssignButtonText(SCR_BaseTask task)
168 {
169 SCR_ECannotAssignReasons reason;
170 if (task.CanBeAssigned(reason))
171 {
172 if (m_AssignButton)
173 m_AssignButton.SetLabel(ACCEPT_TASK);
174 }
175 else
176 {
177 switch (reason)
178 {
179 case SCR_ECannotAssignReasons.TASK_IS_ASSIGNED:
180 {
181 m_AssignButton.SetLabel(ABANDON_TASK)
182 } break;
183
184 case SCR_ECannotAssignReasons.TASK_IS_ASSIGNED_TO_LOCAL_EXECUTOR:
185 {
186 m_AssignButton.SetLabel(ABANDON_TASK);
187 } break;
188
189 case SCR_ECannotAssignReasons.IS_TASK_REQUESTER:
190 {
191 m_AssignButton.SetLabel(CANCEL_TASK);
192 } break;
193
194 // Another task is already assigned to a local executor, so CanBeAssigned returns false. However in this case the task can be assigned by clicking on assign button.
195 case SCR_ECannotAssignReasons.LOCAL_EXECUTOR_IS_ASSIGNED:
196 {
197 m_AssignButton.SetLabel(ACCEPT_TASK);
198 } break;
199 }
200 }
201 }
202
203 //------------------------------------------------------------------------------------------------
204 void Expand(bool expand)
205 {
206 float targetOpacity = 0;
207 if (expand)
208 targetOpacity = 1;
209
210 m_AssignButton.SetEnabled(expand);
211 Widget assignBtn = m_wRoot.FindAnyWidget("AcceptButton");
212 AnimateWidget.Opacity(assignBtn, targetOpacity, ANIM_SPEED);
213
214 Widget mapBtn = m_wRoot.FindAnyWidget("MapButton");
215 AnimateWidget.Opacity(mapBtn, targetOpacity, ANIM_SPEED);
216 }
217
218 //------------------------------------------------------------------------------------------------
219 override bool OnClick(Widget w, int x, int y, int button)
220 {
221 super.OnClick(w, x, y, button);
222
223 InputManager im = GetGame().GetInputManager();
224 if (!im.IsUsingMouseAndKeyboard() || !IsAnyButtonHovered())
225 return false;
226
227 SCR_UISoundEntity.SoundEvent(SCR_SoundEvent.TASK_ACCEPT);
228 ExpandTaskLayout();
229
230 return false;
231 }
232
233 //------------------------------------------------------------------------------------------------
234 void ExpandTaskLayout()
235 {
236 if (!m_CollapseHandler)
237 return;
238
239 m_CollapseHandler.SetCollapsed(!m_CollapseHandler.IsCollapsed());
240 Expand(!m_CollapseHandler.IsCollapsed());
241
242 SCR_UITaskManagerComponent uiTaskManager = SCR_UITaskManagerComponent.GetInstance();
243 if (!uiTaskManager)
244 return;
245
246 foreach (Widget task : uiTaskManager.GetWidgetsArray())
247 {
248 SCR_TaskListEntryHandler collapse = SCR_TaskListEntryHandler.Cast(task.FindHandler(SCR_TaskListEntryHandler));
249 if (collapse && collapse != this && !collapse.IsCollapsed())
250 {
251 collapse.Expand(false);
252 collapse.SetCollapsed(true);
253 }
254 }
255 }
256
257 //------------------------------------------------------------------------------------------------
258 override bool OnFocusLost(Widget w, int x, int y)
259 {
260 super.OnFocusLost(w, x, y);
261
262 SCR_UITaskManagerComponent tm = SCR_UITaskManagerComponent.GetInstance();
263 if (!tm)
264 return false;
265
266 tm.SelectTask(null);
267 tm.SetSelectedWidget(w);
268
269 return false;
270 }
271
272 //------------------------------------------------------------------------------------------------
273 override bool OnFocus(Widget w, int x, int y)
274 {
275 super.OnFocus(w, x, y);
276 SCR_UITaskManagerComponent tm = SCR_UITaskManagerComponent.GetInstance();
277 if (!tm)
278 return false;
279
280 tm.SelectTask(m_Task);
281
282 return false;
283 }
284
285 //------------------------------------------------------------------------------------------------
286 void SetCollapsed(bool collapse, bool anim = true)
287 {
288 int opacity = 1;
289 if (collapse)
290 opacity = 0;
291
292 m_CollapseHandler.SetCollapsed(collapse, anim);
293 Widget assignBtns = m_wRoot.FindAnyWidget("AcceptButton");
294 if (assignBtns)
295 {
296 assignBtns.SetOpacity(opacity);
297 assignBtns.SetEnabled(opacity);
298
299 Widget mapBtn = m_wRoot.FindAnyWidget("MapButton");
300 if (mapBtn)
301 {
302 mapBtn.SetOpacity(opacity);
303 mapBtn.SetEnabled(opacity);
304 }
305 }
306 }
307
308 //------------------------------------------------------------------------------------------------
309 protected bool IsAnyButtonHovered()
310 {
311 return (!m_ShowOnMapButton.IsHovering() &&
312 !m_AssignButton.IsHovering());
313 }
314
315 //------------------------------------------------------------------------------------------------
316 protected bool IsCollapsed()
317 {
318 return m_CollapseHandler.IsCollapsed();
319 }
320
321 //------------------------------------------------------------------------------------------------
322 protected void AcceptTask()
323 {
324 SCR_UITaskManagerComponent utm = SCR_UITaskManagerComponent.GetInstance();
325 if (utm)
326 utm.Action_AssignTask(m_Task);
327 }
328
329 //------------------------------------------------------------------------------------------------
330 protected void PickAssignee()
331 {
332 SCR_UITaskManagerComponent utm = SCR_UITaskManagerComponent.GetInstance();
333 if (utm)
334 utm.Action_PickAssignee();
335 }
336
337 //------------------------------------------------------------------------------------------------
338 protected void ShowOnMap()
339 {
340 SCR_UITaskManagerComponent utm = SCR_UITaskManagerComponent.GetInstance();
341 if (utm)
342 utm.Action_ShowOnMap();
343 }
344
345 //------------------------------------------------------------------------------------------------
346 override void HandlerAttached(Widget w)
347 {
348 super.HandlerAttached(w);
349
350 SCR_BaseTaskManager.s_OnTaskUpdate.Insert(UpdateTask);
351
352 m_wAssignees = w.FindAnyWidget(m_sAssignees);
353
354 m_AssignButton = SCR_InputButtonComponent.GetInputButtonComponent("AcceptButton", w);
355 if (m_AssignButton)
356 {
357 m_AssignButton.SetEnabled(false);
358 m_AssignButton.m_OnActivated.Insert(AcceptTask);
359 }
360
361 m_ShowOnMapButton = SCR_InputButtonComponent.GetInputButtonComponent("MapButton", w);
362 if (m_ShowOnMapButton)
363 m_ShowOnMapButton.m_OnActivated.Insert(ShowOnMap);
364
365 Widget collapse = w.FindAnyWidget("Description");
366 if (collapse)
367 {
368 m_CollapseHandler = SCR_CollapseWidgetComponent.Cast(collapse.FindHandler(SCR_CollapseWidgetComponent));
369 //GetGame().GetCallqueue().CallLater(SetCollapsed, 10, false, true, false);
370 }
371
372 m_wRootWidget = w;
373
374 Widget assignBtn = m_wRoot.FindAnyWidget("AcceptButton");
375 if (assignBtn)
376 assignBtn.SetOpacity(0);
377
378 Widget mapBtn = m_wRoot.FindAnyWidget("MapButton");
379 if (mapBtn)
380 mapBtn.SetOpacity(0);
381 }
382
383 //------------------------------------------------------------------------------------------------
384 override void HandlerDeattached(Widget w)
385 {
386 super.HandlerDeattached(w);
387
388 SCR_BaseTaskManager.s_OnTaskUpdate.Remove(UpdateTask);
389 }
390 */
391}
Base class for any button, regardless its own content.