Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_GameModeEditor.c
Go to the documentation of this file.
4
8{
9 [Attribute(defvalue: "1", category: "Game Mode: Editor")]
10 protected bool m_bAutoInitEditor;
11
12 [Attribute(defvalue: SCR_Enum.GetDefault(EGameModeEditorTarget.VOTE), category: "Game Mode: Editor", desc: "Who will become the Game Master?", uiwidget: UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(EGameModeEditorTarget))]
14
16 //--- Variables
19
21 //--- Public getters, anywhere
31
33 {
34 if (editorManager.GetPlayerID() == SCR_PlayerController.GetLocalPlayerId() || m_GameMasterTarget == EGameModeEditorTarget.EVERYBODY)
35 {
36 SCR_VotingManagerComponent votingManager = SCR_VotingManagerComponent.GetInstance();
37 if (votingManager)
38 {
39 votingManager.StartVoting(EVotingType.EDITOR_IN, 0, editorManager.GetPlayerID());
40 votingManager.EndVoting(EVotingType.EDITOR_IN, editorManager.GetPlayerID(), EVotingOutcome.FORCE_WIN);
41 }
42 return;
43 }
44 }
46 {
47 }
49 {
50 if (editorManager.IsLimited())
51 {
52 //--- ToDo: Show after spawn?
53 SCR_HintSequenceComponent hintSequence = SCR_HintSequenceComponent.Cast(FindComponent(SCR_HintSequenceComponent));
54 if (hintSequence)
55 GetGame().GetCallqueue().CallLater(hintSequence.StartSequence, 1000); //--- ToDo: Don't hardcode the delay?
56 }
57 //Open editor if the game has not ended
58 else if (GetState() != SCR_EGameModeState.POSTGAME)
59 {
60 editorManager.SetAutoInit(m_bAutoInitEditor);
61 }
62 }
63
64 //Limited changed, so call notification and show hint
65 protected void OnLimitedChanged(bool isLimited)
66 {
67 SCR_EditorManagerEntity editorManager = SCR_EditorManagerEntity.GetInstance();
68 if (!editorManager) return;
69
70 int playerID = editorManager.GetPlayerID();
71
72 //Became Player
73 if (isLimited)
74 {
75 SCR_NotificationsComponent.SendToEveryone(ENotification.EDITOR_PLAYER_NO_LONGER_GM, playerID);
76 }
77 //Became GM
78 else
79 {
80 SCR_NotificationsComponent.SendToEveryone(ENotification.EDITOR_PLAYER_BECAME_GM, playerID);
81 }
82 }
83 protected void OnPlayerTerminated(int playerId)
84 {
85 //--- When solo, open the editor after death
86 if (m_Core.GetEditorManager(playerId) == SCR_EditorManagerEntity.GetInstance() && GetGame().GetPlayerManager().GetPlayerCount() == 1)
87 {
89 if (!playerController || !playerController.IsPossessing())
90 SCR_EditorManagerEntity.OpenInstance();
91 }
92 }
93
95 //--- Override functions
96 override void OnPlayerKilled(int playerId, IEntity playerEntity, IEntity killerEntity, notnull Instigator killer)
97 {
98 OnPlayerTerminated(playerId);
99 super.OnPlayerKilled(playerId, playerEntity, killerEntity, killer);
100 }
101 override void OnPlayerDeleted(int playerId, IEntity player)
102 {
103 OnPlayerTerminated(playerId);
104 super.OnPlayerDeleted(playerId, player);
105 }
106 override void OnGameStart()
107 {
108 super.OnGameStart();
109
110 if (RplSession.Mode() == RplMode.Client || !m_Core)
111 return;
112
113 m_Core.Event_OnEditorManagerCreatedServer.Insert(OnEditorManagerCreatedServer);
114 m_Core.Event_OnEditorManagerDeletedServer.Insert(OnEditorManagerDeletedServer);
115
116 SCR_EditorManagerEntity localEditorManager = SCR_EditorManagerEntity.GetInstance();
117 if (localEditorManager)
118 OnEditorManagerCreatedServer(localEditorManager);
119
120 GameStatsApi statsApi = GetGame().GetStatsApi();
121 if (statsApi)
122 statsApi.EditorStart();
123 }
124 override void OnGameEnd()
125 {
126 if (RplSession.Mode() != RplMode.Client)
127 {
128 GameStatsApi statsApi = GetGame().GetStatsApi();
129 if (statsApi)
130 statsApi.EditorClosed();
131 }
132
133 super.OnGameEnd();
134 }
136 {
138 if (!m_Core) return;
139
140 m_Core.Event_OnEditorManagerInitOwner.Insert(OnEditorManagerInitOwner);
141 }
143 {
144 SCR_EditorManagerEntity editorManager = SCR_EditorManagerEntity.GetInstance();
145 if (editorManager)
146 editorManager.GetOnLimitedChange().Remove(OnLimitedChanged);
147 }
148};
149
ENotification
EVotingOutcome
EVotingType
Definition EVotingType.c:2
ArmaReforgerScripted GetGame()
Definition game.c:1398
RplMode
Mode of replication.
Definition RplMode.c:9
SCR_EGameModeState
void SCR_EditorManagerEntity(IEntitySource src, IEntity parent)
int GetPlayerCount()
EGameModeEditorTarget
@ EVERYBODY
Everyone is the Game Master.
@ VOTE
Players will vote their own Game Master.
@ NOBODY
Nobody is the Game Master.
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
void SCR_VotingManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Statistical Api - Analytics.
SCR_EGameModeState GetState()
void SCR_BaseGameMode(IEntitySource src, IEntity parent)
Core component to manage SCR_EditorManagerEntity.
EGameModeEditorTarget GetGameMasterTarget()
EGameModeEditorTarget m_GameMasterTarget
void SCR_GameModeEditor(IEntitySource src, IEntity parent)
void OnEditorManagerInitOwner(SCR_EditorManagerEntity editorManager)
override void OnGameEnd()
override void OnPlayerKilled(int playerId, IEntity playerEntity, IEntity killerEntity, notnull Instigator killer)
void OnLimitedChanged(bool isLimited)
SCR_EditorManagerCore m_Core
void OnEditorManagerCreatedServer(SCR_EditorManagerEntity editorManager)
override void OnGameStart()
void OnEditorManagerDeletedServer(SCR_EditorManagerEntity editorManager)
override void OnPlayerDeleted(int playerId, IEntity player)
void OnPlayerTerminated(int playerId)
static int GetLocalPlayerId()
Returns either a valid ID of local player or 0.
SCR_FieldOfViewSettings Attribute
proto external PlayerController GetPlayerController()