Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_Task.c
Go to the documentation of this file.
3{
8 FAILED,
10}
11
12[EnumLinear()]
13enum SCR_ETaskOwnership
20}
21
24{
25 NONE,
28 GROUP,
29 FACTION,
31}
32
33[EnumLinear()]
34enum SCR_ETaskUIVisibility
37 MAP_ONLY,
38 LIST_ONLY,
40}
41
44typedef ScriptInvokerBase<TaskStateInvokerDelegate> SCR_TaskStateInvoker;
45
46void TaskOwnershipInvokerDelegate(SCR_Task task, SCR_ETaskOwnership newOwnership);
48typedef ScriptInvokerBase<TaskOwnershipInvokerDelegate> SCR_TaskOwnershipInvoker;
49
52typedef ScriptInvokerBase<TaskVisibilityInvokerDelegate> SCR_TaskVisibilityInvoker;
53
54void TaskUIVisibilityInvokerDelegate(SCR_Task task, SCR_ETaskUIVisibility newUIVisibility);
56typedef ScriptInvokerBase<TaskUIVisibilityInvokerDelegate> SCR_TaskUIVisibilityInvoker;
57
60typedef ScriptInvokerBase<TaskExecutorInvokerDelegate> SCR_TaskExecutorInvoker;
61
64typedef ScriptInvokerBase<TaskExecutorRequesterInvokerDelegate> SCR_TaskExecutorRequesterInvoker;
65
66void TaskFactionInvokerDelegate(SCR_Task task, string factionKey);
68typedef ScriptInvokerBase<TaskFactionInvokerDelegate> SCR_TaskFactionInvoker;
69
72typedef ScriptInvokerBase<TaskGroupInvokerDelegate> SCR_TaskGroupInvoker;
73
74class SCR_TaskClass : GenericEntityClass
75{
76}
77
79{
80 [Attribute()]
81 protected string m_sTaskID;
82
83 [Attribute()]
85
86 [Attribute(defvalue: SCR_ETaskState.CREATED.ToString(), uiwidget: UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(SCR_ETaskState))]
88
89 [Attribute(defvalue: SCR_ETaskOwnership.EVERYONE.ToString(), uiwidget: UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(SCR_ETaskOwnership))]
90 protected SCR_ETaskOwnership m_eTaskOwnership;
91
92 [Attribute(defvalue: SCR_ETaskVisibility.EVERYONE.ToString(), uiwidget: UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(SCR_ETaskVisibility))]
94
95 [Attribute(defvalue: SCR_ETaskUIVisibility.ALL.ToString(), uiwidget: UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(SCR_ETaskUIVisibility))]
96 protected SCR_ETaskUIVisibility m_eTaskUIVisibility;
97
98 [Attribute()]
99 protected ref array<string> m_aOwnerFactionKeys;
100
101 [Attribute()]
102 protected ref array<int> m_aOwnerGroupIDs;
103
104 [Attribute()]
105 protected ref array<ref SCR_TaskExecutor> m_aOwnerExecutors;
106
107 [Attribute()]
108 protected ref array<ref SCR_TaskExecutor> m_aAssignees;
109
111
113 protected SCR_TaskUIComponent m_UIComponent;
115
116 protected static ref SCR_TaskStateInvoker s_OnTaskStateChanged;
117 protected static ref SCR_TaskOwnershipInvoker s_OnTaskOwnershipChanged;
118 protected static ref SCR_TaskVisibilityInvoker s_OnTaskVisibilityChanged;
119 protected static ref SCR_TaskUIVisibilityInvoker s_OnTaskUIVisibilityChanged;
120
121 protected static ref SCR_TaskExecutorRequesterInvoker s_OnTaskAssigneeAdded;
122 protected static ref SCR_TaskExecutorRequesterInvoker s_OnTaskAssigneeRemoved;
123
124 protected static ref SCR_TaskFactionInvoker s_OnOwnerFactionAdded;
125 protected static ref SCR_TaskFactionInvoker s_OnOwnerFactionRemoved;
126
127 protected static ref SCR_TaskGroupInvoker s_OnOwnerGroupAdded;
128 protected static ref SCR_TaskGroupInvoker s_OnOwnerGroupRemoved;
129
130 protected static ref SCR_TaskExecutorInvoker s_OnOwnerExecutorAdded;
131 protected static ref SCR_TaskExecutorInvoker s_OnOwnerExecutorRemoved;
132
133 protected ref ScriptInvokerVoid m_OnDisplayDataChanged; // Invoked when task name, description or icon changes
134
135#ifdef WORKBENCH
136 protected ref DebugTextWorldSpace m_DebugText;
137#endif
138
139 //------------------------------------------------------------------------------------------------
143 {
144 return m_TaskData;
145 }
146
147 //------------------------------------------------------------------------------------------------
151 {
152 if (!m_TaskData)
153 return null;
154
155 if (!m_TaskData.m_UIInfo)
156 m_TaskData.m_UIInfo = new SCR_TaskUIInfo();
157
158 return m_TaskData.m_UIInfo;
159 }
160
161 //------------------------------------------------------------------------------------------------
164 string GetTaskID()
165 {
166 if (m_TaskData)
167 return m_TaskData.m_sID;
168
169 return string.Empty;
170 }
171
172 //------------------------------------------------------------------------------------------------
175 void SetTaskID(string taskID)
176 {
177 Rpc_SetTaskID(taskID);
178 Rpc(Rpc_SetTaskID, taskID);
179 }
180
181 //------------------------------------------------------------------------------------------------
182 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
183 protected void Rpc_SetTaskID(string taskID)
184 {
185 if (m_TaskData)
186 m_TaskData.m_sID = taskID;
187 }
188
189 //------------------------------------------------------------------------------------------------
193 {
194 if (m_TaskData)
195 return m_TaskData.m_iAuthorId;
196
197 return -1;
198 }
199
200 //------------------------------------------------------------------------------------------------
205 void SetAuthorCredentials(int authorId, UUID authorIdentityId, PlatformKind platformKind)
206 {
207 Rpc_SetAuthorCredentials(authorId,authorIdentityId,platformKind);
208 Rpc(Rpc_SetAuthorCredentials,authorId,authorIdentityId,platformKind);
209 }
210
211 //------------------------------------------------------------------------------------------------
212 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
213 protected void Rpc_SetAuthorCredentials(int authorId, UUID authorIdentityId, PlatformKind platformKind)
214 {
215 if (m_TaskData)
216 {
217 m_TaskData.m_iAuthorId = authorId;
218 m_TaskData.m_ePlatformKind = platformKind;
219 m_TaskData.m_sAuthorIdentityId = authorIdentityId;
220 }
221 }
222
223 //------------------------------------------------------------------------------------------------
227 {
228 if (m_TaskData)
229 return m_TaskData.m_ePlatformKind;
230
231 return PlatformKind.NONE;
232 }
233
234 //------------------------------------------------------------------------------------------------
238 {
239 if (m_TaskData)
240 return m_TaskData.m_sAuthorIdentityId;
241
242 return UUID.Empty;
243 }
244
245 //------------------------------------------------------------------------------------------------
249 LocalizedString GetTaskName(out array<LocalizedString> params = null)
250 {
251 if (m_TaskData && m_TaskData.m_UIInfo)
252 return m_TaskData.m_UIInfo.GetUnformattedName(params);
253
254 return LocalizedString.Empty;
255 }
256
257 //------------------------------------------------------------------------------------------------
261 void SetTaskName(LocalizedString taskName, array<LocalizedString> taskNameParams = null)
262 {
263 Rpc_SetTaskName(taskName, taskNameParams);
264 Rpc(Rpc_SetTaskName, taskName, taskNameParams);
265 }
266
267 //------------------------------------------------------------------------------------------------
268 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
269 protected void Rpc_SetTaskName(LocalizedString taskName, array<LocalizedString> taskNameParams)
270 {
271 if (!m_TaskData || !m_TaskData.m_UIInfo)
272 return;
273
274 m_TaskData.m_UIInfo.SetUnformattedName(taskName, taskNameParams);
275
277 m_EditableEntityComponent.GetInfo(this).SetName(taskName);
278
280 m_OnDisplayDataChanged.Invoke();
281 }
282
283 //------------------------------------------------------------------------------------------------
287 LocalizedString GetTaskDescription(out array<LocalizedString> params = null)
288 {
289 if (m_TaskData && m_TaskData.m_UIInfo)
290 return m_TaskData.m_UIInfo.GetUnformattedDescription(params);
291
292 return LocalizedString.Empty;
293 }
294
295 //------------------------------------------------------------------------------------------------
299 void SetTaskDescription(LocalizedString taskDesc, array<LocalizedString> taskDescParams = null)
300 {
301 Rpc_SetTaskDescription(taskDesc, taskDescParams);
302 Rpc(Rpc_SetTaskDescription, taskDesc, taskDescParams);
303 }
304
305 //------------------------------------------------------------------------------------------------
306 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
307 protected void Rpc_SetTaskDescription(LocalizedString taskDesc, array<LocalizedString> taskDescParams)
308 {
309 if (!m_TaskData || !m_TaskData.m_UIInfo)
310 return;
311
312 m_TaskData.m_UIInfo.SetUnformattedDescription(taskDesc, taskDescParams);
313
315 m_EditableEntityComponent.GetInfo(this).SetDescription(taskDesc);
316
318 m_OnDisplayDataChanged.Invoke();
319 }
320
321 //------------------------------------------------------------------------------------------------
325 {
326 if (m_TaskData && m_TaskData.m_UIInfo)
327 return m_TaskData.m_UIInfo.GetImageSetPath();
328
329 return string.Empty;
330 }
331
332 //------------------------------------------------------------------------------------------------
336 {
337 Rpc_SetTaskIconPath(iconPath);
338 Rpc(Rpc_SetTaskIconPath, iconPath);
339 }
340
341 //------------------------------------------------------------------------------------------------
342 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
343 protected void Rpc_SetTaskIconPath(ResourceName iconPath)
344 {
345 if (!m_TaskData || !m_TaskData.m_UIInfo)
346 return;
347
348 m_TaskData.m_UIInfo.SetIconPath(iconPath);
349
351 m_OnDisplayDataChanged.Invoke();
352 }
353
354 //------------------------------------------------------------------------------------------------
358 {
359 if (m_TaskData && m_TaskData.m_UIInfo)
360 return m_TaskData.m_UIInfo.GetIconSetName();
361
362 return string.Empty;
363 }
364
365 //------------------------------------------------------------------------------------------------
368 void SetTaskIconSetName(string iconSetName)
369 {
370 Rpc_SetTaskIconSetName(iconSetName);
371 Rpc(Rpc_SetTaskIconSetName, iconSetName);
372 }
373
374 //------------------------------------------------------------------------------------------------
375 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
376 protected void Rpc_SetTaskIconSetName(string iconSetName)
377 {
378 if (!m_TaskData || !m_TaskData.m_UIInfo)
379 return;
380
381 m_TaskData.m_UIInfo.SetIconSetName(iconSetName);
382
384 m_OnDisplayDataChanged.Invoke();
385 }
386
387 //------------------------------------------------------------------------------------------------
391 {
392 if (!m_TaskData)
393 return 0;
394
395 return m_TaskData.m_aAssignees.Count();
396 }
397
398 //------------------------------------------------------------------------------------------------
402 int GetTaskAssigneePlayerCount(bool recursive = true)
403 {
404 if (!m_TaskData)
405 return 0;
406
407 if (!m_TaskData.m_aAssignees || m_TaskData.m_aAssignees.IsEmpty())
408 return 0;
409
410 SCR_GroupsManagerComponent groupsManagerComponent;
411 if (recursive)
412 groupsManagerComponent = SCR_GroupsManagerComponent.GetInstance();
413
414 if (recursive && !groupsManagerComponent)
415 return 0;
416
417 int count, groupID;
418 SCR_TaskExecutorGroup executorGroup;
419 SCR_AIGroup group;
420 foreach (SCR_TaskExecutor executor : m_TaskData.m_aAssignees)
421 {
422 if (SCR_TaskExecutorPlayer.Cast(executor))
423 {
424 count++;
425 }
426 else if (recursive)
427 {
428 executorGroup = SCR_TaskExecutorGroup.Cast(executor);
429 if (!executorGroup)
430 continue;
431
432 groupID = executorGroup.GetGroupID();
433 group = groupsManagerComponent.FindGroup(groupID);
434 if (!group)
435 continue;
436
437 count += group.GetPlayerCount();
438 }
439 }
440
441 return count;
442 }
443
444 //------------------------------------------------------------------------------------------------
447 array<ref SCR_TaskExecutor> GetTaskAssignees()
448 {
449 if (!m_TaskData)
450 return null;
451
452 return m_TaskData.m_aAssignees;
453 }
454
455 //------------------------------------------------------------------------------------------------
459 {
460 array<int> assigneePlayerIDs = {};
461 if (!m_TaskData || !m_TaskData.m_aAssignees)
462 return assigneePlayerIDs;
463
464 SCR_TaskExecutorPlayer playerAssignee;
465 SCR_TaskExecutorGroup groupAssignee;
466 SCR_GroupsManagerComponent groupsManager = SCR_GroupsManagerComponent.GetInstance();
467
468 foreach (SCR_TaskExecutor assignee : m_TaskData.m_aAssignees)
469 {
470 playerAssignee = SCR_TaskExecutorPlayer.Cast(assignee);
471 if (playerAssignee)
472 assigneePlayerIDs.Insert(playerAssignee.GetPlayerID());
473
474 groupAssignee = SCR_TaskExecutorGroup.Cast(assignee);
475 if (groupAssignee)
476 {
477 SCR_AIGroup group = groupsManager.FindGroup(groupAssignee.GetGroupID());
478 if (group)
479 {
480 assigneePlayerIDs.InsertAll(group.GetPlayerIDs());
481 }
482 }
483 }
484
485 return assigneePlayerIDs;
486 }
487
488 //------------------------------------------------------------------------------------------------
493 bool IsTaskAssignedTo(SCR_TaskExecutor executor, out SCR_TaskExecutor match = null)
494 {
495 if (!m_TaskData || !executor)
496 return false;
497
498 if (!m_TaskData.m_aAssignees || m_TaskData.m_aAssignees.IsEmpty())
499 return false;
500
501 match = SCR_TaskExecutor.FindMatchingTaskExecutor(m_TaskData.m_aAssignees, executor, true);
502 if (!match)
503 return false;
504
505 return true;
506 }
507
508 //------------------------------------------------------------------------------------------------
514 bool AddTaskAssignee(SCR_TaskExecutor executor, bool listenToInvokers = true, int requesterID = 0)
515 {
516 if (!m_TaskData || !executor)
517 return false;
518
519 if (!m_TaskData.m_aAssignees)
520 m_TaskData.m_aAssignees = new array<ref SCR_TaskExecutor>();
521
522 if (IsTaskAssignedTo(executor))
523 return false;
524
525 m_TaskData.m_aAssignees.Insert(executor);
526
527 if (listenToInvokers)
528 {
529 SCR_TaskExecutorPlayer executorPlayer = SCR_TaskExecutorPlayer.Cast(executor);
530 if (executorPlayer)
531 {
532 int playerID = executorPlayer.GetPlayerID();
533
534 PlayerManager playerManager = GetGame().GetPlayerManager();
535 if (!playerManager)
536 return false;
537
538 SCR_PlayerController playerController = SCR_PlayerController.Cast(playerManager.GetPlayerController(playerID));
539 if (!playerController)
540 return false;
541
542 SCR_PlayerControllerGroupComponent groupComponent = SCR_PlayerControllerGroupComponent.Cast(playerController.FindComponent(SCR_PlayerControllerGroupComponent));
543 if (groupComponent)
544 groupComponent.GetOnGroupChanged().Insert(OnGroupChanged);
545
546 SCR_FactionManager factionManager = SCR_FactionManager.Cast(GetGame().GetFactionManager());
547 if (!factionManager)
548 return false;
549
550 factionManager.GetOnPlayerFactionChanged_S().Insert(OnPlayerFactionChanged);
551 }
552
553 SCR_TaskExecutorGroup executorGroup = SCR_TaskExecutorGroup.Cast(executor);
554 if (executorGroup)
555 {
556 int groupID = executorGroup.GetGroupID();
557
558 SCR_GroupsManagerComponent groupsManagerComponent = SCR_GroupsManagerComponent.GetInstance();
559 if (!groupsManagerComponent)
560 return false;
561
562 groupsManagerComponent.GetOnPlayableGroupRemoved().Insert(OnGroupRemoved);
563
564 SCR_AIGroup group = groupsManagerComponent.FindGroup(groupID);
565 if (!group)
566 return false;
567
570 }
571 // TODO: Fix player/group handling when entity changes or player is removed from group
572 /*else
573 {
574 IEntity ent = executor.GetEntity();
575
576 SCR_FactionAffiliationComponent factionAffiliation = SCR_FactionAffiliationComponent.Cast(ent.FindComponent(FactionAffiliationComponent));
577 if (!factionAffiliation)
578 return false;
579
580 factionAffiliation.GetOnFactionChanged().Insert(OnFactionChanged);
581 }*/
582 }
583
584 if (s_OnTaskAssigneeAdded)
585 s_OnTaskAssigneeAdded.Invoke(this, executor, requesterID);
586
587 SCR_TaskExecutorPlayer executorPlayer = SCR_TaskExecutorPlayer.Cast(executor);
588 if (executorPlayer)
589 {
590 Rpc(Rpc_AddTaskAssigneePlayer, executorPlayer, requesterID);
591 return true;
592 }
593
594 SCR_TaskExecutorEntity executorEntity = SCR_TaskExecutorEntity.Cast(executor);
595 if (executorEntity)
596 {
597 Rpc(Rpc_AddTaskAssigneeEntity, executorEntity, requesterID);
598 return true;
599 }
600
601 SCR_TaskExecutorGroup executorGroup = SCR_TaskExecutorGroup.Cast(executor);
602 if (executorGroup)
603 {
604 Rpc(Rpc_AddTaskAssigneeGroup, executorGroup, requesterID);
605 return true;
606 }
607
608 return true;
609 }
610
611 //------------------------------------------------------------------------------------------------
612 protected void AddTaskAssignee_Proxy(SCR_TaskExecutor executor, int requesterID)
613 {
614 if (!m_TaskData || !executor)
615 return;
616
617 if (!m_TaskData.m_aAssignees)
618 m_TaskData.m_aAssignees = new array<ref SCR_TaskExecutor>();
619
620 if (IsTaskAssignedTo(executor))
621 return;
622
623 m_TaskData.m_aAssignees.Insert(executor);
624
625 if (s_OnTaskAssigneeAdded)
626 s_OnTaskAssigneeAdded.Invoke(this, executor, requesterID);
627 }
628
629 //------------------------------------------------------------------------------------------------
630 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
631 protected void Rpc_AddTaskAssigneePlayer(SCR_TaskExecutorPlayer executor, int requesterID)
632 {
633 AddTaskAssignee_Proxy(executor, requesterID);
634 }
635
636 //------------------------------------------------------------------------------------------------
637 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
638 protected void Rpc_AddTaskAssigneeEntity(SCR_TaskExecutorEntity executor, int requesterID)
639 {
640 AddTaskAssignee_Proxy(executor, requesterID);
641 }
642
643 //------------------------------------------------------------------------------------------------
644 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
645 protected void Rpc_AddTaskAssigneeGroup(SCR_TaskExecutorGroup executor, int requesterID)
646 {
647 AddTaskAssignee_Proxy(executor, requesterID);
648 }
649
650 //------------------------------------------------------------------------------------------------
656 bool RemoveTaskAssignee(SCR_TaskExecutor executor, bool listenToInvokers = true, int requesterID = 0)
657 {
658 if (!m_TaskData || !executor)
659 return false;
660
661 if (!m_TaskData.m_aAssignees)
662 return false;
663
664 SCR_TaskExecutor assignee;
665 if (!IsTaskAssignedTo(executor, assignee))
666 return false;
667
668 m_TaskData.m_aAssignees.RemoveItem(assignee);
669
670 if (listenToInvokers)
671 {
672 SCR_TaskExecutorPlayer executorPlayer = SCR_TaskExecutorPlayer.Cast(executor);
673 if (executorPlayer)
674 {
675 int playerID = executorPlayer.GetPlayerID();
676
677 PlayerManager playerManager = GetGame().GetPlayerManager();
678 if (!playerManager)
679 return false;
680
681 SCR_PlayerController playerController = SCR_PlayerController.Cast(playerManager.GetPlayerController(playerID));
682 if (!playerController)
683 return false;
684
685 SCR_PlayerControllerGroupComponent groupComponent = SCR_PlayerControllerGroupComponent.Cast(playerController.FindComponent(SCR_PlayerControllerGroupComponent));
686 if (groupComponent)
687 groupComponent.GetOnGroupChanged().Remove(OnGroupChanged);
688
689 SCR_FactionManager factionManager = SCR_FactionManager.Cast(GetGame().GetFactionManager());
690 if (!factionManager)
691 return false;
692
693 factionManager.GetOnPlayerFactionChanged_S().Remove(OnPlayerFactionChanged);
694 }
695
696 SCR_TaskExecutorGroup executorGroup = SCR_TaskExecutorGroup.Cast(executor);
697 if (executorGroup)
698 {
699 int groupID = executorGroup.GetGroupID();
700
701 SCR_GroupsManagerComponent groupsManagerComponent = SCR_GroupsManagerComponent.GetInstance();
702 if (!groupsManagerComponent)
703 return false;
704
705 groupsManagerComponent.GetOnPlayableGroupRemoved().Remove(OnGroupRemoved);
706
707 SCR_AIGroup group = groupsManagerComponent.FindGroup(groupID);
708 if (!group)
709 return false;
710
713 }
714 // TODO: Fix player/group handling when entity changes or player is removed from group
715 /*else
716 {
717 IEntity ent = executor.GetEntity();
718
719 SCR_FactionAffiliationComponent factionAffiliation = SCR_FactionAffiliationComponent.Cast(ent.FindComponent(FactionAffiliationComponent));
720 if (!factionAffiliation)
721 return false;
722
723 factionAffiliation.GetOnFactionChanged().Remove(OnFactionChanged);
724 }*/
725 }
726
727 if (s_OnTaskAssigneeRemoved)
728 s_OnTaskAssigneeRemoved.Invoke(this, assignee, requesterID);
729
730 SCR_TaskExecutorPlayer executorPlayer = SCR_TaskExecutorPlayer.Cast(executor);
731 if (executorPlayer)
732 {
733 Rpc(Rpc_RemoveTaskAssigneePlayer, executorPlayer, requesterID);
734 return true;
735 }
736
737 SCR_TaskExecutorEntity executorEntity = SCR_TaskExecutorEntity.Cast(executor);
738 if (executorEntity)
739 {
740 Rpc(Rpc_RemoveTaskAssigneeEntity, executorEntity, requesterID);
741 return true;
742 }
743
744 SCR_TaskExecutorGroup executorGroup = SCR_TaskExecutorGroup.Cast(executor);
745 if (executorGroup)
746 {
747 Rpc(Rpc_RemoveTaskAssigneeGroup, executorGroup, requesterID);
748 return true;
749 }
750
751 return true;
752 }
753
754 //------------------------------------------------------------------------------------------------
755 protected void RemoveTaskAssignee_Proxy(SCR_TaskExecutor executor, int requesterID)
756 {
757 if (!m_TaskData || !executor)
758 return;
759
760 if (!m_TaskData.m_aAssignees)
761 return;
762
763 SCR_TaskExecutor assignee;
764 if (!IsTaskAssignedTo(executor, assignee))
765 return;
766
767 m_TaskData.m_aAssignees.RemoveItem(assignee);
768
769 if (s_OnTaskAssigneeRemoved)
770 s_OnTaskAssigneeRemoved.Invoke(this, assignee, requesterID);
771 }
772
773 //------------------------------------------------------------------------------------------------
774 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
775 protected void Rpc_RemoveTaskAssigneePlayer(SCR_TaskExecutorPlayer executor, int requesterID)
776 {
777 RemoveTaskAssignee_Proxy(executor, requesterID);
778 }
779
780 //------------------------------------------------------------------------------------------------
781 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
782 protected void Rpc_RemoveTaskAssigneeEntity(SCR_TaskExecutorEntity executor, int requesterID)
783 {
784 RemoveTaskAssignee_Proxy(executor, requesterID);
785 }
786
787 //------------------------------------------------------------------------------------------------
788 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
789 protected void Rpc_RemoveTaskAssigneeGroup(SCR_TaskExecutorGroup executor, int requesterID)
790 {
791 RemoveTaskAssignee_Proxy(executor, requesterID);
792 }
793
794 //------------------------------------------------------------------------------------------------
798 {
799 if (m_TaskData)
800 return m_TaskData.m_eState;
801
802 return SCR_ETaskState.CREATED;
803 }
804
805 //------------------------------------------------------------------------------------------------
809 {
810 if (!m_TaskData)
811 return;
812
813 Rpc_SetTaskState(state);
814 Rpc(Rpc_SetTaskState, state);
815
816 if (GetTaskAssigneeCount() > 0 && (state == SCR_ETaskState.COMPLETED || state == SCR_ETaskState.FAILED || state == SCR_ETaskState.CANCELLED))
817 {
818 for (int i = m_TaskData.m_aAssignees.Count() - 1; i >= 0; --i)
819 {
820 RemoveTaskAssignee(m_TaskData.m_aAssignees[i]);
821 }
822 }
823 }
824
825 //------------------------------------------------------------------------------------------------
826 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
827 protected void Rpc_SetTaskState(SCR_ETaskState state)
828 {
829 if (!m_TaskData)
830 return;
831
832 m_TaskData.m_eState = state;
833
834 if (s_OnTaskStateChanged)
835 s_OnTaskStateChanged.Invoke(this, state);
836 }
837
838 //------------------------------------------------------------------------------------------------
841 SCR_ETaskOwnership GetTaskOwnership()
842 {
843 if (m_TaskData)
844 return m_TaskData.m_eOwnership;
845
846 return SCR_ETaskOwnership.NONE;
847 }
848
849 //------------------------------------------------------------------------------------------------
852 void SetTaskOwnership(SCR_ETaskOwnership ownership)
853 {
854 Rpc_SetTaskOwnership(ownership);
855 Rpc(Rpc_SetTaskOwnership, ownership);
856 }
857
858 //------------------------------------------------------------------------------------------------
859 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
860 protected void Rpc_SetTaskOwnership(SCR_ETaskOwnership ownership)
861 {
862 if (!m_TaskData)
863 return;
864
865 m_TaskData.m_eOwnership = ownership;
866
867 if (s_OnTaskOwnershipChanged)
868 s_OnTaskOwnershipChanged.Invoke(this, ownership);
869 }
870
871 //------------------------------------------------------------------------------------------------
875 {
876 if (m_TaskData)
877 return m_TaskData.m_eVisibility;
878
879 return SCR_ETaskVisibility.NONE;
880 }
881
882 //------------------------------------------------------------------------------------------------
886 {
887 Rpc_SetTaskVisibility(visibility);
888 Rpc(Rpc_SetTaskVisibility, visibility);
889 }
890
891 //------------------------------------------------------------------------------------------------
892 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
894 {
895 if (!m_TaskData)
896 return;
897
898 m_TaskData.m_eVisibility = visibility;
899
900 if (s_OnTaskVisibilityChanged)
901 s_OnTaskVisibilityChanged.Invoke(this, visibility);
902 }
903
904 //------------------------------------------------------------------------------------------------
907 SCR_ETaskUIVisibility GetTaskUIVisibility()
908 {
909 if (m_TaskData)
910 return m_TaskData.m_eUIVisibility;
911
912 return SCR_ETaskUIVisibility.NONE;
913 }
914
915 //------------------------------------------------------------------------------------------------
918 void SetTaskUIVisibility(SCR_ETaskUIVisibility visibility)
919 {
920 Rpc_SetTaskUIVisibility(visibility);
921 Rpc(Rpc_SetTaskUIVisibility, visibility);
922 }
923
924 //------------------------------------------------------------------------------------------------
925 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
926 protected void Rpc_SetTaskUIVisibility(SCR_ETaskUIVisibility visibility)
927 {
928 if (!m_TaskData)
929 return;
930
931 m_TaskData.m_eUIVisibility = visibility;
932
933 if (s_OnTaskUIVisibilityChanged)
934 s_OnTaskUIVisibilityChanged.Invoke(this, visibility);
935 }
936
937 //------------------------------------------------------------------------------------------------
941 {
942 if (!m_TaskData)
943 return 0;
944
945 return m_TaskData.m_aOwnerFactionKeys.Count();
946 }
947
948 //------------------------------------------------------------------------------------------------
951 array<string> GetOwnerFactionKeys()
952 {
953 if (m_TaskData)
954 return m_TaskData.m_aOwnerFactionKeys;
955
956 return null;
957 }
958
959 //------------------------------------------------------------------------------------------------
963 {
964 Rpc_AddOwnerFactionKey(factionKey);
965 Rpc(Rpc_AddOwnerFactionKey, factionKey);
966 }
967
968 //------------------------------------------------------------------------------------------------
969 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
970 protected void Rpc_AddOwnerFactionKey(FactionKey factionKey)
971 {
972 if (!m_TaskData || factionKey.IsEmpty())
973 return;
974
975 if (!m_TaskData.m_aOwnerFactionKeys)
976 m_TaskData.m_aOwnerFactionKeys = new array<string>();
977
978 if (m_TaskData.m_aOwnerFactionKeys.Contains(factionKey))
979 return;
980
981 m_TaskData.m_aOwnerFactionKeys.Insert(factionKey);
982
983 if (s_OnOwnerFactionAdded)
984 s_OnOwnerFactionAdded.Invoke(this, factionKey);
985 }
986
987 //------------------------------------------------------------------------------------------------
991 {
992 Rpc_RemoveOwnerFactionKey(factionKey);
993 Rpc(Rpc_RemoveOwnerFactionKey, factionKey);
994 }
995
996 //------------------------------------------------------------------------------------------------
997 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
998 protected void Rpc_RemoveOwnerFactionKey(FactionKey factionKey)
999 {
1000 if (!m_TaskData || factionKey.IsEmpty())
1001 return;
1002
1003 if (!m_TaskData.m_aOwnerFactionKeys || !m_TaskData.m_aOwnerFactionKeys.Contains(factionKey))
1004 return;
1005
1006 m_TaskData.m_aOwnerFactionKeys.RemoveItem(factionKey);
1007
1008 if (s_OnOwnerFactionRemoved)
1009 s_OnOwnerFactionRemoved.Invoke(this, factionKey);
1010 }
1011
1012 //------------------------------------------------------------------------------------------------
1016 {
1017 if (!m_TaskData)
1018 return 0;
1019
1020 return m_TaskData.m_aOwnerGroupIDs.Count();
1021 }
1022
1023 //------------------------------------------------------------------------------------------------
1026 array<int> GetOwnerGroupIDs()
1027 {
1028 if (m_TaskData)
1029 return m_TaskData.m_aOwnerGroupIDs;
1030
1031 return null;
1032 }
1033
1034 //------------------------------------------------------------------------------------------------
1037 void AddOwnerGroupID(int groupID)
1038 {
1039 Rpc_AddOwnerGroupID(groupID);
1040 Rpc(Rpc_AddOwnerGroupID, groupID);
1041 }
1042
1043 //------------------------------------------------------------------------------------------------
1044 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
1045 protected void Rpc_AddOwnerGroupID(int groupID)
1046 {
1047 if (!m_TaskData || groupID <= -1)
1048 return;
1049
1050 if (!m_TaskData.m_aOwnerGroupIDs)
1051 m_TaskData.m_aOwnerGroupIDs = new array<int>();
1052
1053 if (m_TaskData.m_aOwnerGroupIDs.Contains(groupID))
1054 return;
1055
1056 m_TaskData.m_aOwnerGroupIDs.Insert(groupID);
1057
1058 if (s_OnOwnerGroupAdded)
1059 s_OnOwnerGroupAdded.Invoke(this, groupID);
1060 }
1061
1062 //------------------------------------------------------------------------------------------------
1065 void RemoveOwnerGroupID(int groupID)
1066 {
1067 Rpc_RemoveOwnerGroupID(groupID);
1068 Rpc(Rpc_RemoveOwnerGroupID, groupID);
1069 }
1070
1071 //------------------------------------------------------------------------------------------------
1072 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
1073 protected void Rpc_RemoveOwnerGroupID(int groupID)
1074 {
1075 if (!m_TaskData || groupID <= -1)
1076 return;
1077
1078 if (!m_TaskData.m_aOwnerGroupIDs || !m_TaskData.m_aOwnerGroupIDs.Contains(groupID))
1079 return;
1080
1081 m_TaskData.m_aOwnerGroupIDs.RemoveItem(groupID);
1082
1083 if (s_OnOwnerGroupRemoved)
1084 s_OnOwnerGroupRemoved.Invoke(this, groupID);
1085 }
1086
1087 //------------------------------------------------------------------------------------------------
1091 {
1092 if (!m_TaskData)
1093 return 0;
1094
1095 return m_TaskData.m_aOwnerExecutors.Count();
1096 }
1097
1098 //------------------------------------------------------------------------------------------------
1101 array<ref SCR_TaskExecutor> GetOwnerExecutors()
1102 {
1103 if (!m_TaskData)
1104 return null;
1105
1106 return m_TaskData.m_aOwnerExecutors;
1107 }
1108
1109 //------------------------------------------------------------------------------------------------
1114 {
1115 if (!m_TaskData || !executor)
1116 return false;
1117
1118 if (!m_TaskData.m_aOwnerExecutors)
1119 m_TaskData.m_aOwnerExecutors = new array<ref SCR_TaskExecutor>();
1120
1121 SCR_TaskExecutor match = SCR_TaskExecutor.FindMatchingTaskExecutor(m_TaskData.m_aOwnerExecutors, executor);
1122 if (match)
1123 return false;
1124
1125 m_TaskData.m_aOwnerExecutors.Insert(executor);
1126
1127 if (s_OnOwnerExecutorAdded)
1128 s_OnOwnerExecutorAdded.Invoke(this, executor);
1129
1130 SCR_TaskExecutorPlayer executorPlayer = SCR_TaskExecutorPlayer.Cast(executor);
1131 if (executorPlayer)
1132 {
1133 Rpc(Rpc_AddOwnerExecutorPlayer, executorPlayer);
1134 return true;
1135 }
1136
1137 SCR_TaskExecutorEntity executorEntity = SCR_TaskExecutorEntity.Cast(executor);
1138 if (executorEntity)
1139 {
1140 Rpc(Rpc_AddOwnerExecutorEntity, executorEntity);
1141 return true;
1142 }
1143
1144 SCR_TaskExecutorGroup executorGroup = SCR_TaskExecutorGroup.Cast(executor);
1145 if (executorGroup)
1146 {
1147 Rpc(Rpc_AddOwnerExecutorGroup, executorGroup);
1148 return true;
1149 }
1150
1151 return true;
1152 }
1153
1154 //------------------------------------------------------------------------------------------------
1156 {
1157 if (!m_TaskData || !executor)
1158 return;
1159
1160 if (!m_TaskData.m_aOwnerExecutors)
1161 m_TaskData.m_aOwnerExecutors = new array<ref SCR_TaskExecutor>();
1162
1163 SCR_TaskExecutor match = SCR_TaskExecutor.FindMatchingTaskExecutor(m_TaskData.m_aOwnerExecutors, executor);
1164 if (match)
1165 return;
1166
1167 m_TaskData.m_aOwnerExecutors.Insert(executor);
1168
1169 if (s_OnOwnerExecutorAdded)
1170 s_OnOwnerExecutorAdded.Invoke(this, executor);
1171 }
1172
1173 //------------------------------------------------------------------------------------------------
1174 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
1176 {
1177 AddOwnerExecutor_Proxy(executor);
1178 }
1179
1180 //------------------------------------------------------------------------------------------------
1181 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
1183 {
1184 AddOwnerExecutor_Proxy(executor);
1185 }
1186
1187 //------------------------------------------------------------------------------------------------
1188 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
1190 {
1191 AddOwnerExecutor_Proxy(executor);
1192 }
1193
1194 //------------------------------------------------------------------------------------------------
1199 {
1200 if (!m_TaskData || !executor)
1201 return false;
1202
1203 if (!m_TaskData.m_aOwnerExecutors)
1204 return false;
1205
1206 SCR_TaskExecutor match = SCR_TaskExecutor.FindMatchingTaskExecutor(m_TaskData.m_aOwnerExecutors, executor);
1207 if (!match)
1208 return false;
1209
1210 m_TaskData.m_aOwnerExecutors.RemoveItem(match);
1211
1212 if (s_OnOwnerExecutorRemoved)
1213 s_OnOwnerExecutorRemoved.Invoke(this, match);
1214
1215 SCR_TaskExecutorPlayer executorPlayer = SCR_TaskExecutorPlayer.Cast(executor);
1216 if (executorPlayer)
1217 {
1218 Rpc(Rpc_RemoveOwnerExecutorPlayer, executorPlayer);
1219 return true;
1220 }
1221
1222 SCR_TaskExecutorEntity executorEntity = SCR_TaskExecutorEntity.Cast(executor);
1223 if (executorEntity)
1224 {
1225 Rpc(Rpc_RemoveOwnerExecutorEntity, executorEntity);
1226 return true;
1227 }
1228
1229 SCR_TaskExecutorGroup executorGroup = SCR_TaskExecutorGroup.Cast(executor);
1230 if (executorGroup)
1231 {
1232 Rpc(Rpc_RemoveOwnerExecutorGroup, executorGroup);
1233 return true;
1234 }
1235
1236 return true;
1237 }
1238
1239 //------------------------------------------------------------------------------------------------
1241 {
1242 if (!m_TaskData || !executor)
1243 return;
1244
1245 if (!m_TaskData.m_aOwnerExecutors)
1246 return;
1247
1248 SCR_TaskExecutor match = SCR_TaskExecutor.FindMatchingTaskExecutor(m_TaskData.m_aOwnerExecutors, executor);
1249 if (!match)
1250 return;
1251
1252 m_TaskData.m_aOwnerExecutors.RemoveItem(match);
1253
1254 if (s_OnOwnerExecutorRemoved)
1255 s_OnOwnerExecutorRemoved.Invoke(this, match);
1256 }
1257
1258 //------------------------------------------------------------------------------------------------
1259 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
1261 {
1262 RemoveOwnerExecutor_Proxy(executor);
1263 }
1264
1265 //------------------------------------------------------------------------------------------------
1266 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
1268 {
1269 RemoveOwnerExecutor_Proxy(executor);
1270 }
1271
1272 //------------------------------------------------------------------------------------------------
1273 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
1275 {
1276 RemoveOwnerExecutor_Proxy(executor);
1277 }
1278
1279 //------------------------------------------------------------------------------------------------
1283 {
1284 if (m_TaskData)
1285 {
1286 if (m_TaskData.m_vPosition != GetOrigin())
1287 m_TaskData.m_vPosition = GetOrigin();
1288
1289 return m_TaskData.m_vPosition;
1290 }
1291
1292 return GetOrigin();
1293 }
1294
1295 //------------------------------------------------------------------------------------------------
1303
1304 //------------------------------------------------------------------------------------------------
1305 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
1307 {
1308 if (m_TaskData)
1309 m_TaskData.m_vPosition = position;
1310
1311 SetOrigin(position);
1312 }
1313
1314 //------------------------------------------------------------------------------------------------
1317 SCR_TaskUIComponent GetUIComponent()
1318 {
1319 return m_UIComponent;
1320 }
1321
1322 //------------------------------------------------------------------------------------------------
1325 static SCR_TaskStateInvoker GetOnTaskStateChanged()
1326 {
1327 if (!s_OnTaskStateChanged)
1328 s_OnTaskStateChanged = new SCR_TaskStateInvoker();
1329
1330 return s_OnTaskStateChanged;
1331 }
1332
1333 //------------------------------------------------------------------------------------------------
1336 static SCR_TaskOwnershipInvoker GetOnTaskOwnershipChanged()
1337 {
1338 if (!s_OnTaskOwnershipChanged)
1339 s_OnTaskOwnershipChanged = new SCR_TaskOwnershipInvoker();
1340
1341 return s_OnTaskOwnershipChanged;
1342 }
1343
1344 //------------------------------------------------------------------------------------------------
1347 static SCR_TaskVisibilityInvoker GetOnTaskVisibilityChanged()
1348 {
1349 if (!s_OnTaskVisibilityChanged)
1350 s_OnTaskVisibilityChanged = new SCR_TaskVisibilityInvoker();
1351
1352 return s_OnTaskVisibilityChanged;
1353 }
1354
1355 //------------------------------------------------------------------------------------------------
1358 static SCR_TaskUIVisibilityInvoker GetOnTaskUIVisibilityChanged()
1359 {
1360 if (!s_OnTaskUIVisibilityChanged)
1361 s_OnTaskUIVisibilityChanged = new SCR_TaskUIVisibilityInvoker();
1362
1363 return s_OnTaskUIVisibilityChanged;
1364 }
1365
1366 //------------------------------------------------------------------------------------------------
1369 static SCR_TaskExecutorRequesterInvoker GetOnTaskAssigneeAdded()
1370 {
1371 if (!s_OnTaskAssigneeAdded)
1372 s_OnTaskAssigneeAdded = new SCR_TaskExecutorRequesterInvoker();
1373
1374 return s_OnTaskAssigneeAdded;
1375 }
1376
1377 //------------------------------------------------------------------------------------------------
1380 static SCR_TaskExecutorRequesterInvoker GetOnTaskAssigneeRemoved()
1381 {
1382 if (!s_OnTaskAssigneeRemoved)
1383 s_OnTaskAssigneeRemoved = new SCR_TaskExecutorRequesterInvoker();
1384
1385 return s_OnTaskAssigneeRemoved;
1386 }
1387
1388 //------------------------------------------------------------------------------------------------
1391 static SCR_TaskFactionInvoker GetOnOwnerFactionAdded()
1392 {
1393 if (!s_OnOwnerFactionAdded)
1394 s_OnOwnerFactionAdded = new SCR_TaskFactionInvoker();
1395
1396 return s_OnOwnerFactionAdded;
1397 }
1398
1399 //------------------------------------------------------------------------------------------------
1402 static SCR_TaskFactionInvoker GetOnOwnerFactionRemoved()
1403 {
1404 if (!s_OnOwnerFactionRemoved)
1405 s_OnOwnerFactionRemoved = new SCR_TaskFactionInvoker();
1406
1407 return s_OnOwnerFactionRemoved;
1408 }
1409
1410 //------------------------------------------------------------------------------------------------
1413 static SCR_TaskGroupInvoker GetOnOwnerGroupAdded()
1414 {
1415 if (!s_OnOwnerGroupAdded)
1416 s_OnOwnerGroupAdded = new SCR_TaskGroupInvoker();
1417
1418 return s_OnOwnerGroupAdded;
1419 }
1420
1421 //------------------------------------------------------------------------------------------------
1424 static SCR_TaskGroupInvoker GetOnOwnerGroupRemoved()
1425 {
1426 if (!s_OnOwnerGroupRemoved)
1427 s_OnOwnerGroupRemoved = new SCR_TaskGroupInvoker();
1428
1429 return s_OnOwnerGroupRemoved;
1430 }
1431
1432 //------------------------------------------------------------------------------------------------
1435 static SCR_TaskExecutorInvoker GetOnOwnerExecutorAdded()
1436 {
1437 if (!s_OnOwnerExecutorAdded)
1438 s_OnOwnerExecutorAdded = new SCR_TaskExecutorInvoker();
1439
1440 return s_OnOwnerExecutorAdded;
1441 }
1442
1443 //------------------------------------------------------------------------------------------------
1446 static SCR_TaskExecutorInvoker GetOnOwnerExecutorRemoved()
1447 {
1448 if (!s_OnOwnerExecutorRemoved)
1449 s_OnOwnerExecutorRemoved = new SCR_TaskExecutorInvoker();
1450
1451 return s_OnOwnerExecutorRemoved;
1452 }
1453
1454 //------------------------------------------------------------------------------------------------
1464
1465#ifdef WORKBENCH
1466 //------------------------------------------------------------------------------------------------
1467 override void _WB_AfterWorldUpdate(float timeSlice)
1468 {
1469 vector textPosition = GetOrigin() + vector.Up * 0.5;
1470 m_DebugText = DebugTextWorldSpace.Create(GetWorld(), "Task [" + m_sTaskID + "]", DebugTextFlags.CENTER, textPosition[0], textPosition[1], textPosition[2], 15.0, Color.CYAN, Color.BLUE);
1471 }
1472#endif
1473
1474 //------------------------------------------------------------------------------------------------
1475 override protected bool RplSave(ScriptBitWriter writer)
1476 {
1477 writer.WriteBool(m_TaskData != null);
1478 if (!m_TaskData)
1479 return true;
1480
1481 writer.WriteString(m_TaskData.m_sID);
1482 WriteUIInfo(writer, m_TaskData.m_UIInfo);
1483 writer.WriteVector(m_TaskData.m_vPosition);
1484 writer.WriteInt(m_TaskData.m_iAuthorId);
1485 writer.WriteString(m_TaskData.m_sAuthorIdentityId);
1486 writer.WriteInt(m_TaskData.m_ePlatformKind);
1487
1488 writer.WriteInt(m_TaskData.m_eState);
1489 writer.WriteInt(m_TaskData.m_eOwnership);
1490 writer.WriteInt(m_TaskData.m_eVisibility);
1491 writer.WriteInt(m_TaskData.m_eUIVisibility);
1492
1493 int assigneeCount = 0;
1494 if (m_TaskData.m_aAssignees)
1495 assigneeCount = m_TaskData.m_aAssignees.Count();
1496
1497 writer.WriteInt(assigneeCount);
1498 if (assigneeCount > 0)
1499 {
1500 foreach (SCR_TaskExecutor assignee : m_TaskData.m_aAssignees)
1501 {
1502 WriteExecutor(writer, assignee);
1503 }
1504 }
1505
1506 int ownerFactionCount = 0;
1507 if (m_TaskData.m_aOwnerFactionKeys)
1508 ownerFactionCount = m_TaskData.m_aOwnerFactionKeys.Count();
1509
1510 writer.WriteInt(ownerFactionCount);
1511 if (ownerFactionCount > 0)
1512 {
1513 foreach (string factionKey : m_TaskData.m_aOwnerFactionKeys)
1514 {
1515 writer.WriteString(factionKey);
1516 }
1517 }
1518
1519 int ownerGroupCount = 0;
1520 if (m_TaskData.m_aOwnerGroupIDs)
1521 ownerGroupCount = m_TaskData.m_aOwnerGroupIDs.Count();
1522
1523 writer.WriteInt(ownerGroupCount);
1524 if (ownerGroupCount > 0)
1525 {
1526 foreach (int groupID : m_TaskData.m_aOwnerGroupIDs)
1527 {
1528 writer.WriteInt(groupID);
1529 }
1530 }
1531
1532 int ownerExecutorCount = 0;
1533 if (m_TaskData.m_aOwnerExecutors)
1534 ownerExecutorCount = m_TaskData.m_aOwnerExecutors.Count();
1535
1536 writer.WriteInt(ownerExecutorCount);
1537 if (ownerExecutorCount > 0)
1538 {
1539 foreach (SCR_TaskExecutor executor : m_TaskData.m_aOwnerExecutors)
1540 {
1541 WriteExecutor(writer, executor);
1542 }
1543 }
1544
1545 return true;
1546 }
1547
1548 //------------------------------------------------------------------------------------------------
1549 protected void WriteUIInfo(ScriptBitWriter writer, SCR_TaskUIInfo info)
1550 {
1551 array<LocalizedString> nameParams;
1552 array<LocalizedString> descParams;
1553 writer.WriteString(info.GetUnformattedName(nameParams));
1554 writer.WriteString(info.GetUnformattedDescription(descParams));
1555 writer.WriteString(info.GetImageSetPath());
1556 writer.WriteString(info.GetIconSetName());
1557
1558 if (!nameParams || nameParams.IsEmpty())
1559 {
1560 writer.WriteInt(0);
1561 }
1562 else
1563 {
1564 writer.WriteInt(nameParams.Count());
1565 foreach (string param : nameParams)
1566 {
1567 writer.WriteString(param);
1568 }
1569 }
1570
1571 if (!descParams || descParams.IsEmpty())
1572 {
1573 writer.WriteInt(0);
1574 }
1575 else
1576 {
1577 writer.WriteInt(descParams.Count());
1578 foreach (string param : descParams)
1579 {
1580 writer.WriteString(param);
1581 }
1582 }
1583 }
1584
1585 //------------------------------------------------------------------------------------------------
1586 protected void WriteExecutor(ScriptBitWriter writer, SCR_TaskExecutor executor)
1587 {
1588 writer.WriteString(executor.Type().ToString());
1589
1590 SCR_TaskExecutorPlayer executorPlayer = SCR_TaskExecutorPlayer.Cast(executor);
1591 if (executorPlayer)
1592 {
1593 writer.WriteInt(executorPlayer.GetPlayerID());
1594 return;
1595 }
1596
1597 SCR_TaskExecutorEntity executorEntity = SCR_TaskExecutorEntity.Cast(executor);
1598 if (executorEntity)
1599 {
1600 IEntity entity = executorEntity.GetEntity();
1601 if (!entity)
1602 return;
1603
1604 RplComponent rpl = RplComponent.Cast(entity.FindComponent(RplComponent));
1605 if (!rpl)
1606 return;
1607
1608 writer.WriteRplId(rpl.Id());
1609 return;
1610 }
1611
1612 SCR_TaskExecutorGroup executorGroup = SCR_TaskExecutorGroup.Cast(executor);
1613 if (executorGroup)
1614 {
1615 writer.WriteInt(executorGroup.GetGroupID());
1616 return;
1617 }
1618 }
1619
1620 //------------------------------------------------------------------------------------------------
1621 override protected bool RplLoad(ScriptBitReader reader)
1622 {
1623 bool hasTaskData;
1624 reader.ReadBool(hasTaskData);
1625 if (!hasTaskData)
1626 {
1627 m_TaskData = null;
1628 return true;
1629 }
1630
1631 if (!m_TaskData)
1632 m_TaskData = new SCR_TaskData();
1633
1634 reader.ReadString(m_TaskData.m_sID);
1635 ReadUIInfo(reader, m_TaskData.m_UIInfo);
1636 reader.ReadVector(m_TaskData.m_vPosition);
1637 reader.ReadInt(m_TaskData.m_iAuthorId);
1638 reader.ReadString(m_TaskData.m_sAuthorIdentityId);
1639 reader.ReadInt(m_TaskData.m_ePlatformKind);
1640
1641 reader.ReadInt(m_TaskData.m_eState);
1642 reader.ReadInt(m_TaskData.m_eOwnership);
1643 reader.ReadInt(m_TaskData.m_eVisibility);
1644 reader.ReadInt(m_TaskData.m_eUIVisibility);
1645
1646 int assigneeCount;
1647 reader.ReadInt(assigneeCount);
1648 if (assigneeCount > 0)
1649 {
1650 m_TaskData.m_aAssignees = {};
1651
1652 for (int i = 0; i < assigneeCount; i++)
1653 {
1654 SCR_TaskExecutor assignee;
1655 ReadExecutor(reader, assignee);
1656 AddTaskAssignee_Proxy(assignee, 0);
1657 }
1658 }
1659
1660 int ownerFactionCount;
1661 reader.ReadInt(ownerFactionCount);
1662 if (ownerFactionCount > 0)
1663 {
1664 m_TaskData.m_aOwnerFactionKeys = {};
1665
1666 for (int i = 0; i < ownerFactionCount; i++)
1667 {
1668 string factionKey;
1669 reader.ReadString(factionKey);
1670 m_TaskData.m_aOwnerFactionKeys.Insert(factionKey);
1671 }
1672 }
1673
1674 int ownerGroupCount;
1675 reader.ReadInt(ownerGroupCount);
1676 if (ownerGroupCount > 0)
1677 {
1678 m_TaskData.m_aOwnerGroupIDs = {};
1679
1680 for (int i = 0; i < ownerGroupCount; i++)
1681 {
1682 int groupID;
1683 reader.ReadInt(groupID);
1684 m_TaskData.m_aOwnerGroupIDs.Insert(groupID);
1685 }
1686 }
1687
1688 int ownerExecutorCount;
1689 reader.ReadInt(ownerExecutorCount);
1690 if (ownerExecutorCount > 0)
1691 {
1692 m_TaskData.m_aOwnerExecutors = {};
1693
1694 for (int i = 0; i < ownerExecutorCount; i++)
1695 {
1696 SCR_TaskExecutor executor;
1697 ReadExecutor(reader, executor);
1698 m_TaskData.m_aOwnerExecutors.Insert(executor);
1699 }
1700 }
1701
1703 m_OnDisplayDataChanged.Invoke();
1704
1705 return true;
1706 }
1707
1708 //------------------------------------------------------------------------------------------------
1709 protected void ReadUIInfo(ScriptBitReader reader, out SCR_TaskUIInfo info)
1710 {
1711 string name, desc, iconPath, iconSetName;
1712 reader.ReadString(name);
1713 reader.ReadString(desc);
1714 reader.ReadString(iconPath);
1715 reader.ReadString(iconSetName);
1716
1717 array<LocalizedString> nameParams;
1718 array<LocalizedString> descParams;
1719
1720 int nameParamCount;
1721 reader.ReadInt(nameParamCount);
1722 if (nameParamCount > 0)
1723 {
1724 nameParams = {};
1725 for (int i = 0; i < nameParamCount; i++)
1726 {
1727 string param;
1728 reader.ReadString(param);
1729 nameParams.Insert(param);
1730 }
1731 }
1732
1733 int descParamCount;
1734 reader.ReadInt(descParamCount);
1735 if (descParamCount > 0)
1736 {
1737 descParams = {};
1738 for (int i = 0; i < descParamCount; i++)
1739 {
1740 string param;
1741 reader.ReadString(param);
1742 descParams.Insert(param);
1743 }
1744 }
1745
1746 info = SCR_TaskUIInfo.CreateInfo(name, nameParams, desc, descParams, iconPath, iconSetName);
1747 }
1748
1749 //------------------------------------------------------------------------------------------------
1750 protected void ReadExecutor(ScriptBitReader reader, out SCR_TaskExecutor executor)
1751 {
1752 string type;
1753 reader.ReadString(type);
1754
1755 if (type.ToType() == SCR_TaskExecutorPlayer)
1756 {
1757 int playerID;
1758 reader.ReadInt(playerID);
1759
1760 executor = SCR_TaskExecutor.FromPlayerID(playerID);
1761 return;
1762 }
1763
1764 if (type.ToType() == SCR_TaskExecutorEntity)
1765 {
1766 RplId entityRplID;
1767 reader.ReadRplId(entityRplID);
1768
1769 if (!entityRplID.IsValid())
1770 return;
1771
1772 RplComponent rpl = RplComponent.Cast(Replication.FindItem(entityRplID));
1773 if (!rpl)
1774 return;
1775
1776 executor = SCR_TaskExecutor.FromEntity(rpl.GetEntity());
1777 return;
1778 }
1779
1780 if (type.ToType() == SCR_TaskExecutorGroup)
1781 {
1782 int groupID;
1783 reader.ReadInt(groupID);
1784
1785 executor = SCR_TaskExecutor.FromGroup(groupID);
1786 return;
1787 }
1788 }
1789
1790 //------------------------------------------------------------------------------------------------
1793 {
1794 array<ref SCR_TaskExecutor> assignees = GetTaskAssignees();
1795 foreach (SCR_TaskExecutor assignee : assignees)
1796 {
1797 if (!m_TaskSystem.CanTaskBeAssignedTo(this, assignee))
1798 RemoveTaskAssignee(assignee);
1799 }
1800 }
1801
1802 //------------------------------------------------------------------------------------------------
1804 protected void OnFactionChanged(FactionAffiliationComponent owner, Faction previousFaction, Faction newFaction)
1805 {
1807 }
1808
1809 //------------------------------------------------------------------------------------------------
1810 protected void OnPlayerFactionChanged(int playerId, SCR_PlayerFactionAffiliationComponent playerFactionAffiliationComponent, Faction faction)
1811 {
1813 }
1814
1815 //------------------------------------------------------------------------------------------------
1817 protected void OnGroupChanged(int groupID)
1818 {
1820 }
1821
1822 //------------------------------------------------------------------------------------------------
1824 protected void OnGroupRemoved(SCR_AIGroup group)
1825 {
1826 int groupID = group.GetGroupID();
1827 SCR_TaskExecutor executor = SCR_TaskExecutor.FromGroup(groupID);
1828
1829 if (IsTaskAssignedTo(executor))
1830 RemoveTaskAssignee(executor);
1831 }
1832
1833 //------------------------------------------------------------------------------------------------
1835 protected void OnPlayerAddedToGroup(SCR_AIGroup group, int playerID)
1836 {
1838 m_OnDisplayDataChanged.Invoke();
1839 }
1840
1841 //------------------------------------------------------------------------------------------------
1843 protected void OnPlayerRemovedFromGroup(SCR_AIGroup group, int playerID)
1844 {
1845 int groupID = group.GetGroupID();
1846 SCR_TaskExecutor executor = SCR_TaskExecutor.FromGroup(groupID);
1847
1848 if (IsTaskAssignedTo(executor) && group.GetTotalPlayerCount() <= 0)
1849 RemoveTaskAssignee(executor);
1850
1852 m_OnDisplayDataChanged.Invoke();
1853 }
1854
1855 //------------------------------------------------------------------------------------------------
1856 protected void InitializeData()
1857 {
1858 if (!m_TaskData)
1859 m_TaskData = new SCR_TaskData();
1860
1861 m_TaskData.m_sID = m_sTaskID;
1862
1863 if (m_TaskUIInfo)
1864 m_TaskData.m_UIInfo = m_TaskUIInfo;
1865 else
1866 m_TaskData.m_UIInfo = new SCR_TaskUIInfo();
1867
1868 m_TaskData.m_vPosition = GetOrigin();
1869
1870 m_TaskData.m_aAssignees = {};
1871
1872 m_TaskData.m_aOwnerFactionKeys = {};
1873 if (m_aOwnerFactionKeys && !m_aOwnerFactionKeys.IsEmpty())
1874 m_TaskData.m_aOwnerFactionKeys.Copy(m_aOwnerFactionKeys);
1875
1876 m_TaskData.m_aOwnerGroupIDs = {};
1877 if (m_aOwnerGroupIDs && !m_aOwnerGroupIDs.IsEmpty())
1878 m_TaskData.m_aOwnerGroupIDs.Copy(m_aOwnerGroupIDs);
1879
1880 m_TaskData.m_aOwnerExecutors = {};
1881 if (m_aOwnerExecutors && !m_aOwnerExecutors.IsEmpty())
1882 SCR_ArrayHelperRefT<ref SCR_TaskExecutor>.CopyReferencesFromTo(m_aOwnerExecutors, m_TaskData.m_aOwnerExecutors);
1883
1884 m_TaskData.m_aAssignees = {};
1885 if (m_aAssignees && !m_aAssignees.IsEmpty())
1886 SCR_ArrayHelperRefT<ref SCR_TaskExecutor>.CopyReferencesFromTo(m_aAssignees, m_TaskData.m_aAssignees);
1887
1888 m_TaskData.m_eState = m_eTaskState;
1889 m_TaskData.m_eOwnership = m_eTaskOwnership;
1890 m_TaskData.m_eVisibility = m_eTaskVisibility;
1891 m_TaskData.m_eUIVisibility = m_eTaskUIVisibility;
1892 }
1893
1894 //------------------------------------------------------------------------------------------------
1895 protected void ConnectToTaskSystem()
1896 {
1897 m_TaskSystem = SCR_TaskSystem.GetInstance();
1898 if (!m_TaskSystem)
1899 return;
1900
1901 m_TaskSystem.RegisterTask(this);
1902 }
1903
1904 //------------------------------------------------------------------------------------------------
1906 {
1907 m_TaskSystem = SCR_TaskSystem.GetInstance();
1908 if (!m_TaskSystem)
1909 return;
1910
1911 m_TaskSystem.UnregisterTask(this);
1912 }
1913
1914 //------------------------------------------------------------------------------------------------
1915 override void EOnInit(IEntity owner)
1916 {
1919
1920 m_UIComponent = SCR_TaskUIComponent.Cast(FindComponent(SCR_TaskUIComponent));
1921
1924 {
1925 m_EditableEntityComponent.GetInfo(this).SetName(m_TaskData.m_UIInfo.GetName());
1926 m_EditableEntityComponent.GetInfo(this).SetDescription(m_TaskData.m_UIInfo.GetName());
1927 }
1928
1929 SCR_GroupsManagerComponent groupsManager = SCR_GroupsManagerComponent.GetInstance();
1930 if (groupsManager)
1931 groupsManager.GetOnPlayableGroupRemoved().Insert(OnGroupRemoved);
1932 }
1933
1934 //------------------------------------------------------------------------------------------------
1935 // constructor
1939 {
1940 SetEventMask(EntityEvent.INIT);
1941 SetFlags(EntityFlags.ACTIVE, true);
1942 }
1943
1944 //------------------------------------------------------------------------------------------------
1945 // destructor
1947 {
1948 SCR_GroupsManagerComponent groupsManager = SCR_GroupsManagerComponent.GetInstance();
1949 if (groupsManager)
1950 groupsManager.GetOnPlayableGroupRemoved().Remove(OnGroupRemoved);
1951
1953 }
1954}
ArmaReforgerScripted GetGame()
Definition game.c:1398
PlatformKind
Definition PlatformKind.c:8
@ CANCELLED
Definition SCR_AIAction.c:5
void OnPlayerAddedToGroup(SCR_AIGroup aiGroup, int playerID)
void OnPlayerRemovedFromGroup(SCR_AIGroup aiGroup, int playerID)
override bool RplLoad(ScriptBitReader reader)
SCR_AIDebugInfoComponent m_UIComponent
@ COMPLETED
@ FAILED
Job failed during its processing and can be retried.
vector GetOrigin()
override void SetTaskState(SCR_ETaskState state)
void InitializeData()
void ReadUIInfo(ScriptBitReader reader, out SCR_TaskUIInfo info)
override bool RplSave(ScriptBitWriter writer)
EDamageType type
vector position
void SCR_FactionManager(IEntitySource src, IEntity parent)
void SCR_GroupsManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
void OnPlayerFactionChanged(SCR_PlayerFactionAffiliationComponent component, Faction previous, Faction current)
void OnGroupChanged(int groupID)
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
string GetTaskDescription()
SCR_ETaskState GetTaskState()
ScriptInvokerBase< ScriptInvokerVoidMethod > ScriptInvokerVoid
bool RemoveTaskAssignee(SCR_TaskExecutor executor, bool listenToInvokers=true, int requesterID=0)
Definition SCR_Task.c:656
EXECUTOR
Definition SCR_Task.c:35
SCR_EditableEntityComponent m_EditableEntityComponent
Definition SCR_Task.c:114
ScriptInvokerBase< TaskFactionInvokerDelegate > SCR_TaskFactionInvoker
Definition SCR_Task.c:68
int GetTaskAssigneeCount()
Definition SCR_Task.c:390
func TaskExecutorRequesterInvokerDelegate
Definition SCR_Task.c:63
void ~SCR_Task()
Definition SCR_Task.c:1946
enum SCR_ETaskState EnumLinear()] enum SCR_ETaskOwnership
Definition SCR_Task.c:12
ScriptInvokerBase< TaskExecutorRequesterInvokerDelegate > SCR_TaskExecutorRequesterInvoker
Definition SCR_Task.c:64
void Rpc_SetTaskIconPath(ResourceName iconPath)
Definition SCR_Task.c:343
string GetTaskID()
Definition SCR_Task.c:164
void SetTaskDescription(LocalizedString taskDesc, array< LocalizedString > taskDescParams=null)
Definition SCR_Task.c:299
void Rpc_RemoveTaskAssigneeEntity(SCR_TaskExecutorEntity executor, int requesterID)
Definition SCR_Task.c:782
ScriptInvokerBase< TaskStateInvokerDelegate > SCR_TaskStateInvoker
Definition SCR_Task.c:44
string GetTaskIconSetName()
Definition SCR_Task.c:357
UUID GetAuthorIdentityID()
Definition SCR_Task.c:237
bool AddTaskAssignee(SCR_TaskExecutor executor, bool listenToInvokers=true, int requesterID=0)
Definition SCR_Task.c:514
void Rpc_AddOwnerFactionKey(FactionKey factionKey)
Definition SCR_Task.c:970
ScriptInvokerBase< TaskVisibilityInvokerDelegate > SCR_TaskVisibilityInvoker
Definition SCR_Task.c:52
ScriptInvokerBase< TaskExecutorInvokerDelegate > SCR_TaskExecutorInvoker
Definition SCR_Task.c:60
void Rpc_RemoveOwnerExecutorGroup(SCR_TaskExecutorGroup executor)
Definition SCR_Task.c:1274
void Rpc_AddOwnerExecutorPlayer(SCR_TaskExecutorPlayer executor)
Definition SCR_Task.c:1175
void Rpc_SetTaskPosition(vector position)
Definition SCR_Task.c:1306
SCR_ETaskVisibility GetTaskVisibility()
Definition SCR_Task.c:874
void Rpc_SetTaskDescription(LocalizedString taskDesc, array< LocalizedString > taskDescParams)
Definition SCR_Task.c:307
void SetTaskOwnership(SCR_ETaskOwnership ownership)
Definition SCR_Task.c:852
ScriptInvokerVoid GetOnDisplayDataChanged()
Definition SCR_Task.c:1457
void SetAuthorCredentials(int authorId, UUID authorIdentityId, PlatformKind platformKind)
Definition SCR_Task.c:205
array< int > GetTaskAssigneePlayerIDs()
Definition SCR_Task.c:458
void Rpc_RemoveOwnerExecutorPlayer(SCR_TaskExecutorPlayer executor)
Definition SCR_Task.c:1260
void Rpc_SetTaskID(string taskID)
Definition SCR_Task.c:183
void ConnectToTaskSystem()
Definition SCR_Task.c:1895
void WriteUIInfo(ScriptBitWriter writer, SCR_TaskUIInfo info)
Definition SCR_Task.c:1549
func TaskVisibilityInvokerDelegate
Definition SCR_Task.c:51
func TaskExecutorInvokerDelegate
Definition SCR_Task.c:59
void SetTaskName(LocalizedString taskName, array< LocalizedString > taskNameParams=null)
Definition SCR_Task.c:261
PlatformKind GetAuthorPlatformKind()
Definition SCR_Task.c:226
void RemoveOwnerGroupID(int groupID)
Definition SCR_Task.c:1065
void RemoveUnauthorizedAssignees()
Go through assignee list and remove assignees who are not allowed to be assigned to this task.
Definition SCR_Task.c:1792
void Rpc_RemoveOwnerExecutorEntity(SCR_TaskExecutorEntity executor)
Definition SCR_Task.c:1267
void Rpc_SetTaskOwnership(SCR_ETaskOwnership ownership)
Definition SCR_Task.c:860
void Rpc_AddTaskAssigneeGroup(SCR_TaskExecutorGroup executor, int requesterID)
Definition SCR_Task.c:645
void SetTaskIconSetName(string iconSetName)
Definition SCR_Task.c:368
ASSIGNEES
Definition SCR_Task.c:36
func TaskStateInvokerDelegate
Definition SCR_Task.c:43
vector GetTaskPosition()
Definition SCR_Task.c:1282
void Rpc_SetAuthorCredentials(int authorId, UUID authorIdentityId, PlatformKind platformKind)
Definition SCR_Task.c:213
func TaskUIVisibilityInvokerDelegate
Definition SCR_Task.c:55
ref SCR_TaskUIInfo m_TaskUIInfo
Definition SCR_Task.c:84
void SetTaskUIVisibility(SCR_ETaskUIVisibility visibility)
Definition SCR_Task.c:918
SCR_ETaskVisibility
Definition SCR_Task.c:24
string GetTaskIconPath()
Definition SCR_Task.c:324
void RemoveOwnerFactionKey(FactionKey factionKey)
Definition SCR_Task.c:990
void Rpc_AddOwnerExecutorEntity(SCR_TaskExecutorEntity executor)
Definition SCR_Task.c:1182
void Rpc_AddTaskAssigneePlayer(SCR_TaskExecutorPlayer executor, int requesterID)
Definition SCR_Task.c:631
ref array< ref SCR_TaskExecutor > m_aAssignees
Definition SCR_Task.c:108
void WriteExecutor(ScriptBitWriter writer, SCR_TaskExecutor executor)
Definition SCR_Task.c:1586
SCR_ETaskOwnership GetTaskOwnership()
Definition SCR_Task.c:841
SCR_TaskUIComponent GetUIComponent()
Definition SCR_Task.c:1317
void Rpc_RemoveOwnerFactionKey(FactionKey factionKey)
Definition SCR_Task.c:998
ScriptInvokerBase< TaskGroupInvokerDelegate > SCR_TaskGroupInvoker
Definition SCR_Task.c:72
void SCR_Task(IEntitySource src, IEntity parent)
Definition SCR_Task.c:1938
ScriptInvokerBase< TaskUIVisibilityInvokerDelegate > SCR_TaskUIVisibilityInvoker
Definition SCR_Task.c:56
ref array< string > m_aOwnerFactionKeys
Definition SCR_Task.c:99
void AddTaskAssignee_Proxy(SCR_TaskExecutor executor, int requesterID)
Definition SCR_Task.c:612
ref array< int > m_aOwnerGroupIDs
Definition SCR_Task.c:102
SCR_TaskUIInfo GetTaskUIInfo()
Definition SCR_Task.c:150
void RemoveTaskAssignee_Proxy(SCR_TaskExecutor executor, int requesterID)
Definition SCR_Task.c:755
void AddOwnerGroupID(int groupID)
Definition SCR_Task.c:1037
array< int > GetOwnerGroupIDs()
Definition SCR_Task.c:1026
ref SCR_TaskData m_TaskData
Definition SCR_Task.c:110
void Rpc_SetTaskUIVisibility(SCR_ETaskUIVisibility visibility)
Definition SCR_Task.c:926
SCR_ETaskOwnership m_eTaskOwnership
Definition SCR_Task.c:90
void Rpc_SetTaskState(SCR_ETaskState state)
Definition SCR_Task.c:827
func TaskFactionInvokerDelegate
Definition SCR_Task.c:67
void SetTaskPosition(vector position)
Definition SCR_Task.c:1298
SCR_ETaskUIVisibility m_eTaskUIVisibility
Definition SCR_Task.c:96
void RemoveOwnerExecutor_Proxy(SCR_TaskExecutor executor)
Definition SCR_Task.c:1240
int GetTaskAssigneePlayerCount(bool recursive=true)
Definition SCR_Task.c:402
array< string > GetOwnerFactionKeys()
Definition SCR_Task.c:951
int GetOwnerFactionCount()
Definition SCR_Task.c:940
int GetOwnerGroupCount()
Definition SCR_Task.c:1015
void DisconnectFromTaskSystem()
Definition SCR_Task.c:1905
void Rpc_RemoveOwnerGroupID(int groupID)
Definition SCR_Task.c:1073
void SetTaskID(string taskID)
Definition SCR_Task.c:175
void Rpc_RemoveTaskAssigneeGroup(SCR_TaskExecutorGroup executor, int requesterID)
Definition SCR_Task.c:789
SCR_TaskData GetTaskData()
Definition SCR_Task.c:142
func TaskOwnershipInvokerDelegate
Definition SCR_Task.c:47
int GetOwnerExecutorCount()
Definition SCR_Task.c:1090
void Rpc_AddOwnerExecutorGroup(SCR_TaskExecutorGroup executor)
Definition SCR_Task.c:1189
int GetAuthorID()
Definition SCR_Task.c:192
void Rpc_SetTaskVisibility(SCR_ETaskVisibility visibility)
Definition SCR_Task.c:893
ref array< ref SCR_TaskExecutor > m_aOwnerExecutors
Definition SCR_Task.c:105
void Rpc_SetTaskIconSetName(string iconSetName)
Definition SCR_Task.c:376
bool RemoveOwnerExecutor(SCR_TaskExecutor executor)
Definition SCR_Task.c:1198
void SetTaskIconPath(ResourceName iconPath)
Definition SCR_Task.c:335
bool AddOwnerExecutor(SCR_TaskExecutor executor)
Definition SCR_Task.c:1113
void ReadExecutor(ScriptBitReader reader, out SCR_TaskExecutor executor)
Definition SCR_Task.c:1750
void SetTaskVisibility(SCR_ETaskVisibility visibility)
Definition SCR_Task.c:885
void Rpc_AddOwnerGroupID(int groupID)
Definition SCR_Task.c:1045
array< ref SCR_TaskExecutor > GetOwnerExecutors()
Definition SCR_Task.c:1101
void AddOwnerExecutor_Proxy(SCR_TaskExecutor executor)
Definition SCR_Task.c:1155
SCR_ETaskUIVisibility GetTaskUIVisibility()
Definition SCR_Task.c:907
SCR_ETaskState
Definition SCR_Task.c:3
bool IsTaskAssignedTo(SCR_TaskExecutor executor, out SCR_TaskExecutor match=null)
Definition SCR_Task.c:493
void OnGroupRemoved(SCR_AIGroup group)
When group is deleted, check if group matches group in task data and reset values.
Definition SCR_Task.c:1824
void Rpc_RemoveTaskAssigneePlayer(SCR_TaskExecutorPlayer executor, int requesterID)
Definition SCR_Task.c:775
ref ScriptInvokerVoid m_OnDisplayDataChanged
Definition SCR_Task.c:133
array< ref SCR_TaskExecutor > GetTaskAssignees()
Definition SCR_Task.c:447
SCR_ETaskVisibility m_eTaskVisibility
Definition SCR_Task.c:93
PROGRESSED
Definition SCR_Task.c:15
func TaskGroupInvokerDelegate
Definition SCR_Task.c:71
void Rpc_AddTaskAssigneeEntity(SCR_TaskExecutorEntity executor, int requesterID)
Definition SCR_Task.c:638
ScriptInvokerBase< TaskOwnershipInvokerDelegate > SCR_TaskOwnershipInvoker
Definition SCR_Task.c:48
void Rpc_SetTaskName(LocalizedString taskName, array< LocalizedString > taskNameParams)
Definition SCR_Task.c:269
SCR_TaskSystem m_TaskSystem
string GetTaskName(SCR_Task task)
SCR_ETaskState m_eTaskState
override void AddOwnerFactionKey(FactionKey factionKey)
proto external Managed FindComponent(typename typeName)
Main replication API.
Definition Replication.c:14
Replication item identifier.
Definition RplId.c:14
int GetPlayerCount(bool checkMasterAndSlaves=false)
static ScriptInvoker GetOnPlayerRemoved()
array< int > GetPlayerIDs()
static ScriptInvoker GetOnPlayerAdded()
int GetGroupID()
int GetTotalPlayerCount()
LocalizedString GetUnformattedDescription(out array< LocalizedString > params=null)
static SCR_TaskUIInfo CreateInfo(LocalizedString name, array< LocalizedString > nameParams, LocalizedString description, array< LocalizedString > descParams, ResourceName icon=ResourceName.Empty, string iconSetName=string.Empty)
LocalizedString GetUnformattedName(out array< LocalizedString > params=null)
Definition UUID.c:28
override void EOnInit(IEntity owner)
DebugTextFlags
@ NONE
When Shape is created and not initialized yet.
Definition ShapeType.c:15
SCR_FieldOfViewSettings Attribute
@ GROUP
AI Group (inherited from AIGroup).
EntityEvent
Various entity events.
Definition EntityEvent.c:14
EntityFlags
Various entity flags.
Definition EntityFlags.c:14
@ ALL
Everything except general switch.
Definition EntityEvent.c:37
void RplRpc(RplChannel channel, RplRcver rcver, RplCondition condition=RplCondition.None, string customConditionName="")
Definition EnNetwork.c:95
RplRcver
Definition RplRcver.c:59
RplChannel
Communication channel. Reliable is guaranteed to be delivered. Unreliable not.
Definition RplChannel.c:14