DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionBuildShelter.c
См. документацию.
2{
7
9 {
11 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DEPLOY_2HD;
12 m_FullBody = true;
13 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
14 m_Text = "#build_shelter_leather";
15 }
16
21
23 {
26 }
27
28 override string GetText()
29 {
30 PlayerBase player = PlayerBase.Cast( GetGame().GetPlayer() );
31 if ( player )
32 {
33 ConstructionActionData construction_action_data = player.GetConstructionActionData();
34 ConstructionPart constrution_part = construction_action_data.GetBuildPartNoToolAtIndex(m_VariantID);
35
36 if ( constrution_part )
37 {
38 string ret = "";
39 switch (constrution_part.GetName())
40 {
41 case "leather":
42 ret = "#build_shelter_leather";
43 break;
44
45 case "fabric":
46 ret = "#build_shelter_fabric";
47 break;
48
49 case "stick":
50 ret = "#build_shelter_stick";
51 break;
52 }
53 }
54 }
55
56 return ret;
57 }
58
59 override void OnActionInfoUpdate( PlayerBase player, ActionTarget target, ItemBase item )
60 {
61 ConstructionActionData construction_action_data = player.GetConstructionActionData();
62 ConstructionPart constrution_part = construction_action_data.GetBuildPartNoToolAtIndex(m_VariantID);
63
64 if ( constrution_part )
65 {
66 switch (constrution_part.GetName())
67 {
68 case "leather":
69 m_Text = "#build_shelter_leather";
70 break;
71
72 case "fabric":
73 m_Text = "#build_shelter_fabric";
74 break;
75
76 case "stick":
77 m_Text = "#build_shelter_stick";
78 break;
79 }
80 }
81 }
82
83 override bool CanBeUsedLeaning()
84 {
85 return false;
86 }
87
88 override typename GetInputType()
89 {
91 }
92
93 override bool UseMainItem()
94 {
95 return false;
96 }
97
98 override bool HasProgress()
99 {
100 return true;
101 }
102
104 {
105 return false;
106 }
107
108 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
109 {
110 //Action not allowed if player has broken legs
111 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
112 return false;
113
114 if (target.GetObject() && !target.GetObject().CanUseConstructionBuild())
115 return false;
116 if ( player.IsPlacingLocal() || player.IsPlacingServer() )
117 return false;
118
119 if ( (!GetGame().IsDedicatedServer()) )
120 {
121 if ( MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item, m_VariantID ) )
122 {
123 return true;
124 }
125 return false;
126 }
127 return true;
128 }
129
130 //setup
131 override bool SetupAction( PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL )
132 {
133 if ( super.SetupAction( player, target, item, action_data, extra_data ) )
134 {
135 if ( !GetGame().IsDedicatedServer() )
136 {
137 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
138 BuildPartActionData.Cast(action_data).m_PartType = construction_action_data.GetBuildPartNoToolAtIndex(m_VariantID).GetPartName();
139 }
140 return true;
141 }
142
143 return false;
144 }
145
147 {
148 BuildPartActionData action_data = new BuildPartActionData;
149 return action_data;
150 }
151
152 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
153 {
154 super.WriteToContext(ctx, action_data);
155
156 ctx.Write(BuildPartActionData.Cast(action_data).m_PartType);
157 }
158
159 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data )
160 {
161 action_recive_data = new BuildPartActionReciveData;
162 super.ReadFromContext(ctx, action_recive_data);
163
164 string part_type;
165 if ( ctx.Read(part_type) )
166 {
167 BuildPartActionReciveData.Cast( action_recive_data ).m_PartType = part_type;
168 return true;
169 }
170 else
171 {
172 return false;
173 }
174 }
175
176 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
177 {
178 super.HandleReciveData(action_recive_data, action_data);
179
180 BuildPartActionData.Cast(action_data).m_PartType = BuildPartActionReciveData.Cast( action_recive_data ).m_PartType;
181 }
182
183 override bool ActionConditionContinue( ActionData action_data )
184 {
185 BaseBuildingBase base_building = BaseBuildingBase.Cast( action_data.m_Target.GetObject() );
186 Construction construction = base_building.GetConstruction();
187 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
188 CollisionCheckData check_data = new CollisionCheckData;
189
190 check_data.m_PartName = part_name;
191 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
192
193 return !construction.IsCollidingEx( check_data ) && construction.CanBuildPart( part_name, action_data.m_MainItem, false );
194 }
195
196 override void OnStart( ActionData action_data )
197 {
198 super.OnStart(action_data);
199 action_data.m_Player.TryHideItemInHands(true);
200 }
201
202 override void OnStartClient( ActionData action_data )
203 {
204 super.OnStartClient(action_data);
205
206 DetermineConstructionSounds(action_data);
207 PlayActionStartSound(action_data);
208 }
209
210 override void OnStartAnimationLoopClient( ActionData action_data )
211 {
212 super.OnStartAnimationLoopClient(action_data);
213
214 PlayActionLoopSound(action_data);
215 }
216
217 override void OnEnd( ActionData action_data )
218 {
219 super.OnEnd(action_data);
220 action_data.m_Player.TryHideItemInHands(false);
221 }
222
223 override void OnEndClient( ActionData action_data )
224 {
225 super.OnEndClient(action_data);
226
228 //DestroyActionLoopSound();
229 }
230
231 override void OnFinishProgressServer( ActionData action_data )
232 {
233 BaseBuildingBase base_building = BaseBuildingBase.Cast( action_data.m_Target.GetObject() );
234 Construction construction = base_building.GetConstruction();
235
236 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
237
238 if ( !construction.IsColliding( part_name ) && construction.CanBuildPart( part_name, action_data.m_MainItem, false ) )
239 {
240 //build
241 construction.BuildPartServer( action_data.m_Player, part_name, AT_BUILD_PART );
242 }
243 }
244
245 override void OnFinishProgressClient( ActionData action_data )
246 {
247 super.OnFinishProgressClient(action_data);
248
249 PlayActionFinishSound(action_data);
250 }
251
253 {
254 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
255 ConstructionPart constrution_part = construction_action_data.GetBuildPartNoToolAtIndex(m_VariantID);;
256 if (constrution_part)
257 {
258 switch (constrution_part.GetName())
259 {
260 case "leather":
261 m_SoundsetBuildStart = "Shelter_Leather_Build_Start_SoundSet";
262 m_SoundsetBuildLoop = "Shelter_Leather_Build_Loop_SoundSet";
263 m_SoundsetBuildFinish = "Shelter_Leather_Build_Finish_SoundSet";
264 break;
265
266 case "fabric":
267 m_SoundsetBuildStart = "Shelter_Fabric_Build_Start_SoundSet";
268 m_SoundsetBuildLoop = "Shelter_Fabric_Build_Loop_SoundSet";
269 m_SoundsetBuildFinish = "Shelter_Fabric_Build_Finish_SoundSet";
270 break;
271
272 case "stick":
273 m_SoundsetBuildStart = "Shelter_Wooden_Stick_Build_Start_SoundSet";
274 m_SoundsetBuildLoop = "Shelter_Wooden_Stick_Build_Loop_SoundSet";
275 m_SoundsetBuildFinish = "Shelter_Wooden_Stick_Build_Finish_SoundSet";
276 break;
277
278 default:
282 break;
283 }
284 }
285 }
286
288 {
289 EffectSound sound = SEffectManager.PlaySound(m_SoundsetBuildStart, action_data.m_Target.GetObject().GetPosition());
290 sound.SetAutodestroy( true );
291 }
292
293 void PlayActionLoopSound( ActionData action_data )
294 {
295 if ( !m_BuildLoopSound || !m_BuildLoopSound.IsSoundPlaying() )
296 {
297 m_BuildLoopSound = SEffectManager.PlaySound( m_SoundsetBuildLoop, action_data.m_Target.GetObject().GetPosition(), 0, 0, true );
298 }
299 }
300
302 {
304 {
305 m_BuildLoopSound.SetSoundFadeOut(0.5);
306 m_BuildLoopSound.SoundStop();
307 }
308 }
309
314
316 {
317 EffectSound sound = SEffectManager.PlaySound(m_SoundsetBuildFinish, action_data.m_Target.GetObject().GetPosition());
318 sound.SetAutodestroy( true );
319 }
320
321 override string GetSoundCategory(ActionData action_data)
322 {
323 return "Base_building";
324 }
325}
const int AT_BUILD_PART
Определения _constants.c:6
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
void CollisionCheckData()
Определения Construction.c:1329
void Construction(BaseBuildingBase parent)
Определения Construction.c:26
eBrokenLegs
Определения EBrokenLegs.c:2
PlayerBase GetPlayer()
Определения ModifierBase.c:51
int m_StanceMask
Определения ActionBase.c:62
string m_Text
Определения ActionBase.c:58
int m_VariantID
Определения ActionBase.c:68
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
bool m_FullBody
Определения ActionBase.c:61
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
void DetermineConstructionSounds(ActionData action_data)
Определения ActionBuildShelter.c:252
override bool UseMainItem()
Определения ActionBuildShelter.c:93
void StopActionLoopSound()
Определения ActionBuildShelter.c:301
void DestroyActionLoopSound()
Определения ActionBuildShelter.c:310
void PlayActionLoopSound(ActionData action_data)
Определения ActionBuildShelter.c:293
override string GetSoundCategory(ActionData action_data)
Определения ActionBuildShelter.c:321
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionBuildShelter.c:152
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBuildShelter.c:108
string m_SoundsetBuildLoop
Определения ActionBuildShelter.c:4
override void OnEndClient(ActionData action_data)
Определения ActionBuildShelter.c:223
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBuildShelter.c:59
void ~ActionBuildShelter()
Определения ActionBuildShelter.c:17
override bool ActionConditionContinue(ActionData action_data)
Определения ActionBuildShelter.c:183
string m_SoundsetBuildFinish
Определения ActionBuildShelter.c:5
override void OnStartAnimationLoopClient(ActionData action_data)
Определения ActionBuildShelter.c:210
override void OnEnd(ActionData action_data)
Определения ActionBuildShelter.c:217
override bool HasAlternativeInterrupt()
Определения ActionBuildShelter.c:103
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionBuildShelter.c:131
override void OnStart(ActionData action_data)
Определения ActionBuildShelter.c:196
override void OnStartClient(ActionData action_data)
Определения ActionBuildShelter.c:202
override GetInputType()
Определения ActionBuildShelter.c:88
override bool CanBeUsedLeaning()
Определения ActionBuildShelter.c:83
void ActionBuildShelter()
Определения ActionBuildShelter.c:8
override void OnFinishProgressServer(ActionData action_data)
Определения ActionBuildShelter.c:231
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionBuildShelter.c:159
void PlayActionStartSound(ActionData action_data)
Определения ActionBuildShelter.c:287
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionBuildShelter.c:176
override void OnFinishProgressClient(ActionData action_data)
Определения ActionBuildShelter.c:245
override void CreateConditionComponents()
Определения ActionBuildShelter.c:22
override string GetText()
Определения ActionBuildShelter.c:28
EffectSound m_BuildLoopSound
Определения ActionBuildShelter.c:6
void PlayActionFinishSound(ActionData action_data)
Определения ActionBuildShelter.c:315
override ActionData CreateActionData()
Определения ActionBuildShelter.c:146
override bool HasProgress()
Определения ActionBuildShelter.c:98
string m_SoundsetBuildStart
Определения ActionBuildShelter.c:3
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
int m_CommandUID
Определения AnimatedActionBase.c:143
Определения Fence.c:2
string m_PartType
Определения ActionBuildPart.c:3
Определения CCINone.c:2
Определения CCTCursor.c:2
ConstructionPart GetBuildPartNoToolAtIndex(int idx)
Определения ConstructionActionData.c:193
string GetPartName()
Определения ConstructionPart.c:30
string GetName()
Определения ConstructionPart.c:24
override void SetAutodestroy(bool auto_destroy)
Sets whether Effect automatically cleans up when it stops.
Определения EffectSound.c:603
Wrapper class for managing sound through SEffectManager.
Определения EffectSound.c:5
Определения InventoryItem.c:731
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения PlayerBaseClient.c:2
static EffectSound PlaySound(string sound_set, vector position, float play_fade_in=0, float stop_fade_out=0, bool loop=false)
Create and play an EffectSound.
Определения EffectManager.c:169
static void DestroyEffect(Effect effect)
Unregisters, stops and frees the Effect.
Определения EffectManager.c:271
Manager class for managing Effect (EffectParticle, EffectSound)
Определения EffectManager.c:6
proto bool Write(void value_out)
proto bool Read(void value_in)
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
Serializer ParamsWriteContext
Определения gameplay.c:16
proto void Insert(int index, string input)
Inserts a string into the n-th index, increasing the string length by the size of the input.