Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_TaskSystemNetworkComponent.c
Go to the documentation of this file.
4
5class SCR_TaskSystemNetworkComponent : ScriptComponent
6{
8 protected PlayerController m_PlayerController;
9 protected RplComponent m_RplComponent;
10
11 //------------------------------------------------------------------------------------------------
17 void AssignTask(SCR_Task task, SCR_TaskExecutor executor, bool force = false, int requesterID = 0)
18 {
19 if (!task || !executor)
20 return;
21
22 if (!m_RplComponent.IsProxy())
23 {
24 AssignTask_S(task.GetTaskID(), executor, force, requesterID);
25 return;
26 }
27
28 SCR_TaskExecutorPlayer executorPlayer = SCR_TaskExecutorPlayer.Cast(executor);
29 if (executorPlayer)
30 {
31 Rpc(Rpc_AssignTaskPlayer_S, task.GetTaskID(), executorPlayer, force, requesterID);
32 return;
33 }
34
35 SCR_TaskExecutorEntity executorEntity = SCR_TaskExecutorEntity.Cast(executor);
36 if (executorEntity)
37 {
38 Rpc(Rpc_AssignTaskEntity_S, task.GetTaskID(), executorEntity, force, requesterID);
39 return;
40 }
41
42 SCR_TaskExecutorGroup executorGroup = SCR_TaskExecutorGroup.Cast(executor);
43 if (executorGroup)
44 Rpc(Rpc_AssignTaskGroup_S, task.GetTaskID(), executorGroup, force, requesterID);
45 }
46
47 //------------------------------------------------------------------------------------------------
48 protected void AssignTask_S(string taskID, SCR_TaskExecutor executor, bool force, int requesterID)
49 {
50 if (!m_TaskSystem)
51 return;
52
53 SCR_Task task = m_TaskSystem.GetTaskFromTaskID(taskID);
54 if (!task)
55 return;
56
57 m_TaskSystem.AssignTask(task, executor, force, requesterID);
58 }
59
60 //------------------------------------------------------------------------------------------------
61 [RplRpc(RplChannel.Reliable, RplRcver.Server)]
62 protected void Rpc_AssignTaskPlayer_S(string taskID, SCR_TaskExecutorPlayer executor, bool force, int requesterID)
63 {
64 AssignTask_S(taskID, executor, force, requesterID);
65 }
66
67 //------------------------------------------------------------------------------------------------
68 [RplRpc(RplChannel.Reliable, RplRcver.Server)]
69 protected void Rpc_AssignTaskEntity_S(string taskID, SCR_TaskExecutorEntity executor, bool force, int requesterID)
70 {
71 AssignTask_S(taskID, executor, force, requesterID);
72 }
73
74 //------------------------------------------------------------------------------------------------
75 [RplRpc(RplChannel.Reliable, RplRcver.Server)]
76 protected void Rpc_AssignTaskGroup_S(string taskID, SCR_TaskExecutorGroup executor, bool force, int requesterID)
77 {
78 AssignTask_S(taskID, executor, force, requesterID);
79 }
80
81 //------------------------------------------------------------------------------------------------
86 void UnassignTask(SCR_Task task, SCR_TaskExecutor executor, int requesterID = 0)
87 {
88 if (!task || !executor)
89 return;
90
91 if (!m_RplComponent.IsProxy())
92 {
93 UnassignTask_S(task.GetTaskID(), executor, requesterID);
94 return;
95 }
96
97 SCR_TaskExecutorPlayer executorPlayer = SCR_TaskExecutorPlayer.Cast(executor);
98 if (executorPlayer)
99 {
100 Rpc(Rpc_UnassignTaskPlayer_S, task.GetTaskID(), executorPlayer, requesterID);
101 return;
102 }
103
104 SCR_TaskExecutorEntity executorEntity = SCR_TaskExecutorEntity.Cast(executor);
105 if (executorEntity)
106 {
107 Rpc(Rpc_UnassignTaskEntity_S, task.GetTaskID(), executorEntity, requesterID);
108 return;
109 }
110
111 SCR_TaskExecutorGroup executorGroup = SCR_TaskExecutorGroup.Cast(executor);
112 if (executorGroup)
113 Rpc(Rpc_UnassignTaskGroup_S, task.GetTaskID(), executorGroup, requesterID);
114 }
115
116 //------------------------------------------------------------------------------------------------
117 protected void UnassignTask_S(string taskID, SCR_TaskExecutor executor, int requesterID)
118 {
119 if (!m_TaskSystem)
120 return;
121
122 SCR_Task task = m_TaskSystem.GetTaskFromTaskID(taskID);
123 if (!task)
124 return;
125
126 m_TaskSystem.UnassignTask(task, executor, requesterID);
127 }
128
129 //------------------------------------------------------------------------------------------------
130 [RplRpc(RplChannel.Reliable, RplRcver.Server)]
131 protected void Rpc_UnassignTaskPlayer_S(string taskID, SCR_TaskExecutorPlayer executor, int requesterID)
132 {
133 UnassignTask_S(taskID, executor, requesterID);
134 }
135
136 //------------------------------------------------------------------------------------------------
137 [RplRpc(RplChannel.Reliable, RplRcver.Server)]
138 protected void Rpc_UnassignTaskEntity_S(string taskID, SCR_TaskExecutorEntity executor, int requesterID)
139 {
140 UnassignTask_S(taskID, executor, requesterID);
141 }
142
143 //------------------------------------------------------------------------------------------------
144 [RplRpc(RplChannel.Reliable, RplRcver.Server)]
145 protected void Rpc_UnassignTaskGroup_S(string taskID, SCR_TaskExecutorGroup executor, int requesterID)
146 {
147 UnassignTask_S(taskID, executor, requesterID);
148 }
149
150 //------------------------------------------------------------------------------------------------
151 override void EOnInit(IEntity owner)
152 {
155 {
156 Print("SCR_TaskSystemNetworkComponent must be attached to SCR_PlayerController!", LogLevel.ERROR);
157 return;
158 }
159
160 m_TaskSystem = SCR_TaskSystem.GetInstance();
161 m_RplComponent = RplComponent.Cast(owner.FindComponent(RplComponent));
162 }
163
164 //------------------------------------------------------------------------------------------------
165 override void OnPostInit(IEntity owner)
166 {
167 super.OnPostInit(owner);
168 SetEventMask(owner, EntityEvent.INIT);
169 }
170}
RplComponent m_RplComponent
SCR_FastTravelComponentClass m_PlayerController
void SCR_Task(IEntitySource src, IEntity parent)
Definition SCR_Task.c:1938
SCR_TaskSystem m_TaskSystem
void UnassignTask_S(string taskID, SCR_TaskExecutor executor, int requesterID)
void Rpc_UnassignTaskEntity_S(string taskID, SCR_TaskExecutorEntity executor, int requesterID)
void AssignTask(SCR_Task task, SCR_TaskExecutor executor, bool force=false, int requesterID=0)
void Rpc_AssignTaskPlayer_S(string taskID, SCR_TaskExecutorPlayer executor, bool force, int requesterID)
void Rpc_UnassignTaskGroup_S(string taskID, SCR_TaskExecutorGroup executor, int requesterID)
void AssignTask_S(string taskID, SCR_TaskExecutor executor, bool force, int requesterID)
void Rpc_UnassignTaskPlayer_S(string taskID, SCR_TaskExecutorPlayer executor, int requesterID)
void UnassignTask(SCR_Task task, SCR_TaskExecutor executor, int requesterID=0)
void Rpc_AssignTaskGroup_S(string taskID, SCR_TaskExecutorGroup executor, bool force, int requesterID)
void Rpc_AssignTaskEntity_S(string taskID, SCR_TaskExecutorEntity executor, bool force, int requesterID)
proto external int SetEventMask(notnull IEntity owner, int mask)
void Rpc(func method, void p0=NULL, void p1=NULL, void p2=NULL, void p3=NULL, void p4=NULL, void p5=NULL, void p6=NULL, void p7=NULL)
proto external Managed FindComponent(typename typeName)
void EOnInit(IEntity owner)
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
EntityEvent
Various entity events.
Definition EntityEvent.c:14
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