Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_BaseRequestedTaskEntity.c
Go to the documentation of this file.
1void TaskRequesterIdInvokerDelegate(SCR_BaseRequestedTaskEntity task, int requesterId);
3typedef ScriptInvokerBase<TaskRequesterIdInvokerDelegate> SCR_TaskRequesterIdInvoker;
4
8
9class SCR_BaseRequestedTaskEntity : SCR_Task
10{
11 static const int REQUEST_MAX_COUNT = 2;
12 static const int INVALID_REQUESTER_ID = -1;
13
16
17 //------------------------------------------------------------------------------------------------
25
26 //------------------------------------------------------------------------------------------------
27 void SetTaskRequesterId(int groupId)
28 {
29 Rpc(RpcDo_SetTaskRequesterId, groupId);
31 }
32
33 //------------------------------------------------------------------------------------------------
34 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
35 protected void RpcDo_SetTaskRequesterId(int groupId)
36 {
37 OnSetRequesterId(groupId);
38
41 }
42
43 //------------------------------------------------------------------------------------------------
44 protected void OnSetRequesterId(int requesterId)
45 {
46 if (!m_BaseRequestedTaskData || requesterId == INVALID_REQUESTER_ID || m_BaseRequestedTaskData.m_iRequesterId == requesterId)
47 return;
48
49 m_BaseRequestedTaskData.m_iRequesterId = requesterId;
50
52 if (taskUIInfo)
53 taskUIInfo.SetRequesterGroupId(requesterId);
54
56 m_OnRequesterIdChanged.Invoke(this, requesterId);
57 }
58
59 //------------------------------------------------------------------------------------------------
60 override protected void ReadUIInfo(ScriptBitReader reader, out SCR_TaskUIInfo info)
61 {
62 super.ReadUIInfo(reader, info);
63
64 array<LocalizedString> nameParams;
65 array<LocalizedString> descParams;
66 info.GetUnformattedName(nameParams);
67 info.GetUnformattedDescription(descParams);
68
69 info = SCR_RequestedTaskUIInfo.CreateRequestedTaskUIInfo(info.GetName(), nameParams, info.GetDescription(), descParams, info.GetImageSetPath(), info.GetIconSetName());
70 }
71
72 //------------------------------------------------------------------------------------------------
75 {
76 // commander can cancel all requests
77 if (SCR_FactionCommanderPlayerComponent.IsLocalPlayerCommander())
78 return true;
79
80 SCR_PlayerControllerGroupComponent playerControllerGroupComponent = SCR_PlayerControllerGroupComponent.GetLocalPlayerControllerGroupComponent();
81 if (!playerControllerGroupComponent)
82 return false;
83
84 // group leader can't cancel own request if a group is already assigned
85 if (m_BaseRequestedTaskData.m_aAssignees.Count() > 0 ||
87 !playerControllerGroupComponent.IsPlayerLeaderOwnGroup())
88 return false;
89
90 return true;
91 }
92
93 //------------------------------------------------------------------------------------------------
96 bool IsPlayerFromRequesterGroup(int playerId)
97 {
99 if (!comp)
100 return false;
101
102 SCR_AIGroup playerGroup = comp.GetPlayerGroup(playerId);
103 if (!playerGroup)
104 return false;
105
107 return false;
108
109 return m_BaseRequestedTaskData.m_iRequesterId == playerGroup.GetGroupID();
110 }
111
112 //------------------------------------------------------------------------------------------------
118
119 //------------------------------------------------------------------------------------------------
122 {
123 return m_BaseRequestedTaskData.m_iRequesterId;
124 }
125
126 //------------------------------------------------------------------------------------------------
127 protected void DeleteTask()
128 {
129 if (!m_TaskSystem)
130 return;
131
132 m_TaskSystem.DeleteTask(this);
133 }
134
135 //------------------------------------------------------------------------------------------------
136 override bool RplSave(ScriptBitWriter writer)
137 {
138 if (!super.RplSave(writer))
139 return false;
140
142 writer.WriteInt(m_BaseRequestedTaskData.m_iRequesterId);
143 else
144 writer.WriteInt(INVALID_REQUESTER_ID);
145
146 return true;
147 }
148
149 //------------------------------------------------------------------------------------------------
150 override bool RplLoad(ScriptBitReader reader)
151 {
152 if (!super.RplLoad(reader))
153 return false;
154
157
158 int requesterId;
159 reader.ReadInt(requesterId);
160 RpcDo_SetTaskRequesterId(requesterId);
161
162 return true;
163 }
164
165 //------------------------------------------------------------------------------------------------
166 override protected void InitializeData()
167 {
168 if (!m_TaskData)
170
171 super.InitializeData();
172
174 }
175}
override bool RplLoad(ScriptBitReader reader)
void DeleteTask()
SCR_TaskRequesterIdInvoker GetOnRequesterIdChanged()
ScriptInvokerBase< TaskRequesterIdInvokerDelegate > SCR_TaskRequesterIdInvoker
func TaskRequesterIdInvokerDelegate
void InitializeData()
void ReadUIInfo(ScriptBitReader reader, out SCR_TaskUIInfo info)
SCR_BaseRequestedTaskData m_BaseRequestedTaskData
bool RequestedByLocalPlayerGroup()
void SetTaskRequesterId(int groupId)
void RpcDo_SetTaskRequesterId(int groupId)
SCR_BaseRequestedTaskEntityClass REQUEST_MAX_COUNT
ref SCR_TaskRequesterIdInvoker m_OnRequesterIdChanged
void OnSetRequesterId(int requesterId)
bool CanBeCanceledByLocalPlayer()
bool IsPlayerFromRequesterGroup(int playerId)
override bool RplSave(ScriptBitWriter writer)
void SCR_GroupsManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
void SCR_Task(IEntitySource src, IEntity parent)
Definition SCR_Task.c:1938
ref SCR_TaskData m_TaskData
Definition SCR_Task.c:110
ref ScriptInvokerVoid m_OnDisplayDataChanged
Definition SCR_Task.c:133
SCR_TaskSystem m_TaskSystem
int GetGroupID()
static int GetLocalPlayerId()
Returns either a valid ID of local player or 0.
static SCR_RequestedTaskUIInfo CreateRequestedTaskUIInfo(LocalizedString name, array< LocalizedString > nameParams, LocalizedString description, array< LocalizedString > descParams, ResourceName icon=ResourceName.Empty, string iconSetName=string.Empty, int requesterGroupId=0)
void SetRequesterGroupId(int groupId)
void RplRpc(RplChannel channel, RplRcver rcver, RplCondition condition=RplCondition.None, string customConditionName="")
Definition EnNetwork.c:95
RplRcver
Definition RplRcver.c:59
RplChannel
Communication channel. Reliable is guaranteed to be delivered. Unreliable not.
Definition RplChannel.c:14