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

◆ GetText()

override string BuildShelterFromShelterSiteLambda::GetText ( )
protected

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

353 : driven by ActionBuildPart")]
354class ActionBuildShelter: ActionContinuousBase
355{
356 string m_SoundsetBuildStart;
357 string m_SoundsetBuildLoop;
358 string m_SoundsetBuildFinish;
359 ref protected EffectSound m_BuildLoopSound;
360
361 void ActionBuildShelter()
362 {
363 m_CallbackClass = ActionBuildPartCB;
364 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DEPLOY_2HD;
365 m_FullBody = true;
366 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
367 m_Text = "#build_shelter_leather";
368 }
369
370 void ~ActionBuildShelter()
371 {
372 DestroyActionLoopSound();
373 }
374
375 override void CreateConditionComponents()
376 {
377 m_ConditionItem = new CCINone;
378 m_ConditionTarget = new CCTCursor;
379 }
380
381 override string GetText()
382 {
383 PlayerBase player = PlayerBase.Cast( GetGame().GetPlayer() );
384 if ( player )
385 {
386 ConstructionActionData construction_action_data = player.GetConstructionActionData();
387 ConstructionPart constrution_part = construction_action_data.GetBuildPartNoToolAtIndex(m_VariantID);
388
389 if ( constrution_part )
390 {
391 string ret = "";
392 switch (constrution_part.GetName())
393 {
394 case "leather":
395 ret = "#build_shelter_leather";
396 break;
397
398 case "fabric":
399 ret = "#build_shelter_fabric";
400 break;
401
402 case "stick":
403 ret = "#build_shelter_stick";
404 break;
405 }
406 }
407 }
408
409 return ret;
410 }
411
412 override void OnActionInfoUpdate( PlayerBase player, ActionTarget target, ItemBase item )
413 {
414 ConstructionActionData construction_action_data = player.GetConstructionActionData();
415 ConstructionPart constrution_part = construction_action_data.GetBuildPartNoToolAtIndex(m_VariantID);
416
417 if ( constrution_part )
418 {
419 switch (constrution_part.GetName())
420 {
421 case "leather":
422 m_Text = "#build_shelter_leather";
423 break;
424
425 case "fabric":
426 m_Text = "#build_shelter_fabric";
427 break;
428
429 case "stick":
430 m_Text = "#build_shelter_stick";
431 break;
432 }
433 }
434 }
435
436 override bool CanBeUsedLeaning()
437 {
438 return false;
439 }
440
441 override typename GetInputType()
442 {
443 return ContinuousInteractActionInput;
444 }
445
446 override bool UseMainItem()
447 {
448 return false;
449 }
450
451 override bool HasProgress()
452 {
453 return true;
454 }
455
456 override bool HasAlternativeInterrupt()
457 {
458 return false;
459 }
460
461 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
462 {
463 //Action not allowed if player has broken legs
464 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
465 return false;
466
467 if (target.GetObject() && !target.GetObject().CanUseConstructionBuild())
468 return false;
469 if ( player.IsPlacingLocal() || player.IsPlacingServer() )
470 return false;
471
472 if ( (!g_Game.IsDedicatedServer()) )
473 {
474 if ( MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item, m_VariantID ) )
475 {
476 return true;
477 }
478 return false;
479 }
480 return true;
481 }
482
483 //setup
484 override bool SetupAction( PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL )
485 {
486 if ( super.SetupAction( player, target, item, action_data, extra_data ) )
487 {
488 if ( !g_Game.IsDedicatedServer() )
489 {
490 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
491 BuildPartActionData.Cast(action_data).m_PartType = construction_action_data.GetBuildPartNoToolAtIndex(m_VariantID).GetPartName();
492 }
493 return true;
494 }
495
496 return false;
497 }
498
499 override ActionData CreateActionData()
500 {
501 BuildPartActionData action_data = new BuildPartActionData;
502 return action_data;
503 }
504
505 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
506 {
507 super.WriteToContext(ctx, action_data);
508
509 ctx.Write(BuildPartActionData.Cast(action_data).m_PartType);
510 }
511
512 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data )
513 {
514 action_recive_data = new BuildPartActionReciveData;
515 super.ReadFromContext(ctx, action_recive_data);
516
517 string part_type;
518 if ( ctx.Read(part_type) )
519 {
520 BuildPartActionReciveData.Cast( action_recive_data ).m_PartType = part_type;
521 return true;
522 }
523 else
524 {
525 return false;
526 }
527 }
528
529 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
530 {
531 super.HandleReciveData(action_recive_data, action_data);
532
533 BuildPartActionData.Cast(action_data).m_PartType = BuildPartActionReciveData.Cast( action_recive_data ).m_PartType;
534 }
535
536 override bool ActionConditionContinue( ActionData action_data )
537 {
538 BaseBuildingBase base_building = BaseBuildingBase.Cast( action_data.m_Target.GetObject() );
539 Construction construction = base_building.GetConstruction();
540 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
541 CollisionCheckData check_data = new CollisionCheckData;
542
543 check_data.m_PartName = part_name;
544 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
545
546 return !construction.IsCollidingEx( check_data ) && construction.CanBuildPart( part_name, action_data.m_MainItem, false );
547 }
548
549 override void OnStart( ActionData action_data )
550 {
551 super.OnStart(action_data);
552 action_data.m_Player.TryHideItemInHands(true);
553 }
554
555 override void OnStartClient( ActionData action_data )
556 {
557 super.OnStartClient(action_data);
558
559 DetermineConstructionSounds(action_data);
560 PlayActionStartSound(action_data);
561 }
562
563 override void OnStartAnimationLoopClient( ActionData action_data )
564 {
565 super.OnStartAnimationLoopClient(action_data);
566
567 PlayActionLoopSound(action_data);
568 }
569
570 override void OnEnd( ActionData action_data )
571 {
572 super.OnEnd(action_data);
573 action_data.m_Player.TryHideItemInHands(false);
574 }
575
576 override void OnEndClient( ActionData action_data )
577 {
578 super.OnEndClient(action_data);
579
580 StopActionLoopSound();
581 //DestroyActionLoopSound();
582 }
583
584 override void OnFinishProgressServer( ActionData action_data )
585 {
586 BaseBuildingBase base_building = BaseBuildingBase.Cast( action_data.m_Target.GetObject() );
587 Construction construction = base_building.GetConstruction();
588
589 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
590
591 //build
592 construction.BuildPartServerEx( action_data.m_Player, part_name, AT_BUILD_PART );
593 }
594
595 override void OnFinishProgressClient( ActionData action_data )
596 {
597 super.OnFinishProgressClient(action_data);
598
599 PlayActionFinishSound(action_data);
600 }
601
602 void DetermineConstructionSounds( ActionData action_data )
603 {
604 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
605 ConstructionPart constrution_part = construction_action_data.GetBuildPartNoToolAtIndex(m_VariantID);
606 if (constrution_part)
607 {
608 switch (constrution_part.GetName())
609 {
610 case "leather":
611 m_SoundsetBuildStart = "Shelter_Leather_Build_Start_SoundSet";
612 m_SoundsetBuildLoop = "Shelter_Leather_Build_Loop_SoundSet";
613 m_SoundsetBuildFinish = "Shelter_Leather_Build_Finish_SoundSet";
614 break;
615
616 case "fabric":
617 m_SoundsetBuildStart = "Shelter_Fabric_Build_Start_SoundSet";
618 m_SoundsetBuildLoop = "Shelter_Fabric_Build_Loop_SoundSet";
619 m_SoundsetBuildFinish = "Shelter_Fabric_Build_Finish_SoundSet";
620 break;
621
622 case "stick":
623 m_SoundsetBuildStart = "Shelter_Wooden_Stick_Build_Start_SoundSet";
624 m_SoundsetBuildLoop = "Shelter_Wooden_Stick_Build_Loop_SoundSet";
625 m_SoundsetBuildFinish = "Shelter_Wooden_Stick_Build_Finish_SoundSet";
626 break;
627
628 default:
629 m_SoundsetBuildStart = "";
630 m_SoundsetBuildLoop = "";
631 m_SoundsetBuildFinish = "";
632 break;
633 }
634 }
635 }
636
637 void PlayActionStartSound( ActionData action_data )
638 {
639 EffectSound sound = SEffectManager.PlaySound(m_SoundsetBuildStart, action_data.m_Target.GetObject().GetPosition());
640 sound.SetAutodestroy( true );
641 }
642
643 void PlayActionLoopSound( ActionData action_data )
644 {
645 if ( !m_BuildLoopSound || !m_BuildLoopSound.IsSoundPlaying() )
646 {
647 m_BuildLoopSound = SEffectManager.PlaySound( m_SoundsetBuildLoop, action_data.m_Target.GetObject().GetPosition(), 0, 0, true );
648 }
649 }
650
651 void StopActionLoopSound()
652 {
653 if (m_BuildLoopSound)
654 {
655 m_BuildLoopSound.SetSoundFadeOut(0.5);
656 m_BuildLoopSound.SoundStop();
657 }
658 }
659
660 void DestroyActionLoopSound()
661 {
662 SEffectManager.DestroyEffect( m_BuildLoopSound );
663 }
664
665 void PlayActionFinishSound( ActionData action_data )
666 {
667 EffectSound sound = SEffectManager.PlaySound(m_SoundsetBuildFinish, action_data.m_Target.GetObject().GetPosition());
668 sound.SetAutodestroy( true );
669 }
670
671 override string GetSoundCategory(ActionData action_data)
672 {
673 return "Base_building";
674 }
675}
676
677class BuildShelterFromShelterSiteLambda : ReplaceItemWithNewLambdaBase
678{
679 void BuildShelterFromShelterSiteLambda(EntityAI old_item, string new_item_type, PlayerBase player)
680 {
681 m_OldItem = old_item;
682 m_NewItemType = new_item_type;
683 }
684
685 override void CopyOldPropertiesToNew(notnull EntityAI old_item, EntityAI new_item)
686 {
687 super.CopyOldPropertiesToNew(old_item, new_item);
688
689 MiscGameplayFunctions.TransferItemProperties(old_item, new_item);
690 }
691}