31 super.OnPostInit(owner);
42 bool AddSetting(notnull SCR_AISettingBase setting,
bool createCopy,
bool removeSameTypeAndOrigin =
false)
45 string strDebugText =
string.Format(
"AddSetting: %1, Origin: %2, Priority: %3, %4",
48 setting.GetPriority(),
49 setting.GetDebugText());
50 AddDebugMessage(strDebugText);
53 typename t = setting.GetCategorizationType();
55 if (removeSameTypeAndOrigin)
59 SCR_AISettingBase settingToAdd;
62 SCR_AISettingBase settingCopy = setting.CreateCopy();
63 settingCopy.Internal_InitCopyFrom(setting);
64 settingToAdd = settingCopy;
67 settingToAdd = setting;
69 array<ref SCR_AISettingBase> settingsOfType =
m_mSettings.Get(t);
78 if (settingsOfType.Contains(settingToAdd))
82 settingToAdd.Internal_SetFlag(SCR_EAISettingFlags.SETTINGS_COMPONENT);
83 settingsOfType.Insert(settingToAdd);
84 settingsOfType.Sort(
true);
87 settingToAdd.OnAdded(
this);
90 settingsOfType[0].ApplyEffects(
this);
99 string strDebugText =
string.Format(
"RemoveSetting: %1, Origin: %2, Priority: %3, %4",
102 setting.GetPriority(),
103 setting.GetDebugText());
104 AddDebugMessage(strDebugText);
107 typename t = setting.GetCategorizationType();
108 array<ref SCR_AISettingBase> settingsOfType =
m_mSettings.Get(t);
112 if (!settingsOfType.Contains(setting))
115 settingsOfType.RemoveItemOrdered(setting);
118 setting.OnRemoved(
this);
128 string strDebugText =
string.Format(
"RemoveChildSettingsOfParent: %1, %2",
130 parentSetting.GetDebugText());
132 AddDebugMessage(strDebugText);
135 typename t = parentSetting.GetCategorizationType();
136 array<ref SCR_AISettingBase> settingsOfType =
m_mSettings.Get(t);
141 foreach (
int i,
auto s : settingsOfType)
143 if (s.GetParentSetting() == parentSetting)
153 SCR_AISettingBase setting = settingsOfType[
id];
154 settingsOfType.RemoveOrdered(
id);
165 string strDebugText =
string.Format(
"RemoveSettingsWithFlag: %1",
typename.EnumToString(SCR_EAISettingFlags, f));
166 AddDebugMessage(strDebugText);
169 foreach (
typename t, array<ref SCR_AISettingBase> a :
m_mSettings)
171 for (
int i = a.Count()-1; i >= 0; i--)
188 string strDebugText =
string.Format(
"RemoveSetingsOfTypeAndOrigin: %1, %2", t,
typename.EnumToString(
SCR_EAISettingOrigin, origin));
189 AddDebugMessage(strDebugText);
192 array<ref SCR_AISettingBase> settingsOfType =
m_mSettings.Get(t);
196 for (
int i = settingsOfType.Count()-1; i >= 0; i--)
198 auto s = settingsOfType[i];
199 if (s.GetOrigin() == origin)
201 settingsOfType.RemoveOrdered(i);
212 SCR_AIActionBase currentAction;
215 currentAction = SCR_AIActionBase.Cast(
m_UtilityComp.GetCurrentAction());
219 actionCause = currentAction.GetCause();
229 array<ref SCR_AISettingBase> settingsOfType =
m_mSettings.Get(settingType);
231 if (!settingsOfType || settingsOfType.IsEmpty())
235 foreach (SCR_AISettingBase setting : settingsOfType)
237 if (currentActionCause <= setting.GetMaxActionCause())
250 foreach (
typename t, array<ref SCR_AISettingBase> settingsOfType :
m_mSettings)
252 foreach (
auto s : settingsOfType)
253 outSettings.Insert(s);
268 SCR_AIInfoBaseComponent infoComp = SCR_AIInfoBaseComponent.Cast(
GetOwner().
FindComponent(SCR_AIInfoBaseComponent));
269 infoComp.AddDebugMessage(str, msgType: messageType);
bool AddSetting(notnull SCR_AISettingBase setting, bool createCopy, bool removeSameTypeAndOrigin=false)
It's overridden as protected. This way SCR_AICharacterSettingsComponent accepts only character settin...
void OnSettingAdded(notnull SCR_AISettingBase setting)
void OnSettingRemoved(notnull SCR_AISettingBase setting)
enum EAIGroupCombatMode ComponentEditorProps(category:"GameScripted/AI", description:"Component for utility AI system for groups")
SCR_AISettingsBaseComponentClass m_mSettings
void RemoveSettingsWithFlag(SCR_EAISettingFlags f)
Iterates all settings, removes all which have given flag.
void RemoveSettingsOfTypeAndOrigin(typename t, SCR_EAISettingOrigin origin)
typename t - must be one of those returned by GetCategorizationType
bool RemoveSetting(notnull SCR_AISettingBase setting)
SCR_AISettingBase GetCurrentSetting(typename settingType)
void GetAllSettings(notnull array< SCR_AISettingBase > outSettings)
Returns all setting objects held by this component.
AIBaseUtilityComponent m_UtilityComp
bool RemoveChildSettingsOfParent(notnull SCR_AISettingBase parentSetting)
Removes setting which has provided setting object as parent.
proto external GenericComponent FindComponent(typename typeName)
proto external Managed FindComponent(typename typeName)
proto external GenericEntity GetOwner()
Get owner entity.