28 super.Init(input, type, layout_root, user_override);
30 m_WidgetArray.ShuffleArray();
32 m_BloodDropsFrame = m_LayoutRoot.FindAnyWidgetById(EffectWidgetsTypes.BLEEDING_LAYER);
59 ErrorEx(
"" +
this +
" is already initialized, further registration not possible!");
61 Debug.
Log(
"ERROR: " +
this +
" is already initialized, further registration not possible!");
70 if (par.param1 ==
true)
83 BleedingIndicator indicator =
new BleedingIndicator(bit,severity,
this);
101 switch (flow_modifier)
133 BleedingIndicator bib;
137 bib.Update(timeSlice);
138 if ( bib.GetEndNow() )
154 override void Update(
float timeSlice = 0,
Param p = null,
int handle = -1)
161 Param4<bool,int,vector,bool> par;
165 Param1<bool> parShow;
169 bool state = par.param1;
192 g_Game.GetMission().GetEffectWidgets().RemoveActiveEffects({EffectWidgetsTypes.BLEEDING_LAYER});
193 m_WidgetArray.ShuffleArray();
202 while (w && w != m_LayoutRoot &&
m_Visible == state && w.IsVisibleHierarchy() != state)
243 ErrorEx(
"No defined data for the selected severity!");
250 Widget frameParent = m_LayoutRoot.FindAnyWidget(
"PoisitioningFrames");
258 Widget frame = frameParent.GetChildren();
262 frame = frame.GetSibling();
276 if (index >= arrayCount)
288 float x,
y,x_size,y_size;
289 frame.GetScreenPos(
x,
y);
290 frame.GetScreenSize(x_size,y_size);
static const int INDICATOR_SEVERITY_MEDIUM
static const int SEQUENCE_STEPS
static const float SEQUENCE_DROP_AVERAGE_MEDIUM
static const float SEQUENCE_DROP_AVERAGE_LOW
static const int INDICATOR_SEVERITY_HIGH
static const float SEQUENCE_DROP_AVERAGE_HIGH
static const int INDICATOR_SEVERITY_LOW
Super root of all classes in Enforce script.
static void Log(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Prints debug message with normal prio.
Manages all bleeding indicators and their updates.
ref array< int > m_CleanupQueue
void BuildProbabilityData(int severity, float frequency)
override void Init(array< ref Widget > input, int type, Widget layout_root, int user_override=-1)
override bool HasDefinedHandle()
override bool DataInitialized()
void StopBleedingIndicator(int source_ID, bool instant=false)
void GameplayEffectsDataBleeding(array< ref Widget > input, int type, int user_override=-1)
void UpdateBleedingIndicators(float timeSlice)
void RegisterBleedingIndicatorInstance(int bit, float flow_modifier)
vector GenerateSequenceRandomPosition()
void CleanupBleedingIndicators()
void BuildPositioningData()
ImageWidget GetNextDropImage()
override void RegisterData(Param p)
ref array< int > m_RunningIndicators
ref map< int, ref array< float > > m_ProbabilityMap
int CalculateSeverity(float flow_modifier)
ref map< int, ref BleedingIndicator > m_RegisteredInstances
ref array< Widget > m_PositioningFramesArray
void SpawnBleedingIndicator(int source_ID, vector position)
override void UpdateVisibility(bool state)
override void ForceStop()
stops and re-sets indicators and images even out of sequence. Should still be tied to the 'player' up...
override void Update(float timeSlice=0, Param p=null, int handle=-1)
array< float > GetProbabilities(int severity)
int m_LastPositionFrameUsed
Base Param Class with no parameters.
static const float BLEEDING_SOURCE_FLOW_MODIFIER_LOW
static const float BLEEDING_SOURCE_FLOW_MODIFIER_HIGH
static const float BLEEDING_SOURCE_FLOW_MODIFIER_MEDIUM
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
static proto int RandomInt(int min, int max)
Returns a random int number between and min [inclusive] and max [exclusive].
static float RandomFloatInclusive(float min, float max)
Returns a random float number between and min [inclusive] and max [inclusive].
static float Poisson(float mean, int occurences)
occurences values above '12' will cause Factorial to overflow int.