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
class
SCR_GameModeEditorClass
:
SCR_BaseGameModeClass
{
};
class
SCR_GameModeEditor
:
SCR_BaseGameMode
{
[
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)
{
SCR_VotingManagerComponent
votingManager =
SCR_VotingManagerComponent
.GetInstance();
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)
{
SCR_PlayerController
playerController =
SCR_PlayerController
.Cast(
GetGame
().
GetPlayerController
());
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)
{
m_Core =
SCR_EditorManagerCore
.Cast(
SCR_EditorManagerCore
.GetInstance(
SCR_EditorManagerCore
));
if
(!m_Core)
return
;
m_Core.
Event_OnEditorManagerInitOwner.Insert(OnEditorManagerInitOwner);
}
void
~
SCR_GameModeEditor
()
{
SCR_EditorManagerEntity
editorManager =
SCR_EditorManagerEntity
.GetInstance();
if
(editorManager)
editorManager.
GetOnLimitedChange().Remove(OnLimitedChanged);
}
};
enum
EGameModeEditorTarget
{
VOTE
,
EVERYBODY
,
NOBODY
};
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
Generated by
1.8.17