Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_EstablishBaseAIFactionCommander.c
Go to the documentation of this file.
1
[
BaseContainerProps
(),
SCR_BaseContainerCustomTitleField
(
"m_sFactionKey"
,
"%1 EstablishBaseAIFactionCommander"
)]
2
class
SCR_EstablishBaseAIFactionCommander
:
SCR_BaseAIFactionCommander
3
{
4
[
Attribute
(
"8"
,
desc
:
"AI Response time [s]"
,
params
:
"0 inf"
)]
5
protected
float
m_fResponseTime;
6
7
[
Attribute
(
""
,
UIWidgets
.ResourceNamePicker,
"Establish base task"
,
"et"
)]
8
protected
ResourceName
m_sEstablishBaseTaskPrefab
;
9
10
protected
SCR_GroupTaskManagerComponent
m_GroupTaskManager
;
11
protected
SCR_TaskSystem
m_TaskSystem
;
12
13
//------------------------------------------------------------------------------------------------
14
override
protected
void
OnAICommanderActivated
()
15
{
16
super.OnAICommanderActivated();
17
18
SCR_GameModeCampaign
gameModeCampaign =
SCR_GameModeCampaign
.Cast(
GetGame
().
GetGameMode
());
19
if
(!gameModeCampaign || !gameModeCampaign.GetEstablishingBasesEnabled())
20
return
;
21
22
if
(!
m_GroupTaskManager
|| !
m_TaskSystem
)
23
return
;
24
25
m_GroupTaskManager
.GetOnRequestedGroupTaskSet().Insert(
OnRequestedGroupTaskSet
);
26
27
array<SCR_Task> tasks = {};
28
m_TaskSystem
.GetTasksByStateFiltered(tasks,
SCR_ETaskState
.CREATED,
m_sFactionKey
, -1, SCR_EstablishBaseRequestedTaskEntity,
false
);
29
30
SCR_EstablishBaseRequestedTaskEntity requestTask;
31
int
requestedTaskCount;
32
33
// check all establish base requests and create objective for them
34
foreach
(
SCR_Task
task
: tasks)
35
{
36
requestTask = SCR_EstablishBaseRequestedTaskEntity.Cast(
task
);
37
if
(!requestTask)
38
continue
;
39
40
requestedTaskCount++;
41
42
// call later is used to delay the AI response
43
GetGame
().GetCallqueue().CallLater(
CreateTask
, m_fResponseTime * 1000 * requestedTaskCount,
false
, requestTask);
44
}
45
}
46
47
//------------------------------------------------------------------------------------------------
48
override
protected
void
OnAICommanderDeactivated
()
49
{
50
super.OnAICommanderDeactivated();
51
52
if
(!
m_GroupTaskManager
)
53
return
;
54
55
m_GroupTaskManager
.GetOnRequestedGroupTaskSet().Remove(
OnRequestedGroupTaskSet
);
56
}
57
58
//------------------------------------------------------------------------------------------------
59
protected
void
OnRequestedGroupTaskSet
(notnull
SCR_Task
task
,
int
byPlayerID,
int
requesterGroupId)
60
{
61
if
(!m_bIsAICommanderActivated)
62
return
;
63
64
SCR_Faction
faction =
SCR_Faction
.Cast(
SCR_FactionManager
.SGetPlayerFaction(byPlayerID));
65
if
(!faction || faction !=
m_Faction
)
66
return
;
67
68
SCR_EstablishBaseRequestedTaskEntity requestTask = SCR_EstablishBaseRequestedTaskEntity.Cast(
task
);
69
if
(requestTask)
70
GetGame
().GetCallqueue().CallLater(
CreateTask
, m_fResponseTime * 1000,
false
, requestTask, byPlayerID);
71
}
72
73
//------------------------------------------------------------------------------------------------
74
protected
void
CreateTask
(SCR_EstablishBaseRequestedTaskEntity requestTask,
int
playerId = -1)
75
{
76
// check if AI is still commander after delay
77
if
(!m_bIsAICommanderActivated)
78
return
;
79
80
if
(!requestTask || !
m_TaskSystem
)
81
return
;
82
83
if
(!
m_GroupTaskManager
.CanCreateNewTaskWithResourceName(
m_sEstablishBaseTaskPrefab
,
m_Faction
))
84
return
;
85
86
vector
taskPosition = requestTask.GetTaskPosition();
87
string
taskID =
string
.Format(SCR_FactionCommanderPlayerComponent.TASK_ID,
m_sFactionKey
, SCR_FactionCommanderPlayerComponent.GenerateTaskID());
88
89
SCR_Task
task
=
m_TaskSystem
.CreateTask(
m_sEstablishBaseTaskPrefab
, taskID,
""
,
""
, taskPosition, playerId);
90
if
(!
task
)
91
{
92
Print
(
"Task was not created"
,
LogLevel
.ERROR);
93
return
;
94
}
95
96
m_TaskSystem
.SetTaskOwnership(
task
, SCR_ETaskOwnership.EXECUTOR);
97
m_TaskSystem
.SetTaskVisibility(
task
,
SCR_ETaskVisibility
.GROUP);
98
m_TaskSystem
.AddTaskFaction(
task
,
m_sFactionKey
);
99
100
SCR_TaskUIInfo
taskUIInfo =
task
.GetTaskUIInfo();
101
if
(!taskUIInfo)
102
return
;
103
104
task
.SetTaskName(taskUIInfo.GetName(), {SCR_MapEntity.GetGridLabel(taskPosition)});
105
106
if
(
m_GroupTaskManager
)
107
m_GroupTaskManager
.SetGroupTask(
task
,
SCR_Faction
.
AI_COMMANDER_ID
);
108
}
109
110
//------------------------------------------------------------------------------------------------
111
override
void
Init
(notnull SCR_FactionCommanderHandlerComponent factionCommanderHandlerComponent)
112
{
113
m_TaskSystem
=
SCR_TaskSystem
.GetInstance();
114
m_GroupTaskManager
=
SCR_GroupTaskManagerComponent
.GetInstance();
115
116
super.Init(factionCommanderHandlerComponent);
117
}
118
119
//------------------------------------------------------------------------------------------------
120
override
void
Deinit
()
121
{
122
super.Deinit();
123
124
if
(!
m_GroupTaskManager
)
125
return
;
126
127
m_GroupTaskManager
.GetOnRequestedGroupTaskSet().Remove(
OnRequestedGroupTaskSet
);
128
}
129
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
BaseContainerProps
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
Definition
SCR_AIAnimationWaypoint.c:14
GetGameMode
SCR_BaseGameMode GetGameMode()
Definition
SCR_BaseGameModeComponent.c:15
SCR_BaseContainerCustomTitleField
SCR_Faction ScriptedFaction SCR_BaseContainerCustomTitleField("m_sCallsign")
Definition
SCR_Faction.c:971
SCR_FactionManager
void SCR_FactionManager(IEntitySource src, IEntity parent)
Definition
SCR_FactionManager.c:498
SCR_GameModeCampaign
void SCR_GameModeCampaign(IEntitySource src, IEntity parent)
Definition
SCR_GameModeCampaign.c:1812
SCR_GroupTaskManagerComponent
void SCR_GroupTaskManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_GroupTaskManagerComponent.c:794
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
params
category params
Definition
SCR_SpherePointGeneratorPreviewComponent.c:21
SCR_ETaskVisibility
SCR_ETaskVisibility
Definition
SCR_Task.c:24
SCR_Task
void SCR_Task(IEntitySource src, IEntity parent)
Definition
SCR_Task.c:1938
SCR_ETaskState
SCR_ETaskState
Definition
SCR_Task.c:3
task
from task
Definition
SCR_TaskNotificationConfigs.c:12
ResourceName
Definition
ResourceName.c:13
SCR_BaseAIFactionCommander
Definition
SCR_BaseAIFactionCommander.c:3
SCR_BaseAIFactionCommander::m_sFactionKey
FactionKey m_sFactionKey
Definition
SCR_BaseAIFactionCommander.c:5
SCR_BaseAIFactionCommander::m_Faction
SCR_Faction m_Faction
Definition
SCR_BaseAIFactionCommander.c:8
SCR_EstablishBaseAIFactionCommander
Definition
SCR_EstablishBaseAIFactionCommander.c:3
SCR_EstablishBaseAIFactionCommander::OnRequestedGroupTaskSet
void OnRequestedGroupTaskSet(notnull SCR_Task task, int byPlayerID, int requesterGroupId)
Definition
SCR_EstablishBaseAIFactionCommander.c:59
SCR_EstablishBaseAIFactionCommander::OnAICommanderDeactivated
void OnAICommanderDeactivated()
Definition
SCR_EstablishBaseAIFactionCommander.c:48
SCR_EstablishBaseAIFactionCommander::OnAICommanderActivated
void OnAICommanderActivated()
Definition
SCR_EstablishBaseAIFactionCommander.c:14
SCR_EstablishBaseAIFactionCommander::Init
override void Init(notnull SCR_FactionCommanderHandlerComponent factionCommanderHandlerComponent)
Definition
SCR_EstablishBaseAIFactionCommander.c:111
SCR_EstablishBaseAIFactionCommander::m_TaskSystem
SCR_TaskSystem m_TaskSystem
Definition
SCR_EstablishBaseAIFactionCommander.c:11
SCR_EstablishBaseAIFactionCommander::m_GroupTaskManager
SCR_GroupTaskManagerComponent m_GroupTaskManager
Definition
SCR_EstablishBaseAIFactionCommander.c:10
SCR_EstablishBaseAIFactionCommander::Deinit
override void Deinit()
Definition
SCR_EstablishBaseAIFactionCommander.c:120
SCR_EstablishBaseAIFactionCommander::CreateTask
void CreateTask(SCR_EstablishBaseRequestedTaskEntity requestTask, int playerId=-1)
Definition
SCR_EstablishBaseAIFactionCommander.c:74
SCR_EstablishBaseAIFactionCommander::m_sEstablishBaseTaskPrefab
ResourceName m_sEstablishBaseTaskPrefab
Definition
SCR_EstablishBaseAIFactionCommander.c:8
SCR_Faction
Definition
SCR_Faction.c:6
SCR_Faction::AI_COMMANDER_ID
static const int AI_COMMANDER_ID
Definition
SCR_Faction.c:126
SCR_TaskSystem
Definition
SCR_TaskSystem.c:6
SCR_TaskUIInfo
Definition
SCR_TaskUIInfo.c:3
UIWidgets
Definition
attributes.c:40
vector
Definition
vector.c:13
Print
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
scripts
Game
FactionCommander
AI
SCR_EstablishBaseAIFactionCommander.c
Generated by
1.17.0