Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_FactionAliasComponent.c
Go to the documentation of this file.
1/*
2The faction alias component allows using a mission specific alias for a side when placing down unit spawning slots.
3The mission creator or admin playing the mission can quickly change which factions each alias represents.
4*/
5
6[ComponentEditorProps(category: "GameScripted/FactionManager/Components", description: "Base for FactionManager scripted component.")]
10
11class SCR_FactionAliasComponent : ScriptComponent
12{
13 [Attribute(desc: "Global faction aliases to allow quick switching of factions for slots.")]
14 ref array<ref SCR_ScenarioFrameworkFactionAliasConfig> m_aFactionAliases;
15
17
18 static SCR_FactionAliasComponent m_FactionAliasComponentInstanceForWB;
19
20
21 //------------------------------------------------------------------------------------------------
23 override void OnPostInit(IEntity owner)
24 {
26 }
27
28
29 //------------------------------------------------------------------------------------------------
32 {
33 m_mAliasToFactionKeyMap.Clear();
34 foreach (SCR_ScenarioFrameworkFactionAliasConfig aliasConfig : m_aFactionAliases)
35 {
36 m_mAliasToFactionKeyMap.Set(aliasConfig.m_sAlias, aliasConfig);
37 }
38
39 SCR_MissionHeader header = SCR_MissionHeader.Cast(GetGame().GetMissionHeader());
40 if (!header)
41 return;
42
44 if (!scenarioFrameworkHeader)
45 return;
46
47 foreach (SCR_ScenarioFrameworkFactionAliasConfig aliasConfig : scenarioFrameworkHeader.m_aFactionAliases)
48 {
49 m_mAliasToFactionKeyMap.Set(aliasConfig.m_sAlias, aliasConfig);
50 }
51 }
52
53 //------------------------------------------------------------------------------------------------
59
60 //------------------------------------------------------------------------------------------------
65 {
67 if (m_mAliasToFactionKeyMap.Find(inputFactionKey, aliasConfig))
68 return aliasConfig.m_sFactionKey;
69 else
70 return inputFactionKey;
71 }
72
73 //------------------------------------------------------------------------------------------------
74 array<string> GetAllFactionKeyAliases(FactionKey inputFactionKey)
75 {
76 array<ref SCR_ScenarioFrameworkFactionAliasConfig> aliasConfigs = SCR_MapHelperT<FactionKey, ref SCR_ScenarioFrameworkFactionAliasConfig>.GetElements(m_mAliasToFactionKeyMap);
77 array<string> aliases = {};
78
79 foreach (SCR_ScenarioFrameworkFactionAliasConfig config : aliasConfigs)
80 {
81 if (config.m_sFactionKey == inputFactionKey)
82 aliases.Insert(config.m_sAlias);
83 }
84
85 return aliases;
86 }
87
88 //------------------------------------------------------------------------------------------------
93 override void _WB_OnInit(IEntity owner, inout vector mat[4], IEntitySource src)
94 {
95 m_FactionAliasComponentInstanceForWB = this;
96 }
97
98 //------------------------------------------------------------------------------------------------
102 static SCR_FactionAliasComponent GetFactionAliasComponentForWB()
103 {
104#ifndef WORKBENCH
105 Print("ScenarioFramework [SCR_FactionAliasComponent] GetFactionAliasComponentForWB called outside of WORKBENCH. In game time, use `GetGame().GetFactionManager().FindComponent(SCR_FactionAliasComponent)`", LogLevel.WARNING);
106#endif
107 return m_FactionAliasComponentInstanceForWB;
108 }
109}
ArmaReforgerScripted GetGame()
Definition game.c:1398
enum EAIGroupCombatMode ComponentEditorProps(category:"GameScripted/AI", description:"Component for utility AI system for groups")
override void _WB_OnInit(IEntity owner, inout vector mat[4], IEntitySource src)
map< FactionKey, ref SCR_ScenarioFrameworkFactionAliasConfig > GetFactionAliasMap()
void InitAliasMap()
Initializes alias map from both component instance and overriden by the mission header.
FactionKey ResolveFactionAlias(FactionKey inputFactionKey)
array< string > GetAllFactionKeyAliases(FactionKey inputFactionKey)
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition Types.c:486
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
SCR_FieldOfViewSettings Attribute