Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_BuildingCampaignMilitaryBaseTaskEntity.c
Go to the documentation of this file.
4
5class SCR_BuildingCampaignMilitaryBaseTaskEntity : SCR_CampaignMilitaryBaseTaskEntity
6{
7 protected RplComponent m_RplComponent;
8
9 //------------------------------------------------------------------------------------------------
10 protected void OnCompositionUnregistered(SCR_CampaignBuildingCompositionComponent composition)
11 {
12 if (!m_MilitaryBase)
13 return;
14
15 bool areAllSpawned = AreAllCompositionsSpawned();
16
17 // all buildable composition was obviously destroyed/deleted - we are canceling the task
18 if (!areAllSpawned)
19 return;
20
21 m_TaskSystem.SetTaskState(this, SCR_ETaskState.CANCELLED);
22 DeleteTask();
23 }
24
25 //------------------------------------------------------------------------------------------------
26 protected void OnAnyCompositionSpawned()
27 {
28 if (!m_MilitaryBase)
29 return;
30
31 bool areAllSpawned = AreAllCompositionsSpawned();
32 if (!areAllSpawned)
33 return;
34
35 m_TaskSystem.SetTaskState(this, SCR_ETaskState.COMPLETED);
36 DeleteTask();
37 }
38
39 //------------------------------------------------------------------------------------------------
40 override protected void OnTargetBaseCaptured(SCR_MilitaryBaseComponent base, Faction faction)
41 {
43 return;
44
45 m_TaskSystem.SetTaskState(this, SCR_ETaskState.CANCELLED);
46 DeleteTask();
47 }
48
49 //------------------------------------------------------------------------------------------------
51 {
52 SCR_GameModeCampaign campaign = SCR_GameModeCampaign.GetInstance();
53
54 SCR_CampaignBuildingManagerComponent buildingManagerComponent = SCR_CampaignBuildingManagerComponent.Cast(campaign.FindComponent(SCR_CampaignBuildingManagerComponent));
55 if (!buildingManagerComponent)
56 return false;
57
58 array<SCR_CampaignBuildingCompositionComponent> compositions = {};
59 int compositionCount = buildingManagerComponent.GetBuildingCompositions(m_MilitaryBase, compositions);
60 foreach (SCR_CampaignBuildingCompositionComponent composition : compositions)
61 {
62 if (!composition.IsCompositionSpawned())
63 return false;
64 }
65
66 return true;
67 }
68
69 //------------------------------------------------------------------------------------------------
70 override void EOnInit(IEntity owner)
71 {
72 super.EOnInit(owner);
73
74 if (SCR_Global.IsEditMode(this))
75 return;
76
77 m_RplComponent = RplComponent.Cast(FindComponent(RplComponent));
78 if (!m_RplComponent || m_RplComponent.IsProxy())
79 return;
80
81 SCR_GameModeCampaign campaign = SCR_GameModeCampaign.GetInstance();
82
83 SCR_CampaignBuildingManagerComponent buildingManagerComponent = SCR_CampaignBuildingManagerComponent.Cast(campaign.FindComponent(SCR_CampaignBuildingManagerComponent));
84 if (!buildingManagerComponent)
85 return;
86
87 buildingManagerComponent.GetOnAnyCompositionSpawned().Insert(OnAnyCompositionSpawned);
88 buildingManagerComponent.GetOnCompositionUnregistered().Insert(OnCompositionUnregistered);
89 }
90
91 //------------------------------------------------------------------------------------------------
93 {
94 if (SCR_Global.IsEditMode(this) || !GetGame().GetGameMode())
95 return;
96
97 SCR_GameModeCampaign campaign = SCR_GameModeCampaign.GetInstance();
98 if (!campaign)
99 return;
100
101 SCR_CampaignBuildingManagerComponent buildingManagerComponent = SCR_CampaignBuildingManagerComponent.Cast(campaign.FindComponent(SCR_CampaignBuildingManagerComponent));
102 if (buildingManagerComponent)
103 {
104 buildingManagerComponent.GetOnAnyCompositionSpawned().Remove(OnAnyCompositionSpawned);
105 buildingManagerComponent.GetOnCompositionUnregistered().Remove(OnCompositionUnregistered);
106 }
107 }
108}
ArmaReforgerScripted GetGame()
Definition game.c:1398
void DeleteTask()
SCR_BaseGameMode GetGameMode()
void OnCompositionUnregistered(SCR_CampaignBuildingCompositionComponent composition)
void OnTargetBaseCaptured(SCR_MilitaryBaseComponent base, Faction faction)
void ~SCR_BuildingCampaignMilitaryBaseTaskEntity()
RplComponent m_RplComponent
SCR_CampaignMilitaryBaseComponent m_MilitaryBase
void SCR_GameModeCampaign(IEntitySource src, IEntity parent)
SCR_ETaskState
Definition SCR_Task.c:3
SCR_TaskSystem m_TaskSystem
static bool IsEditMode()
Definition Functions.c:1566
override void EOnInit(IEntity owner)