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

◆ ReadFromContext()

override bool GetInputType::ReadFromContext ( ParamsReadContext ctx,
out ActionReciveData action_recive_data )
protected

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

390 : ActionReciveData
391{
392 string m_PartType;
393}
394
395class BuildPartActionData : ActionData
396{
397 string m_PartType;
398};
399
401{
402 override void CreateActionComponent()
403 {
404 float time = SetCallbackDuration(m_ActionData.m_MainItem);
405 m_ActionData.m_ActionComponent = new CAContinuousTime(time);
406 }
407
408 float SetCallbackDuration(ItemBase item)
409 {
410 return UATimeSpent.BASEBUILDING_CONSTRUCT_MEDIUM;
411 }
412};
413
415{
416 void ActionBuildPart()
417 {
418 m_CallbackClass = ActionBuildPartCB;
419 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
420 m_FullBody = true;
421 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
422
423 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
424 m_Text = "#build";
425 }
426
427 override void CreateConditionComponents()
428 {
429 m_ConditionItem = new CCINonRuined;
430 m_ConditionTarget = new CCTNone;
431 }
432
433 override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
434 {
435 ConstructionActionData construction_action_data = player.GetConstructionActionData();
436 ConstructionPart constrution_part = construction_action_data.GetBuildPartAtIndex(m_VariantID);
437
438 if (constrution_part)
439 {
440 m_Text = "#build " + constrution_part.GetName();
441 }
442 }
443
444 override bool CanBeUsedLeaning()
445 {
446 return false;
447 }
448
449 override bool CanBeUsedInFreelook()
450 {
451 return false;
452 }
453
454 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
455 {
456 if (player.IsPlacingLocal() || player.IsPlacingServer())
457 return false;
458
459 //Action not allowed if player has broken legs
460 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
461 return false;
462
463 //gate..
464 if (target.GetObject() && (!target.GetObject().CanUseConstructionBuild() || target.GetObject().CanUseHandConstruction()))
465 return false;
466
467 if ((!GetGame().IsDedicatedServer()))
468 {
469 if (MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item, m_VariantID))
470 {
471 return true;
472 }
473 return false;
474 }
475 return true;
476 }
477
478 override bool ActionConditionContinue(ActionData action_data)
479 {
480 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
481 Construction construction = base_building.GetConstruction();
482 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
483 CollisionCheckData check_data = new CollisionCheckData;
484
485 check_data.m_PartName = part_name;
486 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
487
488 bool canBuild = construction.CanBuildPart(part_name, action_data.m_MainItem, true);
489 if (GetGame().IsServer())
490 {
491 bool collides = construction.IsCollidingEx(check_data);
492
493 return !collides && canBuild;
494 }
495 else
496 {
497 return canBuild;
498 }
499 }
500
501 override void OnFinishProgressServer(ActionData action_data)
502 {
503 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
504 Construction construction = base_building.GetConstruction();
505
506 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
507 CollisionCheckData check_data = new CollisionCheckData;
508
509 check_data.m_PartName = part_name;
510 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
511
512 if (!construction.IsCollidingEx(check_data) && construction.CanBuildPart(part_name, action_data.m_MainItem, true)) //redundant at this point?
513 {
514 //build
515 construction.BuildPartServer(action_data.m_Player, part_name, AT_BUILD_PART);
516 //add damage to tool
517 action_data.m_MainItem.DecreaseHealth(UADamageApplied.BUILD, false);
518 }
519 }
520
521 override string GetSoundCategory(ActionData action_data)
522 {
523 return "Base_building";
524 }
525
527 {
528 BuildPartActionData action_data = new BuildPartActionData;
529 return action_data;
530 }
531
532 //setup
533 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL)
534 {
535 if (super.SetupAction(player, target, item, action_data, extra_data))
536 {
538
539 if (!GetGame().IsDedicatedServer())
540 {
541 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
542 BuildPartActionData.Cast(action_data).m_PartType = construction_action_data.GetBuildPartAtIndex(m_VariantID).GetPartName();
543 }
544 return true;
545 }
546
547 return false;
548 }
549
550 protected void SetBuildingAnimation(ItemBase item)
551 {
552 switch (item.Type())
553 {
554 case Pickaxe:
555 case Shovel:
556 case FarmingHoe:
557 case FieldShovel:
558 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DIG;
559 break;
560 case Pliers:
561 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
562 break;
563 case SledgeHammer:
564 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_MINEROCK;
565 break;
566 default:
567 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
568 break;
569 }
570 }
571
572 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
573 {
574 super.WriteToContext(ctx, action_data);
575
576 ctx.Write(BuildPartActionData.Cast(action_data).m_PartType);
577 }
578
579 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
580 {
581 action_recive_data = new BuildPartActionReciveData;
582 super.ReadFromContext(ctx, action_recive_data);
583
584 string part_type;
585 if (ctx.Read(part_type))
586 {
587 BuildPartActionReciveData.Cast(action_recive_data).m_PartType = part_type;
588 return true;
589 }
590 else
591 {
592 return false;
593 }
594 }
595
596 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
597 {
598 super.HandleReciveData(action_recive_data, action_data);
599
600 BuildPartActionData.Cast(action_data).m_PartType = BuildPartActionReciveData.Cast(action_recive_data).m_PartType;
601 }
602
603 override string GetAdminLogMessage(ActionData action_data)
604 {
605 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
606 string partName = BuildPartActionData.Cast(action_data).m_PartType;
607
608 string message = string.Format("Built %1 on %2 with %3", partName, action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName());
609 return message;
610 }
611}
612
613class ActionActionBuildPartNoTool: ActionBuildPart
614{
615 override typename GetInputType()
616 {
617 return ContinuousInteractActionInput;
618 }
619
620 override bool UseMainItem()
621 {
622 return false;
623 }
624
625 override bool HasProgress()
626 {
627 return true;
628 }
629
630 override bool HasAlternativeInterrupt()
631 {
632 return false;
633 }
634}
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.