14class SCR_DamageIntensityHolder
17 protected ref array<ref SCR_DamageIntensityEntry> m_aDamageIntensityEntries;
19 protected ref SCR_SortedArray<SCR_DamageIntensityEntry> m_SortedDamageIntensityEntries;
26 Print(
"'SCR_DamageIntensityEntry' Damage scaled cannot be less than 0!",
LogLevel.WARNING);
31 for (
int i = 0, count = m_SortedDamageIntensityEntries.Count(); i < count; i++)
34 entry = m_SortedDamageIntensityEntries.Get(i);
46 SCR_DamageIntensityEntry GetValidIntensityEntry(notnull array<HitZone> hitZones)
48 if (hitZones.IsEmpty())
51 float healthScaled = 0;
52 SCR_FlammableHitZone flammableHitZone;
53 SCR_DamageManagerComponent hitZoneContainer;
54 foreach (HitZone hitZone : hitZones)
59 healthScaled += hitZone.GetHealthScaled();
60 flammableHitZone = SCR_FlammableHitZone.Cast(hitZone);
61 if (!flammableHitZone)
64 hitZoneContainer = SCR_DamageManagerComponent.Cast(flammableHitZone.GetHitZoneContainer());
65 if (!hitZoneContainer || !hitZoneContainer.IsOnFire(flammableHitZone))
72 return GetValidIntensityEntry(healthScaled / hitZones.Count());
76 SCR_DamageIntensityEntry GetValidIntensityEntry(notnull HitZone hitZone)
78 return GetValidIntensityEntry(hitZone.GetHealthScaled());
82 SCR_DamageIntensityEntry GetValidIntensityEntry(notnull SCR_DamageManagerComponent damageManager)
84 HitZone defaultHitZone = damageManager.GetDefaultHitZone();
85 return GetValidIntensityEntry(defaultHitZone.GetHealthScaled());
89 SCR_UIName GetValidIntensityUIInfo(
float value)
91 SCR_DamageIntensityEntry entry = GetValidIntensityEntry(value);
100 SCR_UIName GetValidIntensityUIInfo(notnull array<HitZone> hitZones)
102 SCR_DamageIntensityEntry entry = GetValidIntensityEntry(hitZones);
111 SCR_UIName GetValidIntensityUIInfo(notnull HitZone hitZone)
113 SCR_DamageIntensityEntry entry = GetValidIntensityEntry(hitZone);
122 SCR_UIName GetValidIntensityUIInfo(notnull SCR_DamageManagerComponent damageManager)
124 SCR_DamageIntensityEntry entry = GetValidIntensityEntry(damageManager);
135 SCR_DamageIntensityEntry entry = GetValidIntensityEntry(value);
146 SCR_DamageIntensityEntry entry = GetValidIntensityEntry(hitZones);
157 SCR_DamageIntensityEntry entry = GetValidIntensityEntry(hitZone);
168 SCR_DamageIntensityEntry entry = GetValidIntensityEntry(damageManager);
179 SCR_DamageIntensityEntry entry;
180 for (
int i = 0, count = m_SortedDamageIntensityEntries.Count(); i < count; i++)
182 entry = m_SortedDamageIntensityEntries.Get(i);
193 SCR_DamageIntensityEntry entry = GetIntensityEntry(
type);
203 SCR_UIName uiInfo = GetIntensityUIInfo(
type);
211 void SCR_DamageIntensityHolder()
213 m_SortedDamageIntensityEntries =
new SCR_SortedArray<SCR_DamageIntensityEntry>();
214 foreach (SCR_DamageIntensityEntry entry : m_aDamageIntensityEntries)
219 m_SortedDamageIntensityEntries.Insert(entry.
m_iOrder, entry);
bool IsValidDamageState(float value)
SCR_EDamageIntensityType GetDamageIntensityType()
SCR_EDamageIntensityType m_eDamageIntensityType