3 static const string PORT_REQUIREMENTS_IN =
"RequirementsIn";
4 static const string PORT_ENTITY_IN =
"EntityIn";
5 static const string PORT_GROUP_MEMBER_OUT =
"GroupMemberOut";
6 static const string PORT_IS_UNIQUE_OUT =
"IsUniqueOut";
7 static const string PORT_AGENTS_EXCLUDE_ARRAY =
"AgentsExcludeArray";
15 override void OnInit(AIAgent owner)
17 AIGroup group = AIGroup.Cast(owner);
23 override ENodeResult EOnTaskSimulate(AIAgent owner,
float dt)
25 if (!m_GroupUtilityComponent || !m_GroupUtilityComponent.m_aInfoComponents)
28 bool notFound =
true, isUnique =
true, isRolePresent =
false;
31 typename magazineWell;
32 int magazineMaxCountIndex,magazineCount,magazineMaxCount = 0;
38 Debug.Error(
"No MagazineWell provided for resupply?!");
40 array<AIAgent> agentsExclude;
44 int selectedIndex = m_GroupUtilityComponent.m_iGetMemberByGoalNextIndex;
46 int length = m_GroupUtilityComponent.m_aInfoComponents.Count();
47 for (
int i = 0; i < length; i++)
49 aIInfoComponent = m_GroupUtilityComponent.m_aInfoComponents[(i + selectedIndex) % length];
50 if( !aIInfoComponent )
53 AIAgent agent = AIAgent.Cast(aIInfoComponent.GetOwner());
56 if(agent.GetControlledEntity() == inEntity)
58 if(agentsExclude.Contains(agent))
60 if (aIInfoComponent.
HasUnitState(EUnitState.UNCONSCIOUS))
65 if (magazineCount > magazineMaxCount)
71 magazineMaxCount = magazineCount;
72 magazineMaxCountIndex = i;
73 if (aIInfoComponent.
GetAIState() == EUnitAIState.AVAILABLE)
78 selectedIndex = (i + selectedIndex) % length;
82 selectedIndex = (i + selectedIndex) % length;
90 m_GroupUtilityComponent.m_iGetMemberByGoalNextIndex = (selectedIndex + 1) % length;
92 m_GroupUtilityComponent.m_iGetMemberByGoalNextIndex = 0;
101 AIAgent agent = AIAgent.Cast(m_GroupUtilityComponent.m_aInfoComponents[selectedIndex].GetOwner());
132 PORT_GROUP_MEMBER_OUT,
142 PORT_REQUIREMENTS_IN,
144 PORT_AGENTS_EXCLUDE_ARRAY
154 return "Getter returns group member available for ressuply";