Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_WeightedListArsenalRefundEffect.c
Go to the documentation of this file.
1
2[BaseContainerProps(configRoot: true), BaseContainerCustomCheckIntTitleField("m_bEnabled", "Weighted Entries", "(Disabled) Weighted Entries", 1)]
4{
5 [Attribute(desc: "An array of effects. It will weighted randomize which effects will be executed any effect disabled will never be randomized")]
6 protected ref array<ref SCR_BaseWeightedArsenalRefundEffectEntry> m_aWeightedEffectEntries;
7
8 //------------------------------------------------------------------------------------------------
9 override void Init(SCR_ArsenalRefundEffectComponentClass arsenalRefundEffectClass)
10 {
11 //~ Remove any disabled
12 for (int i = m_aWeightedEffectEntries.Count() - 1; i >= 0; i--)
13 {
14 m_aWeightedEffectEntries[i].Init(arsenalRefundEffectClass);
15
16 if (!m_aWeightedEffectEntries[i].m_bEnabled)
17 m_aWeightedEffectEntries.RemoveOrdered(i);
18 }
19 }
20
21 //------------------------------------------------------------------------------------------------
22 override bool IsValid(notnull IEntity item, notnull PlayerController playerController, SCR_ArsenalComponent arsenal)
23 {
24 if (!super.IsValid(item, playerController, arsenal))
25 return false;
26
27 //~ Check if there are any entries
28 return !m_aWeightedEffectEntries.IsEmpty() && HasValidEntries(item, playerController, arsenal);
29 }
30
31 //------------------------------------------------------------------------------------------------
32 override bool ExecuteRefundEffect(notnull IEntity item, notnull PlayerController playerController, SCR_ArsenalComponent arsenal)
33 {
34 //~ Get valid entries
35 array<SCR_BaseWeightedArsenalRefundEffectEntry> validEntries = {};
36 GetValidEntries(validEntries, item, playerController, arsenal);
37
38 if (validEntries.IsEmpty())
39 return false;
40
41 SCR_WeightedArray<SCR_BaseWeightedArsenalRefundEffectEntry> weightedArrayEffectEntries = new SCR_WeightedArray<SCR_BaseWeightedArsenalRefundEffectEntry>();
42
43 //~ Add to weighted array
44 foreach (SCR_BaseWeightedArsenalRefundEffectEntry entry : validEntries)
45 {
46 if (!entry.m_bEnabled)
47 continue;
48
49 weightedArrayEffectEntries.Insert(entry, entry.m_iWeight);
50 }
51
52 //~ Get weighted random entry
54 weightedArrayEffectEntries.GetRandomValue(entry);
55
56 //~ Execute the effect
57 return entry && entry.ExecuteRefundEffect(item, playerController, arsenal);
58 }
59
60 //------------------------------------------------------------------------------------------------
61 //~ Check if there is at least one valid entry
62 protected bool HasValidEntries(notnull IEntity item, notnull PlayerController playerController, SCR_ArsenalComponent arsenal)
63 {
64 //~ Check if there is at least one valid entry
66 {
67 if (entry.IsValid(item, playerController, arsenal))
68 return true;
69 }
70
71 return false;
72 }
73
74 //------------------------------------------------------------------------------------------------
75 //~ Get all valid entries
76 protected int GetValidEntries(notnull inout array<SCR_BaseWeightedArsenalRefundEffectEntry> validEntries, notnull IEntity item, notnull PlayerController playerController, SCR_ArsenalComponent arsenal)
77 {
78 validEntries.Clear();
79
80 //~ Get all valid entries
82 {
83 if (entry.IsValid(item, playerController, arsenal))
84 validEntries.Insert(entry);
85 }
86
87 return validEntries.Count();
88 }
89}
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
SCR_ValuableIntelArsenalRefundEffect SCR_WeightedListArsenalRefundEffect BaseContainerCustomCheckIntTitleField("m_bEnabled", "Valuable Intel - Add XP", "(Disabled) Valuable Intel - Add XP", 1)
Effects that support the weighted variant of Arsenal Refund effects. Only works for SCR_BaseWeightedA...
Holds an array of effects that are executed using a weighted randomization.
override bool IsValid(notnull IEntity item, notnull PlayerController playerController, SCR_ArsenalComponent arsenal)
ref array< ref SCR_BaseWeightedArsenalRefundEffectEntry > m_aWeightedEffectEntries
override void Init(SCR_ArsenalRefundEffectComponentClass arsenalRefundEffectClass)
bool HasValidEntries(notnull IEntity item, notnull PlayerController playerController, SCR_ArsenalComponent arsenal)
int GetValidEntries(notnull inout array< SCR_BaseWeightedArsenalRefundEffectEntry > validEntries, notnull IEntity item, notnull PlayerController playerController, SCR_ArsenalComponent arsenal)
override bool ExecuteRefundEffect(notnull IEntity item, notnull PlayerController playerController, SCR_ArsenalComponent arsenal)
SCR_FieldOfViewSettings Attribute