Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_EnableDefendersAction.c
Go to the documentation of this file.
2{
3
5 protected SCR_SpawnerAIGroupManagerComponent m_GroupSpawningManager;
6
7 //------------------------------------------------------------------------------------------------
8 override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity)
9 {
11 return;
12
13 PlayerController playerController = GetGame().GetPlayerController();
14 if (!playerController)
15 return;
16
17 SCR_SpawnerRequestComponent playerReqComponent = SCR_SpawnerRequestComponent.Cast(playerController.FindComponent(SCR_SpawnerRequestComponent));
18 if (!playerReqComponent)
19 return;
20
21 playerReqComponent.EnableSpawning(m_DefenderSpawner, !m_DefenderSpawner.IsSpawningEnabled(), playerController.GetPlayerId());
22 }
23
24 //------------------------------------------------------------------------------------------------
25 override bool CanBePerformedScript(IEntity user)
26 {
27 if (m_GroupSpawningManager.IsAtAILimit())
28 {
29 SetCannotPerformReason("#AR-Campaign_Action_BuildBlocked-UC");
30 return false;
31 }
32
33 if (!m_DefenderSpawner.UserRankCheck(user))
34 {
35 string rankName;
36 FactionAffiliationComponent factionAffiliationComp = FactionAffiliationComponent.Cast(user.FindComponent(FactionAffiliationComponent));
37 if (!factionAffiliationComp)
38 return false;
39
40 SCR_Faction faction = SCR_Faction.Cast(factionAffiliationComp.GetAffiliatedFaction());
41 if (!faction)
42 return false;
43
44 rankName = faction.GetRanks().GetRankName(m_DefenderSpawner.GetMinimumRank());
45
46 SetCannotPerformReason(rankName);
47 return false;
48 }
49
50 return true;
51 }
52
53 //------------------------------------------------------------------------------------------------
54 override bool CanBeShownScript(IEntity user)
55 {
57 return false;
58
60 if (!playerController)
61 return false;
62
63 SCR_ChimeraCharacter chimeraCharacter = SCR_ChimeraCharacter.Cast(playerController.GetControlledEntity());
64 if (!chimeraCharacter || chimeraCharacter.GetFaction() != m_DefenderSpawner.GetFaction())
65 return false;
66
67 return true;
68 }
69
70 //------------------------------------------------------------------------------------------------
71 protected override bool HasLocalEffectOnlyScript()
72 {
73 return true;
74 }
75
76 //------------------------------------------------------------------------------------------------
77 override bool GetActionNameScript(out string outName)
78 {
79 if (m_DefenderSpawner.IsSpawningEnabled())
80 outName = "#AR-DefenderSpawner_DisableSpawning";
81 else
82 outName = "#AR-DefenderSpawner_EnableSpawning";
83
84 return true;
85 }
86
87 //------------------------------------------------------------------------------------------------
88 override void Init(IEntity pOwnerEntity, GenericComponent pManagerComponent)
89 {
91
92 BaseGameMode gameMode = GetGame().GetGameMode();
93 if (!gameMode)
94 return;
95
96 m_GroupSpawningManager = SCR_SpawnerAIGroupManagerComponent.Cast(gameMode.FindComponent(SCR_SpawnerAIGroupManagerComponent));
98 {
99 Print("SCR_DefenderSpawnerComponent requires SCR_SpawnerAIGroupManagerComponent attached to gamemode to work properly!", LogLevel.ERROR);
100 return;
101 }
102 }
103};
ArmaReforgerScripted GetGame()
Definition game.c:1398
void SetCannotPerformReason(string reason)
proto external Managed FindComponent(typename typeName)
Service providing group of defenders defined in faction. Requires SCR_EnableDefenderAction on ActionM...
override bool GetActionNameScript(out string outName)
override bool CanBePerformedScript(IEntity user)
override void Init(IEntity pOwnerEntity, GenericComponent pManagerComponent)
SCR_DefenderSpawnerComponent m_DefenderSpawner
SCR_SpawnerAIGroupManagerComponent m_GroupSpawningManager
override bool CanBeShownScript(IEntity user)
override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity)
SCR_RankContainer GetRanks()
string GetRankName(SCR_ECharacterRank rankID)
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
Enum with severity of the logging message.
Definition LogLevel.c:14
proto external PlayerController GetPlayerController()