13enum SCR_ETaskOwnership
34enum SCR_ETaskUIVisibility
81 protected string m_sTaskID;
89 [
Attribute(defvalue: SCR_ETaskOwnership.EVERYONE.ToString(), uiwidget:
UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(SCR_ETaskOwnership))]
95 [
Attribute(defvalue: SCR_ETaskUIVisibility.ALL.ToString(), uiwidget:
UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(SCR_ETaskUIVisibility))]
219 m_TaskData.m_sAuthorIdentityId = authorIdentityId;
274 m_TaskData.m_UIInfo.SetUnformattedName(taskName, taskNameParams);
312 m_TaskData.m_UIInfo.SetUnformattedDescription(taskDesc, taskDescParams);
381 m_TaskData.m_UIInfo.SetIconSetName(iconSetName);
414 if (recursive && !groupsManagerComponent)
433 group = groupsManagerComponent.FindGroup(groupID);
460 array<int> assigneePlayerIDs = {};
462 return assigneePlayerIDs;
472 assigneePlayerIDs.Insert(playerAssignee.
GetPlayerID());
485 return assigneePlayerIDs;
520 m_TaskData.m_aAssignees =
new array<ref SCR_TaskExecutor>();
527 if (listenToInvokers)
539 if (!playerController)
542 SCR_PlayerControllerGroupComponent groupComponent = SCR_PlayerControllerGroupComponent.Cast(playerController.FindComponent(SCR_PlayerControllerGroupComponent));
559 if (!groupsManagerComponent)
562 groupsManagerComponent.GetOnPlayableGroupRemoved().Insert(
OnGroupRemoved);
564 SCR_AIGroup group = groupsManagerComponent.FindGroup(groupID);
584 if (s_OnTaskAssigneeAdded)
585 s_OnTaskAssigneeAdded.Invoke(
this, executor, requesterID);
618 m_TaskData.m_aAssignees =
new array<ref SCR_TaskExecutor>();
625 if (s_OnTaskAssigneeAdded)
626 s_OnTaskAssigneeAdded.Invoke(
this, executor, requesterID);
670 if (listenToInvokers)
682 if (!playerController)
685 SCR_PlayerControllerGroupComponent groupComponent = SCR_PlayerControllerGroupComponent.Cast(playerController.FindComponent(SCR_PlayerControllerGroupComponent));
702 if (!groupsManagerComponent)
705 groupsManagerComponent.GetOnPlayableGroupRemoved().Remove(
OnGroupRemoved);
707 SCR_AIGroup group = groupsManagerComponent.FindGroup(groupID);
727 if (s_OnTaskAssigneeRemoved)
728 s_OnTaskAssigneeRemoved.Invoke(
this, assignee, requesterID);
769 if (s_OnTaskAssigneeRemoved)
770 s_OnTaskAssigneeRemoved.Invoke(
this, assignee, requesterID);
818 for (
int i =
m_TaskData.m_aAssignees.Count() - 1; i >= 0; --i)
834 if (s_OnTaskStateChanged)
835 s_OnTaskStateChanged.Invoke(
this, state);
846 return SCR_ETaskOwnership.NONE;
867 if (s_OnTaskOwnershipChanged)
868 s_OnTaskOwnershipChanged.Invoke(
this, ownership);
900 if (s_OnTaskVisibilityChanged)
901 s_OnTaskVisibilityChanged.Invoke(
this, visibility);
912 return SCR_ETaskUIVisibility.NONE;
933 if (s_OnTaskUIVisibilityChanged)
934 s_OnTaskUIVisibilityChanged.Invoke(
this, visibility);
945 return m_TaskData.m_aOwnerFactionKeys.Count();
976 m_TaskData.m_aOwnerFactionKeys =
new array<string>();
978 if (
m_TaskData.m_aOwnerFactionKeys.Contains(factionKey))
981 m_TaskData.m_aOwnerFactionKeys.Insert(factionKey);
983 if (s_OnOwnerFactionAdded)
984 s_OnOwnerFactionAdded.Invoke(
this, factionKey);
1006 m_TaskData.m_aOwnerFactionKeys.RemoveItem(factionKey);
1008 if (s_OnOwnerFactionRemoved)
1009 s_OnOwnerFactionRemoved.Invoke(
this, factionKey);
1051 m_TaskData.m_aOwnerGroupIDs =
new array<int>();
1053 if (
m_TaskData.m_aOwnerGroupIDs.Contains(groupID))
1058 if (s_OnOwnerGroupAdded)
1059 s_OnOwnerGroupAdded.Invoke(
this, groupID);
1081 m_TaskData.m_aOwnerGroupIDs.RemoveItem(groupID);
1083 if (s_OnOwnerGroupRemoved)
1084 s_OnOwnerGroupRemoved.Invoke(
this, groupID);
1119 m_TaskData.m_aOwnerExecutors =
new array<ref SCR_TaskExecutor>();
1125 m_TaskData.m_aOwnerExecutors.Insert(executor);
1127 if (s_OnOwnerExecutorAdded)
1128 s_OnOwnerExecutorAdded.Invoke(
this, executor);
1161 m_TaskData.m_aOwnerExecutors =
new array<ref SCR_TaskExecutor>();
1167 m_TaskData.m_aOwnerExecutors.Insert(executor);
1169 if (s_OnOwnerExecutorAdded)
1170 s_OnOwnerExecutorAdded.Invoke(
this, executor);
1210 m_TaskData.m_aOwnerExecutors.RemoveItem(match);
1212 if (s_OnOwnerExecutorRemoved)
1213 s_OnOwnerExecutorRemoved.Invoke(
this, match);
1252 m_TaskData.m_aOwnerExecutors.RemoveItem(match);
1254 if (s_OnOwnerExecutorRemoved)
1255 s_OnOwnerExecutorRemoved.Invoke(
this, match);
1327 if (!s_OnTaskStateChanged)
1330 return s_OnTaskStateChanged;
1338 if (!s_OnTaskOwnershipChanged)
1341 return s_OnTaskOwnershipChanged;
1349 if (!s_OnTaskVisibilityChanged)
1352 return s_OnTaskVisibilityChanged;
1360 if (!s_OnTaskUIVisibilityChanged)
1363 return s_OnTaskUIVisibilityChanged;
1371 if (!s_OnTaskAssigneeAdded)
1374 return s_OnTaskAssigneeAdded;
1382 if (!s_OnTaskAssigneeRemoved)
1385 return s_OnTaskAssigneeRemoved;
1393 if (!s_OnOwnerFactionAdded)
1396 return s_OnOwnerFactionAdded;
1404 if (!s_OnOwnerFactionRemoved)
1407 return s_OnOwnerFactionRemoved;
1415 if (!s_OnOwnerGroupAdded)
1418 return s_OnOwnerGroupAdded;
1426 if (!s_OnOwnerGroupRemoved)
1429 return s_OnOwnerGroupRemoved;
1437 if (!s_OnOwnerExecutorAdded)
1440 return s_OnOwnerExecutorAdded;
1448 if (!s_OnOwnerExecutorRemoved)
1451 return s_OnOwnerExecutorRemoved;
1467 override void _WB_AfterWorldUpdate(
float timeSlice)
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);
1475 override protected bool RplSave(ScriptBitWriter writer)
1485 writer.WriteString(
m_TaskData.m_sAuthorIdentityId);
1493 int assigneeCount = 0;
1495 assigneeCount =
m_TaskData.m_aAssignees.Count();
1497 writer.WriteInt(assigneeCount);
1498 if (assigneeCount > 0)
1506 int ownerFactionCount = 0;
1508 ownerFactionCount =
m_TaskData.m_aOwnerFactionKeys.Count();
1510 writer.WriteInt(ownerFactionCount);
1511 if (ownerFactionCount > 0)
1513 foreach (
string factionKey :
m_TaskData.m_aOwnerFactionKeys)
1515 writer.WriteString(factionKey);
1519 int ownerGroupCount = 0;
1521 ownerGroupCount =
m_TaskData.m_aOwnerGroupIDs.Count();
1523 writer.WriteInt(ownerGroupCount);
1524 if (ownerGroupCount > 0)
1526 foreach (
int groupID :
m_TaskData.m_aOwnerGroupIDs)
1528 writer.WriteInt(groupID);
1532 int ownerExecutorCount = 0;
1534 ownerExecutorCount =
m_TaskData.m_aOwnerExecutors.Count();
1536 writer.WriteInt(ownerExecutorCount);
1537 if (ownerExecutorCount > 0)
1551 array<LocalizedString> nameParams;
1552 array<LocalizedString> descParams;
1555 writer.WriteString(info.GetImageSetPath());
1556 writer.WriteString(info.GetIconSetName());
1558 if (!nameParams || nameParams.IsEmpty())
1564 writer.WriteInt(nameParams.Count());
1565 foreach (
string param : nameParams)
1567 writer.WriteString(param);
1571 if (!descParams || descParams.IsEmpty())
1577 writer.WriteInt(descParams.Count());
1578 foreach (
string param : descParams)
1580 writer.WriteString(param);
1588 writer.WriteString(executor.Type().ToString());
1604 RplComponent rpl = RplComponent.Cast(entity.
FindComponent(RplComponent));
1608 writer.WriteRplId(rpl.Id());
1624 reader.ReadBool(hasTaskData);
1638 reader.ReadString(
m_TaskData.m_sAuthorIdentityId);
1647 reader.ReadInt(assigneeCount);
1648 if (assigneeCount > 0)
1652 for (
int i = 0; i < assigneeCount; i++)
1660 int ownerFactionCount;
1661 reader.ReadInt(ownerFactionCount);
1662 if (ownerFactionCount > 0)
1666 for (
int i = 0; i < ownerFactionCount; i++)
1669 reader.ReadString(factionKey);
1670 m_TaskData.m_aOwnerFactionKeys.Insert(factionKey);
1674 int ownerGroupCount;
1675 reader.ReadInt(ownerGroupCount);
1676 if (ownerGroupCount > 0)
1680 for (
int i = 0; i < ownerGroupCount; i++)
1683 reader.ReadInt(groupID);
1688 int ownerExecutorCount;
1689 reader.ReadInt(ownerExecutorCount);
1690 if (ownerExecutorCount > 0)
1694 for (
int i = 0; i < ownerExecutorCount; i++)
1698 m_TaskData.m_aOwnerExecutors.Insert(executor);
1711 string name,
desc, iconPath, iconSetName;
1712 reader.ReadString(name);
1713 reader.ReadString(
desc);
1714 reader.ReadString(iconPath);
1715 reader.ReadString(iconSetName);
1717 array<LocalizedString> nameParams;
1718 array<LocalizedString> descParams;
1721 reader.ReadInt(nameParamCount);
1722 if (nameParamCount > 0)
1725 for (
int i = 0; i < nameParamCount; i++)
1728 reader.ReadString(param);
1729 nameParams.Insert(param);
1734 reader.ReadInt(descParamCount);
1735 if (descParamCount > 0)
1738 for (
int i = 0; i < descParamCount; i++)
1741 reader.ReadString(param);
1742 descParams.Insert(param);
1753 reader.ReadString(
type);
1758 reader.ReadInt(playerID);
1767 reader.ReadRplId(entityRplID);
1769 if (!entityRplID.IsValid())
1772 RplComponent rpl = RplComponent.Cast(
Replication.FindItem(entityRplID));
1783 reader.ReadInt(groupID);
1920 m_UIComponent = SCR_TaskUIComponent.Cast(FindComponent(SCR_TaskUIComponent));
1931 groupsManager.GetOnPlayableGroupRemoved().Insert(
OnGroupRemoved);
1950 groupsManager.GetOnPlayableGroupRemoved().Remove(
OnGroupRemoved);
ArmaReforgerScripted GetGame()
void OnPlayerAddedToGroup(SCR_AIGroup aiGroup, int playerID)
void OnPlayerRemovedFromGroup(SCR_AIGroup aiGroup, int playerID)
override bool RplLoad(ScriptBitReader reader)
SCR_AIDebugInfoComponent m_UIComponent
@ FAILED
Job failed during its processing and can be retried.
override void SetTaskState(SCR_ETaskState state)
void ReadUIInfo(ScriptBitReader reader, out SCR_TaskUIInfo info)
override bool RplSave(ScriptBitWriter writer)
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)
SCR_EditableEntityComponent m_EditableEntityComponent
ScriptInvokerBase< TaskFactionInvokerDelegate > SCR_TaskFactionInvoker
int GetTaskAssigneeCount()
func TaskExecutorRequesterInvokerDelegate
enum SCR_ETaskState EnumLinear()] enum SCR_ETaskOwnership
ScriptInvokerBase< TaskExecutorRequesterInvokerDelegate > SCR_TaskExecutorRequesterInvoker
void Rpc_SetTaskIconPath(ResourceName iconPath)
void SetTaskDescription(LocalizedString taskDesc, array< LocalizedString > taskDescParams=null)
void Rpc_RemoveTaskAssigneeEntity(SCR_TaskExecutorEntity executor, int requesterID)
ScriptInvokerBase< TaskStateInvokerDelegate > SCR_TaskStateInvoker
string GetTaskIconSetName()
UUID GetAuthorIdentityID()
bool AddTaskAssignee(SCR_TaskExecutor executor, bool listenToInvokers=true, int requesterID=0)
void Rpc_AddOwnerFactionKey(FactionKey factionKey)
ScriptInvokerBase< TaskVisibilityInvokerDelegate > SCR_TaskVisibilityInvoker
ScriptInvokerBase< TaskExecutorInvokerDelegate > SCR_TaskExecutorInvoker
void Rpc_RemoveOwnerExecutorGroup(SCR_TaskExecutorGroup executor)
void Rpc_AddOwnerExecutorPlayer(SCR_TaskExecutorPlayer executor)
void Rpc_SetTaskPosition(vector position)
SCR_ETaskVisibility GetTaskVisibility()
void Rpc_SetTaskDescription(LocalizedString taskDesc, array< LocalizedString > taskDescParams)
void SetTaskOwnership(SCR_ETaskOwnership ownership)
ScriptInvokerVoid GetOnDisplayDataChanged()
void SetAuthorCredentials(int authorId, UUID authorIdentityId, PlatformKind platformKind)
array< int > GetTaskAssigneePlayerIDs()
void Rpc_RemoveOwnerExecutorPlayer(SCR_TaskExecutorPlayer executor)
void Rpc_SetTaskID(string taskID)
void ConnectToTaskSystem()
void WriteUIInfo(ScriptBitWriter writer, SCR_TaskUIInfo info)
func TaskVisibilityInvokerDelegate
func TaskExecutorInvokerDelegate
void SetTaskName(LocalizedString taskName, array< LocalizedString > taskNameParams=null)
PlatformKind GetAuthorPlatformKind()
void RemoveOwnerGroupID(int groupID)
void RemoveUnauthorizedAssignees()
Go through assignee list and remove assignees who are not allowed to be assigned to this task.
void Rpc_RemoveOwnerExecutorEntity(SCR_TaskExecutorEntity executor)
void Rpc_SetTaskOwnership(SCR_ETaskOwnership ownership)
void Rpc_AddTaskAssigneeGroup(SCR_TaskExecutorGroup executor, int requesterID)
void SetTaskIconSetName(string iconSetName)
func TaskStateInvokerDelegate
void Rpc_SetAuthorCredentials(int authorId, UUID authorIdentityId, PlatformKind platformKind)
func TaskUIVisibilityInvokerDelegate
ref SCR_TaskUIInfo m_TaskUIInfo
void SetTaskUIVisibility(SCR_ETaskUIVisibility visibility)
void RemoveOwnerFactionKey(FactionKey factionKey)
void Rpc_AddOwnerExecutorEntity(SCR_TaskExecutorEntity executor)
void Rpc_AddTaskAssigneePlayer(SCR_TaskExecutorPlayer executor, int requesterID)
ref array< ref SCR_TaskExecutor > m_aAssignees
void WriteExecutor(ScriptBitWriter writer, SCR_TaskExecutor executor)
SCR_ETaskOwnership GetTaskOwnership()
SCR_TaskUIComponent GetUIComponent()
void Rpc_RemoveOwnerFactionKey(FactionKey factionKey)
ScriptInvokerBase< TaskGroupInvokerDelegate > SCR_TaskGroupInvoker
void SCR_Task(IEntitySource src, IEntity parent)
ScriptInvokerBase< TaskUIVisibilityInvokerDelegate > SCR_TaskUIVisibilityInvoker
ref array< string > m_aOwnerFactionKeys
void AddTaskAssignee_Proxy(SCR_TaskExecutor executor, int requesterID)
ref array< int > m_aOwnerGroupIDs
SCR_TaskUIInfo GetTaskUIInfo()
void RemoveTaskAssignee_Proxy(SCR_TaskExecutor executor, int requesterID)
void AddOwnerGroupID(int groupID)
array< int > GetOwnerGroupIDs()
ref SCR_TaskData m_TaskData
void Rpc_SetTaskUIVisibility(SCR_ETaskUIVisibility visibility)
SCR_ETaskOwnership m_eTaskOwnership
void Rpc_SetTaskState(SCR_ETaskState state)
func TaskFactionInvokerDelegate
void SetTaskPosition(vector position)
SCR_ETaskUIVisibility m_eTaskUIVisibility
void RemoveOwnerExecutor_Proxy(SCR_TaskExecutor executor)
int GetTaskAssigneePlayerCount(bool recursive=true)
array< string > GetOwnerFactionKeys()
int GetOwnerFactionCount()
void DisconnectFromTaskSystem()
void Rpc_RemoveOwnerGroupID(int groupID)
void SetTaskID(string taskID)
void Rpc_RemoveTaskAssigneeGroup(SCR_TaskExecutorGroup executor, int requesterID)
SCR_TaskData GetTaskData()
func TaskOwnershipInvokerDelegate
int GetOwnerExecutorCount()
void Rpc_AddOwnerExecutorGroup(SCR_TaskExecutorGroup executor)
void Rpc_SetTaskVisibility(SCR_ETaskVisibility visibility)
ref array< ref SCR_TaskExecutor > m_aOwnerExecutors
void Rpc_SetTaskIconSetName(string iconSetName)
bool RemoveOwnerExecutor(SCR_TaskExecutor executor)
void SetTaskIconPath(ResourceName iconPath)
bool AddOwnerExecutor(SCR_TaskExecutor executor)
void ReadExecutor(ScriptBitReader reader, out SCR_TaskExecutor executor)
void SetTaskVisibility(SCR_ETaskVisibility visibility)
void Rpc_AddOwnerGroupID(int groupID)
array< ref SCR_TaskExecutor > GetOwnerExecutors()
void AddOwnerExecutor_Proxy(SCR_TaskExecutor executor)
SCR_ETaskUIVisibility GetTaskUIVisibility()
bool IsTaskAssignedTo(SCR_TaskExecutor executor, out SCR_TaskExecutor match=null)
void OnGroupRemoved(SCR_AIGroup group)
When group is deleted, check if group matches group in task data and reset values.
void Rpc_RemoveTaskAssigneePlayer(SCR_TaskExecutorPlayer executor, int requesterID)
ref ScriptInvokerVoid m_OnDisplayDataChanged
array< ref SCR_TaskExecutor > GetTaskAssignees()
SCR_ETaskVisibility m_eTaskVisibility
func TaskGroupInvokerDelegate
void Rpc_AddTaskAssigneeEntity(SCR_TaskExecutorEntity executor, int requesterID)
ScriptInvokerBase< TaskOwnershipInvokerDelegate > SCR_TaskOwnershipInvoker
void Rpc_SetTaskName(LocalizedString taskName, array< LocalizedString > taskNameParams)
SCR_TaskSystem m_TaskSystem
string GetTaskName(SCR_Task task)
SCR_ETaskState m_eTaskState
override void AddOwnerFactionKey(FactionKey factionKey)
proto external Managed FindComponent(typename typeName)
Replication item identifier.
int GetPlayerCount(bool checkMasterAndSlaves=false)
static ScriptInvoker GetOnPlayerRemoved()
array< int > GetPlayerIDs()
static ScriptInvoker GetOnPlayerAdded()
int GetTotalPlayerCount()
override int GetGroupID()
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)
override void EOnInit(IEntity owner)
@ NONE
When Shape is created and not initialized yet.
SCR_FieldOfViewSettings Attribute
@ GROUP
AI Group (inherited from AIGroup).
EntityEvent
Various entity events.
EntityFlags
Various entity flags.
@ ALL
Everything except general switch.
void RplRpc(RplChannel channel, RplRcver rcver, RplCondition condition=RplCondition.None, string customConditionName="")
RplChannel
Communication channel. Reliable is guaranteed to be delivered. Unreliable not.