Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_TakeControlContextAction.c
Go to the documentation of this file.
3{
4 override bool CanBeShown(SCR_EditableEntityComponent hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities, vector cursorWorldPosition, int flags)
5 {
6 if (!hoveredEntity || !SCR_PossessingManagerComponent.GetInstance())
7 return false;
8
9 GenericEntity owner = hoveredEntity.GetOwner();
10 if (!owner)
11 return false;
12
14
15 if (!compartmentManager)
16 {
17 SCR_EditableEntityComponent aiEntity = hoveredEntity.GetAIEntity();
18 if (!aiEntity || aiEntity.IsDestroyed())
19 return false;
20
21 //--- Check if the entity is not a player
22 return SCR_PossessingManagerComponent.GetPlayerIdFromControlledEntity(aiEntity.GetOwner()) <= 0;
23 }
24 else
25 {
26 return true;
27 }
28 }
29
30 override bool CanBePerformed(SCR_EditableEntityComponent hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities, vector cursorWorldPosition, int flags)
31 {
32 if (!hoveredEntity || !SCR_PossessingManagerComponent.GetInstance())
33 return false;
34
35 GenericEntity owner = hoveredEntity.GetOwner();
36 if (!owner)
37 return false;
38
39 SCR_BaseCompartmentManagerComponent compartmentManager = SCR_BaseCompartmentManagerComponent.Cast(owner.FindComponent(SCR_BaseCompartmentManagerComponent));
40
41 if (!compartmentManager)
42 {
43 return CanBeShown(hoveredEntity, selectedEntities, cursorWorldPosition, flags);
44 }
45 else
46 {
47 array<IEntity> pilots = new array<IEntity>;
48 compartmentManager.GetOccupantsOfType(pilots, ECompartmentType.PILOT);
49
50 if (pilots.IsEmpty() || !pilots[0])
51 return false;
52
53 SCR_EditableEntityComponent pilotEditableEntity = SCR_EditableEntityComponent.Cast(pilots[0].FindComponent(SCR_EditableEntityComponent));
54 if (!pilotEditableEntity)
55 return false;
56
57 SCR_EditableEntityComponent aiEntity = pilotEditableEntity.GetAIEntity();
58 if (!aiEntity || aiEntity.IsDestroyed())
59 return false;
60
61 //--- Check if the entity is not a player
62 return SCR_PossessingManagerComponent.GetPlayerIdFromControlledEntity(aiEntity.GetOwner()) <= 0;
63 }
64 }
65
66 override void Perform(SCR_EditableEntityComponent hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities, vector cursorWorldPosition, int flags, int param = -1)
67 {
68 if (!hoveredEntity || !SCR_PossessingManagerComponent.GetInstance())
69 return;
70
71 GenericEntity owner = hoveredEntity.GetOwner();
72 if (!owner)
73 return;
74
75 SCR_EditableEntityComponent entityToControl;
76 SCR_BaseCompartmentManagerComponent compartmentManager = SCR_BaseCompartmentManagerComponent.Cast(owner.FindComponent(SCR_BaseCompartmentManagerComponent));
77
78 if (!compartmentManager)
79 {
80 entityToControl = hoveredEntity;
81 }
82 else
83 {
84 array<IEntity> pilots = new array<IEntity>;
85 compartmentManager.GetOccupantsOfType(pilots, ECompartmentType.PILOT);
86
87 if (pilots.IsEmpty() || !pilots[0])
88 return;
89
90 entityToControl = SCR_EditableEntityComponent.Cast(pilots[0].FindComponent(SCR_EditableEntityComponent));
91 }
92
93 if (!entityToControl)
94 return;
95
96 SCR_EditableEntityComponent aiEntity = entityToControl.GetAIEntity();
97 if (!aiEntity || aiEntity.IsDestroyed())
98 return;
99
100 //--- Find player controller (param is playerID)
101 SCR_PlayerController playerController = SCR_PlayerController.Cast(GetGame().GetPlayerManager().GetPlayerController(param));
102 if (!playerController)
103 return;
104
105 playerController.SetPossessedEntity(aiEntity.GetOwner());
106
108 if (!characterController)
109 return;
110
111 //--- Set the speed of the character to the default speed
112 characterController.SetDynamicSpeed(1);
113
114 //--- Close the editor (ToDo: Move to lobby's OnPossessed event)
116 if (core)
117 {
118 SCR_EditorManagerEntity manager = core.GetEditorManager(param);
119 if (manager)
120 manager.Close();
121 }
122 }
123 override int GetParam()
124 {
125 return GetGame().GetPlayerController().GetPlayerId();
126 }
127 override bool IsServer()
128 {
129 return true;
130 }
131};
SCR_EAIThreatSectorFlags flags
ECompartmentType
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
class SCR_ArsenalGameModeUIDataHolder SCR_BaseContainerCustomTitleUIInfo("m_UIInfo")
void SCR_EditorManagerEntity(IEntitySource src, IEntity parent)
proto external Managed FindComponent(typename typeName)
SCR_EditableEntityComponent GetAIEntity()
Core component to manage SCR_EditorManagerEntity.
SCR_EditorManagerEntity GetEditorManager()
void SetPossessedEntity(IEntity entity)
proto external PlayerController GetPlayerController()