Guest User

Untitled

a guest
May 23rd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. // Fill out your copyright notice in the Description page of Project Settings.
  2.  
  3. #include "ABCharacter.h"
  4. #include "ABAnimInstance.h"
  5. #include "ABWeapon.h"
  6. #include "ABCharacterStatComponent.h"
  7. #include "DrawDebugHelpers.h"
  8. #include "Components/WidgetComponent.h"
  9. #include "ABCharacterWidget.h"
  10. #include "ABAIController.h"
  11. #include "ABCharacterSetting.h"
  12. #include "ABGameInstance.h"
  13. #include "ABPlayerController.h"
  14.  
  15. // Sets default values
  16. AABCharacter::AABCharacter()
  17. {
  18. ...
  19.  
  20. DeadTimer = 5.0f;
  21. }
  22.  
  23. void AABCharacter::SetCharacterState(ECharacterState NewState)
  24. {
  25. ABCHECK(CurrentState != NewState);
  26. CurrentState = NewState;
  27.  
  28. switch (CurrentState)
  29. {
  30. case ECharacterState::LOADING:
  31. {
  32. if (bIsPlayer)
  33. {
  34. DisableInput(ABPlayerController);
  35. }
  36.  
  37. SetActorHiddenInGame(true);
  38. HPBarWidget->SetHiddenInGame(true);
  39. bCanBeDamaged = false;
  40. break;
  41. }
  42. case ECharacterState::READY:
  43. {
  44. SetActorHiddenInGame(false);
  45. HPBarWidget->SetHiddenInGame(false);
  46. bCanBeDamaged = true;
  47.  
  48. CharacterStat->OnHPIsZero.AddLambda([this]() -> void {
  49.  
  50. SetCharacterState(ECharacterState::DEAD);
  51.  
  52. });
  53.  
  54. auto CharacterWidget = Cast<UABCharacterWidget>(HPBarWidget->GetUserWidgetObject());
  55. ABCHECK(nullptr != CharacterWidget);
  56. CharacterWidget->BindCharacterStat(CharacterStat);
  57.  
  58. if (bIsPlayer)
  59. {
  60. SetControlMode(EControlMode::DIABLO);
  61. GetCharacterMovement()->MaxWalkSpeed = 600.0f;
  62. EnableInput(ABPlayerController);
  63. }
  64. else
  65. {
  66. SetControlMode(EControlMode::NPC);
  67. GetCharacterMovement()->MaxWalkSpeed = 400.0f;
  68. ABAIController->RunAI();
  69. }
  70.  
  71. break;
  72. }
  73. case ECharacterState::DEAD:
  74. {
  75. SetActorEnableCollision(false);
  76. GetMesh()->SetHiddenInGame(false);
  77. HPBarWidget->SetHiddenInGame(true);
  78. ABAnim->SetDeadAnim();
  79. bCanBeDamaged = false;
  80.  
  81. if (bIsPlayer)
  82. {
  83. DisableInput(ABPlayerController);
  84. }
  85. else
  86. {
  87. ABAIController->StopAI();
  88. }
  89.  
  90. GetWorld()->GetTimerManager().SetTimer(DeadTimerHandle, FTimerDelegate::CreateLambda([this]() -> void {
  91.  
  92. GetWorld()->GetTimerManager().ClearTimer(DeadTimerHandle);
  93.  
  94. if (bIsPlayer)
  95. {
  96. ABPlayerController->RestartLevel();
  97. }
  98. else
  99. {
  100. Destroy();
  101. }
  102.  
  103. }), DeadTimer, false);
  104.  
  105. break;
  106. }
  107. }
  108. }
Add Comment
Please, Sign In to add comment