Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_OpenVehicleStorageAction.c
Go to the documentation of this file.
2{
3#ifndef DISABLE_INVENTORY
4 [Attribute("1")]
5 protected bool m_bShowFromOutside;
6
7 [Attribute("1")]
8 protected bool m_bShowInside;
9
10 [Attribute("0", desc: "If true will get Inventory from self even if parent (eg vehicle) also has an inventory.")]
12
13 protected IEntity m_Vehicle;
16 protected FactionAffiliationComponent m_VehicleAffiliation;
17
18 //------------------------------------------------------------------------------------------------
19 override protected void PerformActionInternal(SCR_InventoryStorageManagerComponent manager, IEntity pOwnerEntity, IEntity pUserEntity)
20 {
21 manager.SetStorageToOpen(m_InventoryOwner);
22 manager.OpenInventory();
23 }
24
25 //------------------------------------------------------------------------------------------------
26 override bool CanBeShownScript(IEntity user)
27 {
28 if (!user || !m_Vehicle || !m_InventoryOwner)
29 return false;
30
31 if (m_DamageManager && m_DamageManager.GetState() == EDamageState.DESTROYED)
32 return false;
33
34 ChimeraCharacter character = ChimeraCharacter.Cast(user);
35 if (character)
36 {
37 CompartmentAccessComponent compAccess = character.GetCompartmentAccessComponent();
38 if (compAccess && (compAccess.IsGettingIn() || compAccess.IsGettingOut()))
39 return false;
40
41 if (!m_bShowFromOutside && !character.IsInVehicle())
42 return false;
43
44 if (!m_bShowInside && character.IsInVehicle())
45 return false;
46 }
47
49 return true;
50
51 Faction vehicleFaction = m_VehicleAffiliation.GetAffiliatedFaction();
52 if (!vehicleFaction)
53 return true;
54
55 FactionAffiliationComponent userAffiliation = FactionAffiliationComponent.Cast(user.FindComponent(FactionAffiliationComponent));
56 if (!userAffiliation)
57 return true;
58
59 Faction userFaction = userAffiliation.GetAffiliatedFaction();
60 if (!userFaction)
61 return true;
62
63 return !vehicleFaction.IsFactionEnemy(userFaction);
64 }
65
66 //------------------------------------------------------------------------------------------------
67 override void Init(IEntity pOwnerEntity, GenericComponent pManagerComponent)
68 {
69 //~ Call one frame later as otherwise client slotted entity does not know yet who the vehicle is on init
70 GetGame().GetCallqueue().CallLater(DelayedInit, param1: pOwnerEntity, param2: pManagerComponent);
71 }
72
73 //------------------------------------------------------------------------------------------------
74 protected void DelayedInit(IEntity pOwnerEntity, GenericComponent pManagerComponent)
75 {
76 if (!pOwnerEntity)
77 return;
78
79 if (!Vehicle.Cast(pOwnerEntity) && pOwnerEntity.GetParent())
80 m_Vehicle = pOwnerEntity.GetParent();
81 else
82 m_Vehicle = pOwnerEntity;
83
84 //~ Set inventory owner the same as vehicle
87 //~ Set inventory owner as self
88 else
89 m_InventoryOwner = pOwnerEntity;
90
91 if (!m_Vehicle)
92 return;
93
95 m_VehicleAffiliation = FactionAffiliationComponent.Cast(m_Vehicle.FindComponent(FactionAffiliationComponent));
96 }
97#endif
98};
ArmaReforgerScripted GetGame()
Definition game.c:1398
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
proto external Managed FindComponent(typename typeName)
proto external IEntity GetParent()
modded version for to be used with the inventory 2.0
void DelayedInit(IEntity pOwnerEntity, GenericComponent pManagerComponent)
override void Init(IEntity pOwnerEntity, GenericComponent pManagerComponent)
FactionAffiliationComponent m_VehicleAffiliation
override bool CanBeShownScript(IEntity user)
void PerformActionInternal(SCR_InventoryStorageManagerComponent manager, IEntity pOwnerEntity, IEntity pUserEntity)
enum EPhysicsLayerPresets Vehicle
Definition gameLib.c:24
SCR_FieldOfViewSettings Attribute
EDamageState
T2 param2
Definition tuple.c:92
Tuple param1