DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ SetBuildingAnimation()

void GetInputType::SetBuildingAnimation ( ItemBase item)
protected

См. определение в файле ActionBuildPart.c строка 361

361 : ActionReciveData
362{
363 string m_PartType;
364}
365
366class BuildPartActionData : ActionData
367{
368 string m_PartType;
369};
370
372{
373 override void CreateActionComponent()
374 {
375 float time = SetCallbackDuration(m_ActionData.m_MainItem);
376 m_ActionData.m_ActionComponent = new CAContinuousTime(time);
377 }
378
379 float SetCallbackDuration(ItemBase item)
380 {
381 return UATimeSpent.BASEBUILDING_CONSTRUCT_MEDIUM;
382 }
383};
384
386{
387 void ActionBuildPart()
388 {
389 m_CallbackClass = ActionBuildPartCB;
390 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
391 m_FullBody = true;
392 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
393
394 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
395 m_Text = "#build";
396 }
397
398 override void CreateConditionComponents()
399 {
400 m_ConditionItem = new CCINonRuined;
401 m_ConditionTarget = new CCTNone;
402 }
403
404 override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
405 {
406 ConstructionActionData construction_action_data = player.GetConstructionActionData();
407 ConstructionPart constrution_part = construction_action_data.GetBuildPartAtIndex(m_VariantID);
408
409 if (constrution_part)
410 {
411 m_Text = "#build " + constrution_part.GetName();
412 }
413 }
414
415 override bool CanBeUsedLeaning()
416 {
417 return false;
418 }
419
420 override bool CanBeUsedInFreelook()
421 {
422 return false;
423 }
424
425 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
426 {
427 if (player.IsPlacingLocal() || player.IsPlacingServer())
428 return false;
429
430 //Action not allowed if player has broken legs
431 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
432 return false;
433
434 //gate..
435 if (target.GetObject() && (!target.GetObject().CanUseConstructionBuild() || target.GetObject().CanUseHandConstruction()))
436 return false;
437
438 if ((!GetGame().IsDedicatedServer()))
439 {
440 if (MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item, m_VariantID))
441 {
442 return true;
443 }
444 return false;
445 }
446 return true;
447 }
448
449 override bool ActionConditionContinue(ActionData action_data)
450 {
451 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
452 Construction construction = base_building.GetConstruction();
453 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
454 CollisionCheckData check_data = new CollisionCheckData;
455
456 check_data.m_PartName = part_name;
457 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
458
459 bool canBuild = construction.CanBuildPart(part_name, action_data.m_MainItem, true);
460 if (GetGame().IsServer())
461 {
462 bool collides = construction.IsCollidingEx(check_data);
463
464 return !collides && canBuild;
465 }
466 else
467 {
468 return canBuild;
469 }
470 }
471
472 override void OnFinishProgressServer(ActionData action_data)
473 {
474 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
475 Construction construction = base_building.GetConstruction();
476
477 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
478 CollisionCheckData check_data = new CollisionCheckData;
479
480 check_data.m_PartName = part_name;
481 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
482
483 if (!construction.IsCollidingEx(check_data) && construction.CanBuildPart(part_name, action_data.m_MainItem, true)) //redundant at this point?
484 {
485 //build
486 construction.BuildPartServer(action_data.m_Player, part_name, AT_BUILD_PART);
487 //add damage to tool
488 action_data.m_MainItem.DecreaseHealth(UADamageApplied.BUILD, false);
489 }
490 }
491
492 override string GetSoundCategory(ActionData action_data)
493 {
494 return "Base_building";
495 }
496
498 {
499 BuildPartActionData action_data = new BuildPartActionData;
500 return action_data;
501 }
502
503 //setup
504 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL)
505 {
506 if (super.SetupAction(player, target, item, action_data, extra_data))
507 {
509
510 if (!GetGame().IsDedicatedServer())
511 {
512 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
513 BuildPartActionData.Cast(action_data).m_PartType = construction_action_data.GetBuildPartAtIndex(m_VariantID).GetPartName();
514 }
515 return true;
516 }
517
518 return false;
519 }
520
521 protected void SetBuildingAnimation(ItemBase item)
522 {
523 switch (item.Type())
524 {
525 case Pickaxe:
526 case Shovel:
527 case FarmingHoe:
528 case FieldShovel:
529 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DIG;
530 break;
531 case Pliers:
532 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
533 break;
534 case SledgeHammer:
535 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_MINEROCK;
536 break;
537 default:
538 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
539 break;
540 }
541 }
542
543 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
544 {
545 super.WriteToContext(ctx, action_data);
546
547 ctx.Write(BuildPartActionData.Cast(action_data).m_PartType);
548 }
549
550 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
551 {
552 action_recive_data = new BuildPartActionReciveData;
553 super.ReadFromContext(ctx, action_recive_data);
554
555 string part_type;
556 if (ctx.Read(part_type))
557 {
558 BuildPartActionReciveData.Cast(action_recive_data).m_PartType = part_type;
559 return true;
560 }
561 else
562 {
563 return false;
564 }
565 }
566
567 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
568 {
569 super.HandleReciveData(action_recive_data, action_data);
570
571 BuildPartActionData.Cast(action_data).m_PartType = BuildPartActionReciveData.Cast(action_recive_data).m_PartType;
572 }
573
574 override string GetAdminLogMessage(ActionData action_data)
575 {
576 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
577 string partName = BuildPartActionData.Cast(action_data).m_PartType;
578
579 string message = string.Format("Built %1 on %2 with %3", partName, action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName());
580 return message;
581 }
582}
583
584class ActionActionBuildPartNoTool: ActionBuildPart
585{
586 override typename GetInputType()
587 {
588 return ContinuousInteractActionInput;
589 }
590
591 override bool UseMainItem()
592 {
593 return false;
594 }
595
596 override bool HasProgress()
597 {
598 return true;
599 }
600
601 override bool HasAlternativeInterrupt()
602 {
603 return false;
604 }
605}
const int AT_BUILD_PART
Определения _constants.c:6
ActionBase ActionData
Определения ActionBase.c:30
BuildPartActionReciveData m_PartType
override bool HasProgress()
Определения ActionBuildPart.c:236
override bool UseMainItem()
Определения ActionBuildPart.c:231
class ActionTargets ActionTarget
void BaseBuildingBase()
Определения BaseBuildingBase.c:1328
void CollisionCheckData()
Определения Construction.c:1329
void Construction(BaseBuildingBase parent)
Определения Construction.c:26
eBrokenLegs
Определения EBrokenLegs.c:2
class GP5GasMask extends MaskBase ItemBase
float m_SpecialtyWeight
Определения ActionBase.c:77
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
ActionData m_ActionData
Определения AnimatedActionBase.c:3
void ActionBuildPart()
Определения ActionBuildPart.c:27
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionBuildPart.c:144
override bool CanBeUsedInFreelook()
Определения ActionBuildPart.c:60
override bool CanBeUsedLeaning()
Определения ActionBuildPart.c:55
override void CreateConditionComponents()
Определения ActionBuildPart.c:38
override string GetSoundCategory(ActionData action_data)
Определения ActionBuildPart.c:132
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionBuildPart.c:190
void SetBuildingAnimation(ItemBase item)
Определения ActionBuildPart.c:161
override bool ActionConditionContinue(ActionData action_data)
Определения ActionBuildPart.c:89
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBuildPart.c:65
override ActionData CreateActionData()
Определения ActionBuildPart.c:137
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionBuildPart.c:183
override string GetAdminLogMessage(ActionData action_data)
Определения ActionBuildPart.c:214
override void OnFinishProgressServer(ActionData action_data)
Определения ActionBuildPart.c:112
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionBuildPart.c:207
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBuildPart.c:44
float SetCallbackDuration(ItemBase item)
Определения ActionBuildPart.c:19
override void CreateActionComponent()
Определения ActionBuildPart.c:13
override GetInputType()
Определения ActionContinuousBase.c:179
bool HasAlternativeInterrupt()
Определения ActionContinuousBase.c:147
int m_CommandUID
Определения AnimatedActionBase.c:143
ConstructionPart GetBuildPartAtIndex(int idx)
Определения ConstructionActionData.c:184
string GetPartName()
Определения ConstructionPart.c:30
string GetName()
Определения ConstructionPart.c:24
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.