Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
C:/tmp/scripts_Arma_Reforger_v1.1.0.42/scripts/Game/GameMode/SCR_GameModeEditor.c
{
};
{
[Attribute(defvalue: "1", category: "Game Mode: Editor")]
protected bool m_bAutoInitEditor;
[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))]
protected EGameModeEditorTarget m_GameMasterTarget;
//--- Variables
protected int m_iPersistentGameMasterPlayerID;
protected SCR_EditorManagerCore m_Core;
//--- Public getters, anywhere
EGameModeEditorTarget GetGameMasterTarget()
{
return m_GameMasterTarget;
}
protected void OnEditorManagerCreatedServer(SCR_EditorManagerEntity editorManager)
{
if (editorManager.GetPlayerID() == SCR_PlayerController.GetLocalPlayerId() || m_GameMasterTarget == EGameModeEditorTarget.EVERYBODY)
{
if (votingManager)
{
votingManager.StartVoting(EVotingType.EDITOR_IN, editorManager.GetPlayerID());
votingManager.EndVoting(EVotingType.EDITOR_IN, editorManager.GetPlayerID(), EVotingOutcome.FORCE_WIN);
}
return;
}
}
protected void OnEditorManagerDeletedServer(SCR_EditorManagerEntity editorManager)
{
}
protected void OnEditorManagerInitOwner(SCR_EditorManagerEntity editorManager)
{
if (editorManager.IsLimited())
{
//--- ToDo: Show after spawn?
SCR_HintSequenceComponent hintSequence = SCR_HintSequenceComponent.Cast(FindComponent(SCR_HintSequenceComponent));
if (hintSequence)
GetGame().GetCallqueue().CallLater(hintSequence.StartSequence, 1000); //--- ToDo: Don't hardcode the delay?
}
//Open editor if the game has not ended
else if (GetState() != SCR_EGameModeState.POSTGAME)
{
editorManager.SetAutoInit(m_bAutoInitEditor);
}
}
//Limited changed, so call notification and show hint
protected void OnLimitedChanged(bool isLimited)
{
SCR_EditorManagerEntity editorManager = SCR_EditorManagerEntity.GetInstance();
if (!editorManager) return;
int playerID = editorManager.GetPlayerID();
//Became Player
if (isLimited)
{
SCR_NotificationsComponent.SendToEveryone(ENotification.EDITOR_PLAYER_NO_LONGER_GM, playerID);
}
//Became GM
else
{
SCR_NotificationsComponent.SendToEveryone(ENotification.EDITOR_PLAYER_BECAME_GM, playerID);
}
}
protected void OnPlayerTerminated(int playerId)
{
//--- When solo, open the editor after death
if (m_Core.GetEditorManager(playerId) == SCR_EditorManagerEntity.GetInstance() && GetGame().GetPlayerManager().GetPlayerCount() == 1)
{
if (!playerController || !playerController.IsPossessing())
SCR_EditorManagerEntity.OpenInstance();
}
}
//--- Override functions
override void OnPlayerKilled(int playerId, IEntity playerEntity, IEntity killerEntity, notnull Instigator killer)
{
OnPlayerTerminated(playerId);
super.OnPlayerKilled(playerId, playerEntity, killerEntity, killer);
}
override void OnPlayerDeleted(int playerId, IEntity player)
{
OnPlayerTerminated(playerId);
super.OnPlayerDeleted(playerId, player);
}
override void OnGameStart()
{
super.OnGameStart();
if (RplSession.Mode() == RplMode.Client || !m_Core)
return;
m_Core.Event_OnEditorManagerCreatedServer.Insert(OnEditorManagerCreatedServer);
m_Core.Event_OnEditorManagerDeletedServer.Insert(OnEditorManagerDeletedServer);
SCR_EditorManagerEntity localEditorManager = SCR_EditorManagerEntity.GetInstance();
if (localEditorManager)
OnEditorManagerCreatedServer(localEditorManager);
GameStatsApi statsApi = GetGame().GetStatsApi();
if (statsApi)
statsApi.EditorStart();
}
override void OnGameEnd()
{
if (RplSession.Mode() != RplMode.Client)
{
GameStatsApi statsApi = GetGame().GetStatsApi();
if (statsApi)
statsApi.EditorClosed();
}
super.OnGameEnd();
}
void SCR_GameModeEditor(IEntitySource src, IEntity parent)
{
if (!m_Core) return;
m_Core.Event_OnEditorManagerInitOwner.Insert(OnEditorManagerInitOwner);
}
{
SCR_EditorManagerEntity editorManager = SCR_EditorManagerEntity.GetInstance();
if (editorManager)
editorManager.GetOnLimitedChange().Remove(OnLimitedChanged);
}
};
{
VOTE,
};
SCR_BaseGameMode
Definition: SCR_BaseGameMode.c:137
GetState
EEditableEntityState GetState()
Definition: SCR_BaseEntitiesEditorUIEffect.c:7
SCR_PlayerController
Definition: SCR_PlayerController.c:31
SCR_Enum
Definition: SCR_Enum.c:1
GetGame
ArmaReforgerScripted GetGame()
Definition: game.c:1424
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition: SCR_RespawnBriefingComponent.c:17
GetPlayerController
proto external PlayerController GetPlayerController()
Definition: SCR_PlayerDeployMenuHandlerComponent.c:307
Instigator
Definition: Instigator.c:6
VOTE
@ VOTE
Players will vote their own Game Master.
Definition: SCR_GameModeEditor.c:152
ENotification
ENotification
Definition: ENotification.c:4
NOBODY
@ NOBODY
Nobody is the Game Master.
Definition: SCR_GameModeEditor.c:154
Attribute
typedef Attribute
Post-process effect of scripted camera.
SCR_EditorManagerCore
Core component to manage SCR_EditorManagerEntity.
Definition: SCR_EditorManagerCore.c:5
EVERYBODY
@ EVERYBODY
Everyone is the Game Master.
Definition: SCR_GameModeEditor.c:153
SCR_BaseGameModeClass
Definition: SCR_BaseGameMode.c:12
SCR_GameModeEditorClass
Definition: SCR_GameModeEditor.c:1
EVotingType
EVotingType
Definition: EVotingType.c:1
GameStatsApi
Statistical Api - Analytics.
Definition: GameStatsApi.c:13
SCR_VotingManagerComponent
void SCR_VotingManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition: SCR_VotingManagerComponent.c:878
GetPlayerCount
int GetPlayerCount()
Definition: SCR_Faction.c:365
EGameModeEditorTarget
EGameModeEditorTarget
Definition: SCR_GameModeEditor.c:150
SCR_EGameModeState
SCR_EGameModeState
Definition: SCR_EGameModeState.c:4
EVotingOutcome
EVotingOutcome
Definition: EVotingOutcome.c:1
SCR_GameModeEditor
Definition: SCR_GameModeEditor.c:7
category
params category
Definition: SCR_VehicleDamageManagerComponent.c:180
SCR_EditorManagerEntity
Definition: SCR_EditorManagerEntity.c:26