Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_ArsenalAmmunitionModeAttribute.c
Go to the documentation of this file.
3{
4 //------------------------------------------------------------------------------------------------
5 override SCR_BaseEditorAttributeVar ReadVariable(Managed item, SCR_AttributesManagerEditorComponent manager)
6 {
8 if (!editableEntity)
9 return null;
10
11 SCR_ArsenalComponent arsenalComponent = SCR_ArsenalComponent.FindArsenalComponent(editableEntity.GetOwner());
12 if (!arsenalComponent)
13 return null;
14
15 SCR_EArsenalAttributeGroup arsenalGroups = arsenalComponent.GetEditableAttributeGroups();
16 if (!(arsenalGroups & SCR_EArsenalAttributeGroup.AMMUNITION_MODE) || !(arsenalGroups & SCR_EArsenalAttributeGroup.WEAPONS))
17 return null;
18
19 SCR_EArsenalItemMode itemMode = arsenalComponent.GetSupportedArsenalItemModes();
20
21 int weaponsAmmunitionIndex;
22
23 if ((itemMode & SCR_EArsenalItemMode.WEAPON) && (itemMode & SCR_EArsenalItemMode.AMMUNITION))
24 weaponsAmmunitionIndex = 0;
25 else if (itemMode & SCR_EArsenalItemMode.WEAPON)
26 weaponsAmmunitionIndex = 1;
27 else
28 weaponsAmmunitionIndex = 2;
29
30 return SCR_BaseEditorAttributeVar.CreateInt(weaponsAmmunitionIndex);
31 }
32
33 //---- REFACTOR NOTE START: weaponsAmmunitionIndex seem oddly specific but hard to understand ----
34
35 //------------------------------------------------------------------------------------------------
36 override void WriteVariable(Managed item, SCR_BaseEditorAttributeVar var, SCR_AttributesManagerEditorComponent manager, int playerID)
37 {
38 if (!var)
39 return;
40
42 if (!editableEntity)
43 return;
44
45 SCR_ArsenalComponent arsenalComponent = SCR_ArsenalComponent.FindArsenalComponent(editableEntity.GetOwner());
46 if (!arsenalComponent)
47 return;
48
49 SCR_EArsenalItemMode itemMode = arsenalComponent.GetSupportedArsenalItemModes();
50
51 int weaponsAmmunitionIndex = var.GetInt();
52
53 if (weaponsAmmunitionIndex == 0)
54 {
55 itemMode |= SCR_EArsenalItemMode.WEAPON;
56 itemMode |= SCR_EArsenalItemMode.WEAPON_VARIANTS;
57 itemMode |= SCR_EArsenalItemMode.AMMUNITION;
58 }
59 else if (weaponsAmmunitionIndex == 1)
60 {
61 itemMode |= SCR_EArsenalItemMode.WEAPON;
62 itemMode |= SCR_EArsenalItemMode.WEAPON_VARIANTS;
63 itemMode &= ~SCR_EArsenalItemMode.AMMUNITION;
64 }
65 else
66 {
67 itemMode &= ~SCR_EArsenalItemMode.WEAPON;
68 itemMode &= ~SCR_EArsenalItemMode.WEAPON_VARIANTS;
69 itemMode |= SCR_EArsenalItemMode.AMMUNITION;
70 }
71
72 arsenalComponent.SetSupportedArsenalItemModes(itemMode);
73 }
74
75 //---- REFACTOR NOTE END ----
76}
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
SCR_EArsenalItemMode
SCR_EArsenalAttributeGroup GetEditableAttributeGroups()
static SCR_ArsenalComponent FindArsenalComponent(notnull IEntity entity, bool getFromSlotted=true)
void SetSupportedArsenalItemModes(SCR_EArsenalItemMode modes)
SCR_EArsenalItemMode GetSupportedArsenalItemModes()
static SCR_BaseEditorAttributeVar CreateInt(int value)
Attribute base for Name, icon and float value for other attributes to inherent from.