Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_MapMarkerEntrySquadLeader.c
Go to the documentation of this file.
1//------------------------------------------------------------------------------------------------
5{
8 protected SCR_AIGroup m_bCurrentSquad; // saved active squad of the current player
9
11
12 //------------------------------------------------------------------------------------------------
14 void RegisterMarker(SCR_MapMarkerSquadLeader marker, SCR_AIGroup group)
15 {
16 m_mGroupMarkers.Insert(group, marker);
17 }
18
19 //------------------------------------------------------------------------------------------------
21 {
22 m_mGroupMarkers.Remove(group);
23 }
24
25 //------------------------------------------------------------------------------------------------
27 protected void FocusCurrentSquad()
28 {
29 if (!m_bCurrentSquad || !m_ToolMenuEntry.IsEntryEnabled())
30 return;
31
32 SCR_MapMarkerSquadLeader leaderEnt = m_mGroupMarkers.Get(m_bCurrentSquad);
33 if (leaderEnt)
34 {
35 vector wPos = leaderEnt.GetWorldPos();
36 int screenX, screenY;
37
38 SCR_MapEntity.GetMapInstance().WorldToScreen(wPos[0], wPos[2], screenX, screenY);
39 SCR_MapEntity.GetMapInstance().PanSmooth(screenX, screenY);
40 }
41 }
42
43 //------------------------------------------------------------------------------------------------
45 protected void UpdateToolEntryState()
46 {
48 {
49 if (m_bCurrentSquad != null && GetGame().GetPlayerController().GetPlayerId() != m_bCurrentSquad.GetLeaderID()) // currently squad in squad && we are not the leader
50 m_ToolMenuEntry.SetEnabled(true);
51 else
52 m_ToolMenuEntry.SetEnabled(false);
53 }
54 }
55
56 //------------------------------------------------------------------------------------------------
58 protected void OnPlayableGroupCreated(SCR_AIGroup group)
59 {
60 SCR_MapMarkerSquadLeader marker = SCR_MapMarkerSquadLeader.Cast(m_MarkerMgr.InsertDynamicMarker(SCR_EMapMarkerType.SQUAD_LEADER, group));
61 if (!marker)
62 return;
63
64 marker.SetFaction(group.GetFaction());
65 RegisterMarker(marker, group);
66 }
67
68 //------------------------------------------------------------------------------------------------
70 protected void OnPlayableGroupRemoved(SCR_AIGroup group)
71 {
72 SCR_MapMarkerSquadLeader marker = m_mGroupMarkers.Get(group);
73 if (marker)
74 m_MarkerMgr.RemoveDynamicMarker(marker);
75
76 UnregisterMarker(group);
77 }
78
79 //------------------------------------------------------------------------------------------------
81 protected void OnPlayerLeaderChanged(int groupID, int playerId)
82 {
83 SCR_AIGroup group = m_GroupsManager.FindGroup(groupID);
84 SCR_MapMarkerSquadLeader marker = m_mGroupMarkers.Get(group);
85 if (marker)
86 marker.SetPlayerID(playerId);
87 }
88
89 //------------------------------------------------------------------------------------------------
91 protected void OnPlayerAdded(SCR_AIGroup group, int playerId)
92 {
93 PlayerController playerController = GetGame().GetPlayerController();
94 if (!playerController)
95 return;
96
97 if (group.IsPlayerInGroup(playerController.GetPlayerId() == playerId))
98 {
99 m_bCurrentSquad = group;
101
102 SCR_MapMarkerSquadLeader marker = m_mGroupMarkers.Get(group);
103 if (marker)
104 marker.UpdatePlayerAffiliation();
105 }
106 }
107
108 //------------------------------------------------------------------------------------------------
110 protected void OnPlayerRemoved(SCR_AIGroup group, int playerId)
111 {
112 PlayerController playerController = GetGame().GetPlayerController();
113 if (!playerController)
114 return;
115
116 if (m_bCurrentSquad == group && group.IsPlayerInGroup(playerController.GetPlayerId() == playerId))
117 {
118 m_bCurrentSquad = null;
120
121 SCR_MapMarkerSquadLeader marker = m_mGroupMarkers.Get(group);
122 if (marker)
123 marker.UpdatePlayerAffiliation();
124 }
125 }
126
127 //------------------------------------------------------------------------------------------------
129 protected void OnPlayerSpawned(int playerId, IEntity player)
130 {
131 UpdateMarkerTarget(playerId);
132 }
133
134 //------------------------------------------------------------------------------------------------
136 protected void OnPlayerKilled( notnull SCR_InstigatorContextData instigatorContextData)
137 {
138 UpdateMarkerTarget(instigatorContextData.GetVictimPlayerID());
139 }
140
141 //------------------------------------------------------------------------------------------------
143 protected void OnPlayerDeleted(int playerId, IEntity player)
144 {
145 UpdateMarkerTarget(playerId);
146 }
147
148 //------------------------------------------------------------------------------------------------
151 {
152 SCR_MapMarkerSquadLeader marker = m_mGroupMarkers.Get(group);
153 if (marker)
154 marker.SetTextUpdate();
155 }
156
157 //------------------------------------------------------------------------------------------------
159 protected void UpdateMarkerTarget(int playerID)
160 {
161 SCR_AIGroup group = m_GroupsManager.GetPlayerGroup(playerID);
162 if (!group || !group.IsPlayerLeader(playerID)) // ignore if not leader
163 return;
164
165 SCR_MapMarkerSquadLeader marker = m_mGroupMarkers.Get(group);
166 if (marker)
167 marker.SetPlayerID(playerID);
168 }
169
170 //------------------------------------------------------------------------------------------------
172 {
173 return SCR_EMapMarkerType.SQUAD_LEADER;
174 }
175
176 //------------------------------------------------------------------------------------------------
177 override void InitServerLogic()
178 {
179 super.InitServerLogic();
180
182 if (!gameMode)
183 return;
184
186 m_GroupsManager.GetOnPlayableGroupCreated().Insert(OnPlayableGroupCreated);
187 m_GroupsManager.GetOnPlayableGroupRemoved().Insert(OnPlayableGroupRemoved);
188
190
191 gameMode.GetOnPlayerSpawned().Insert(OnPlayerSpawned);
192 gameMode.GetOnPlayerKilled().Insert(OnPlayerKilled);
193 gameMode.GetOnPlayerDeleted().Insert(OnPlayerDeleted);
194 }
195
196 //------------------------------------------------------------------------------------------------
203
204 //------------------------------------------------------------------------------------------------
205 override void OnMapLayerChangedDynamic(notnull SCR_MapMarkerDynamicWComponent widgetComp, int layerID)
206 {
207 if (layerID > 1)
208 widgetComp.SetTextVisible(false);
209 else
210 widgetComp.SetTextVisible(true);
211 }
212
213 //------------------------------------------------------------------------------------------------
214 override void OnMapOpen(notnull SCR_MapEntity mapEnt, notnull SCR_MapMarkersUI markerUIComp)
215 {
216 super.OnMapOpen(mapEnt, markerUIComp);
217
219 }
220
221 //------------------------------------------------------------------------------------------------
222 override void OnMapInit(notnull SCR_MapEntity mapEnt, notnull SCR_MapMarkersUI markerUIComp)
223 {
224 super.OnMapInit(mapEnt, markerUIComp);
225
226 SCR_MapToolMenuUI toolMenu = SCR_MapToolMenuUI.Cast(mapEnt.GetMapUIComponent(SCR_MapToolMenuUI));
227 if (!toolMenu)
228 return;
229
230 m_ToolMenuEntry = toolMenu.RegisterToolMenuEntry("{3262679C50EF4F01}UI/Textures/Icons/icons_wrapperUI.imageset", "squad", 20); // add to menu
231 m_ToolMenuEntry.m_OnClick.Insert(FocusCurrentSquad);
232 m_ToolMenuEntry.SetEnabled(true);
233 }
234}
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
SCR_BaseGameMode GetGameMode()
void SCR_GroupsManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
SCR_EMapMarkerType
void SCR_MapToolMenuUI()
bool IsPlayerLeader(int playerID)
static ScriptInvoker GetOnPlayerRemoved()
static ScriptInvoker GetOnCustomNameChanged()
static ScriptInvoker GetOnPlayerLeaderChanged()
static ScriptInvoker GetOnPlayerAdded()
Faction GetFaction()
bool IsPlayerInGroup(int playerID)
ScriptInvokerBase< SCR_BaseGameMode_PlayerIdAndEntity > GetOnPlayerSpawned()
ScriptInvokerBase< SCR_BaseGameMode_PlayerIdAndEntity > GetOnPlayerDeleted()
ScriptInvokerBase< SCR_BaseGameMode_OnControllableDestroyed > GetOnPlayerKilled()
void WorldToScreen(float worldX, float worldY, out int screenPosX, out int screenPosY, bool withPan=false)
Use canvas world coords to get DPIscaled screen coords, flips the y-axis.
void PanSmooth(float panX, float panY, float panTime=0.25)
static SCR_MapEntity GetMapInstance()
Get map entity instance.
Attached to root of marker dynamic base layout.
Marker dynamic entry base.
SCR_MapMarkerManagerComponent m_MarkerMgr
Squad leader marker entry.
override void OnMapOpen(notnull SCR_MapEntity mapEnt, notnull SCR_MapMarkersUI markerUIComp)
void RegisterMarker(SCR_MapMarkerSquadLeader marker, SCR_AIGroup group)
Register marker here so it can be fetched from the map.
override void OnMapLayerChangedDynamic(notnull SCR_MapMarkerDynamicWComponent widgetComp, int layerID)
override void InitClientLogic()
override void OnMapInit(notnull SCR_MapEntity mapEnt, notnull SCR_MapMarkersUI markerUIComp)
SCR_MapToolEntry m_ToolMenuEntry
void OnGroupCustomNameChanged(SCR_AIGroup group)
SCR_AIGroup event.
void OnPlayableGroupRemoved(SCR_AIGroup group)
SCR_GroupsManagerComponent event.
void UpdateToolEntryState()
Enables/disables the map tool button for panning to your squad.
override void InitServerLogic()
void OnPlayerAdded(SCR_AIGroup group, int playerId)
SCR_AIGroup event.
SCR_AIGroup m_bCurrentSquad
void OnPlayerRemoved(SCR_AIGroup group, int playerId)
SCR_AIGroup event.
void OnPlayableGroupCreated(SCR_AIGroup group)
SCR_GroupsManagerComponent event.
void OnPlayerKilled(notnull SCR_InstigatorContextData instigatorContextData)
SCR_BaseGameMode event.
override SCR_EMapMarkerType GetMarkerType()
void OnPlayerLeaderChanged(int groupID, int playerId)
SCR_AIGroup event.
SCR_GroupsManagerComponent m_GroupsManager
void UpdateMarkerTarget(int playerID)
Update marker target, will trigger creation of a marker if within map.
void UnregisterMarker(SCR_AIGroup group)
void OnPlayerDeleted(int playerId, IEntity player)
SCR_BaseGameMode event.
void FocusCurrentSquad()
Pans the map to your own squad.
ref map< SCR_AIGroup, SCR_MapMarkerSquadLeader > m_mGroupMarkers
void OnPlayerSpawned(int playerId, IEntity player)
SCR_BaseGameMode event.
Markers UI map component.
Map tool menu entry data class.
Definition Types.c:486
proto external PlayerController GetPlayerController()
proto external int GetPlayerId()