127 - Restart Game
This commit is contained in:
parent
ad556e0523
commit
9d0dc5d0ac
Binary file not shown.
|
@ -76,6 +76,6 @@ void UBlasterAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
bUseFABRIK = BlasterCharacter->GetCombatState() != ECombatState::ECS_Reloading;
|
bUseFABRIK = BlasterCharacter->GetCombatState() != ECombatState::ECS_Reloading;
|
||||||
bUseAimOffsets = BlasterCharacter->GetCombatState() != ECombatState::ECS_Reloading;
|
bUseAimOffsets = BlasterCharacter->GetCombatState() != ECombatState::ECS_Reloading && !BlasterCharacter->GetDisableGameplay();
|
||||||
bTransformRightHand = BlasterCharacter->GetCombatState() != ECombatState::ECS_Reloading;
|
bTransformRightHand = BlasterCharacter->GetCombatState() != ECombatState::ECS_Reloading && !BlasterCharacter->GetDisableGameplay();
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,7 @@ void ABlasterCharacter::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& Ou
|
||||||
|
|
||||||
DOREPLIFETIME_CONDITION(ABlasterCharacter, OverlappingWeapon, COND_OwnerOnly);
|
DOREPLIFETIME_CONDITION(ABlasterCharacter, OverlappingWeapon, COND_OwnerOnly);
|
||||||
DOREPLIFETIME(ABlasterCharacter, Health);
|
DOREPLIFETIME(ABlasterCharacter, Health);
|
||||||
|
DOREPLIFETIME(ABlasterCharacter, bDisableGameplay);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ABlasterCharacter::OnRep_ReplicatedMovement()
|
void ABlasterCharacter::OnRep_ReplicatedMovement()
|
||||||
|
@ -91,6 +92,10 @@ void ABlasterCharacter::Destroyed()
|
||||||
{
|
{
|
||||||
EliminationBotComponent->DestroyComponent();
|
EliminationBotComponent->DestroyComponent();
|
||||||
}
|
}
|
||||||
|
if (Combat && Combat->EquippedWeapon)
|
||||||
|
{
|
||||||
|
Combat->EquippedWeapon->Destroy();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ABlasterCharacter::PostInitializeComponents()
|
void ABlasterCharacter::PostInitializeComponents()
|
||||||
|
@ -176,11 +181,8 @@ void ABlasterCharacter::MulticastEliminated_Implementation()
|
||||||
// Disable character movement
|
// Disable character movement
|
||||||
GetCharacterMovement()->DisableMovement();
|
GetCharacterMovement()->DisableMovement();
|
||||||
GetCharacterMovement()->StopMovementImmediately();
|
GetCharacterMovement()->StopMovementImmediately();
|
||||||
if (BlasterPlayerController)
|
bDisableGameplay = true;
|
||||||
{
|
|
||||||
DisableInput(BlasterPlayerController);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Disable collision
|
// Disable collision
|
||||||
GetCapsuleComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
GetCapsuleComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
||||||
GetMesh()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
GetMesh()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
||||||
|
@ -243,10 +245,14 @@ void ABlasterCharacter::ReceiveDamage(AActor* DamagedActor, float Damage, const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ABlasterCharacter::Tick(float DeltaTime)
|
void ABlasterCharacter::RotateInPlace(float DeltaTime)
|
||||||
{
|
{
|
||||||
Super::Tick(DeltaTime);
|
if (bDisableGameplay)
|
||||||
|
{
|
||||||
|
bUseControllerRotationYaw = false;
|
||||||
|
TurningInPlace = ETurningInPlace::ETIP_NotTurning;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (GetLocalRole() > ROLE_SimulatedProxy && IsLocallyControlled())
|
if (GetLocalRole() > ROLE_SimulatedProxy && IsLocallyControlled())
|
||||||
{
|
{
|
||||||
AimOffset(DeltaTime);
|
AimOffset(DeltaTime);
|
||||||
|
@ -260,7 +266,13 @@ void ABlasterCharacter::Tick(float DeltaTime)
|
||||||
}
|
}
|
||||||
CalculateAO_Pitch();
|
CalculateAO_Pitch();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ABlasterCharacter::Tick(float DeltaTime)
|
||||||
|
{
|
||||||
|
Super::Tick(DeltaTime);
|
||||||
|
|
||||||
|
RotateInPlace(DeltaTime);
|
||||||
HideCameraIfCharacterClose();
|
HideCameraIfCharacterClose();
|
||||||
PollInit();
|
PollInit();
|
||||||
}
|
}
|
||||||
|
@ -300,6 +312,7 @@ void ABlasterCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputCo
|
||||||
|
|
||||||
void ABlasterCharacter::MoveForward(float Value)
|
void ABlasterCharacter::MoveForward(float Value)
|
||||||
{
|
{
|
||||||
|
if (bDisableGameplay) return;
|
||||||
if (Controller != nullptr && Value != 0.f)
|
if (Controller != nullptr && Value != 0.f)
|
||||||
{
|
{
|
||||||
const FRotator YawRotation(0.f, Controller->GetControlRotation().Yaw, 0.f);
|
const FRotator YawRotation(0.f, Controller->GetControlRotation().Yaw, 0.f);
|
||||||
|
@ -311,6 +324,7 @@ void ABlasterCharacter::MoveForward(float Value)
|
||||||
|
|
||||||
void ABlasterCharacter::MoveRight(float Value)
|
void ABlasterCharacter::MoveRight(float Value)
|
||||||
{
|
{
|
||||||
|
if (bDisableGameplay) return;
|
||||||
if (Controller != nullptr && Value != 0.f)
|
if (Controller != nullptr && Value != 0.f)
|
||||||
{
|
{
|
||||||
const FRotator YawRotation(0.f, Controller->GetControlRotation().Yaw, 0.f);
|
const FRotator YawRotation(0.f, Controller->GetControlRotation().Yaw, 0.f);
|
||||||
|
@ -332,6 +346,7 @@ void ABlasterCharacter::LookUp(float Value)
|
||||||
|
|
||||||
void ABlasterCharacter::EquipButtonPressed()
|
void ABlasterCharacter::EquipButtonPressed()
|
||||||
{
|
{
|
||||||
|
if (bDisableGameplay) return;
|
||||||
if (Combat)
|
if (Combat)
|
||||||
{
|
{
|
||||||
if (HasAuthority())
|
if (HasAuthority())
|
||||||
|
@ -347,6 +362,7 @@ void ABlasterCharacter::EquipButtonPressed()
|
||||||
|
|
||||||
void ABlasterCharacter::ReloadButtonPressed()
|
void ABlasterCharacter::ReloadButtonPressed()
|
||||||
{
|
{
|
||||||
|
if (bDisableGameplay) return;
|
||||||
if (Combat)
|
if (Combat)
|
||||||
{
|
{
|
||||||
Combat->Reload();
|
Combat->Reload();
|
||||||
|
@ -355,6 +371,7 @@ void ABlasterCharacter::ReloadButtonPressed()
|
||||||
|
|
||||||
void ABlasterCharacter::CrouchButtonPressed()
|
void ABlasterCharacter::CrouchButtonPressed()
|
||||||
{
|
{
|
||||||
|
if (bDisableGameplay) return;
|
||||||
if (bIsCrouched)
|
if (bIsCrouched)
|
||||||
{
|
{
|
||||||
UnCrouch();
|
UnCrouch();
|
||||||
|
@ -367,6 +384,7 @@ void ABlasterCharacter::CrouchButtonPressed()
|
||||||
|
|
||||||
void ABlasterCharacter::AimButtonPressed()
|
void ABlasterCharacter::AimButtonPressed()
|
||||||
{
|
{
|
||||||
|
if (bDisableGameplay) return;
|
||||||
if (Combat)
|
if (Combat)
|
||||||
{
|
{
|
||||||
Combat->SetAiming(true);
|
Combat->SetAiming(true);
|
||||||
|
@ -375,12 +393,42 @@ void ABlasterCharacter::AimButtonPressed()
|
||||||
|
|
||||||
void ABlasterCharacter::AimButtonReleased()
|
void ABlasterCharacter::AimButtonReleased()
|
||||||
{
|
{
|
||||||
|
if (bDisableGameplay) return;
|
||||||
if (Combat)
|
if (Combat)
|
||||||
{
|
{
|
||||||
Combat->SetAiming(false);
|
Combat->SetAiming(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ABlasterCharacter::Jump()
|
||||||
|
{
|
||||||
|
if (bDisableGameplay) return;
|
||||||
|
if (bIsCrouched)
|
||||||
|
{
|
||||||
|
UnCrouch();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Super::Jump();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ABlasterCharacter::FireButtonPressed()
|
||||||
|
{
|
||||||
|
if (Combat)
|
||||||
|
{
|
||||||
|
Combat->FireButtonPressed(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ABlasterCharacter::FireButtonReleased()
|
||||||
|
{
|
||||||
|
if (Combat)
|
||||||
|
{
|
||||||
|
Combat->FireButtonPressed(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ABlasterCharacter::AimOffset(float DeltaTime)
|
void ABlasterCharacter::AimOffset(float DeltaTime)
|
||||||
{
|
{
|
||||||
if (Combat && Combat->EquippedWeapon == nullptr) return;
|
if (Combat && Combat->EquippedWeapon == nullptr) return;
|
||||||
|
@ -464,34 +512,6 @@ void ABlasterCharacter::SimProxiesTurn()
|
||||||
TurningInPlace = ETurningInPlace::ETIP_NotTurning;
|
TurningInPlace = ETurningInPlace::ETIP_NotTurning;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ABlasterCharacter::Jump()
|
|
||||||
{
|
|
||||||
if (bIsCrouched)
|
|
||||||
{
|
|
||||||
UnCrouch();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Super::Jump();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ABlasterCharacter::FireButtonPressed()
|
|
||||||
{
|
|
||||||
if (Combat)
|
|
||||||
{
|
|
||||||
Combat->FireButtonPressed(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ABlasterCharacter::FireButtonReleased()
|
|
||||||
{
|
|
||||||
if (Combat)
|
|
||||||
{
|
|
||||||
Combat->FireButtonPressed(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ABlasterCharacter::ServerEquipButtonPressed_Implementation()
|
void ABlasterCharacter::ServerEquipButtonPressed_Implementation()
|
||||||
{
|
{
|
||||||
EquipButtonPressed();
|
EquipButtonPressed();
|
||||||
|
|
|
@ -24,6 +24,7 @@ public:
|
||||||
virtual void PostInitializeComponents() override;
|
virtual void PostInitializeComponents() override;
|
||||||
virtual void OnRep_ReplicatedMovement() override;
|
virtual void OnRep_ReplicatedMovement() override;
|
||||||
virtual void Destroyed() override;
|
virtual void Destroyed() override;
|
||||||
|
void RotateInPlace(float DeltaTime);
|
||||||
void PlayFireMontage(bool bAiming);
|
void PlayFireMontage(bool bAiming);
|
||||||
void PlayReloadMontage();
|
void PlayReloadMontage();
|
||||||
void PlayEliminatedMontage();
|
void PlayEliminatedMontage();
|
||||||
|
@ -33,6 +34,9 @@ public:
|
||||||
UFUNCTION(NetMulticast, Reliable)
|
UFUNCTION(NetMulticast, Reliable)
|
||||||
void MulticastEliminated();
|
void MulticastEliminated();
|
||||||
|
|
||||||
|
UPROPERTY(Replicated)
|
||||||
|
bool bDisableGameplay = false;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void BeginPlay() override;
|
virtual void BeginPlay() override;
|
||||||
|
|
||||||
|
@ -55,6 +59,7 @@ protected:
|
||||||
|
|
||||||
UFUNCTION()
|
UFUNCTION()
|
||||||
void ReceiveDamage(AActor* DamagedActor, float Damage, const UDamageType* DamageType, class AController* InstigatorController, AActor* DamageCauser);
|
void ReceiveDamage(AActor* DamagedActor, float Damage, const UDamageType* DamageType, class AController* InstigatorController, AActor* DamageCauser);
|
||||||
|
|
||||||
void UpdateHUDHealth();
|
void UpdateHUDHealth();
|
||||||
// Poll for any relevant classes and initialize them
|
// Poll for any relevant classes and initialize them
|
||||||
void PollInit();
|
void PollInit();
|
||||||
|
@ -186,4 +191,6 @@ public:
|
||||||
FORCEINLINE float GetHealth() const { return Health; }
|
FORCEINLINE float GetHealth() const { return Health; }
|
||||||
FORCEINLINE float GetMaxHealth() const { return MaxHealth; }
|
FORCEINLINE float GetMaxHealth() const { return MaxHealth; }
|
||||||
ECombatState GetCombatState() const;
|
ECombatState GetCombatState() const;
|
||||||
|
FORCEINLINE UCombatComponent* GetCombat() const { return Combat; }
|
||||||
|
FORCEINLINE bool GetDisableGameplay() const { return bDisableGameplay; }
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,6 +29,7 @@ public:
|
||||||
void FinishedReloading();
|
void FinishedReloading();
|
||||||
void UpdateAmmoValues();
|
void UpdateAmmoValues();
|
||||||
|
|
||||||
|
void FireButtonPressed(bool bPressed);
|
||||||
protected:
|
protected:
|
||||||
virtual void BeginPlay() override;
|
virtual void BeginPlay() override;
|
||||||
void SetAiming(bool bIsAiming);
|
void SetAiming(bool bIsAiming);
|
||||||
|
@ -40,8 +41,6 @@ protected:
|
||||||
void OnRep_EquippedWeapon();
|
void OnRep_EquippedWeapon();
|
||||||
void Fire();
|
void Fire();
|
||||||
|
|
||||||
void FireButtonPressed(bool bPressed);
|
|
||||||
|
|
||||||
UFUNCTION(Server, Reliable)
|
UFUNCTION(Server, Reliable)
|
||||||
void ServerFire(const FVector_NetQuantize& TraceHitTarget);
|
void ServerFire(const FVector_NetQuantize& TraceHitTarget);
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,11 @@ void ABlasterGameMode::Tick(float DeltaSeconds)
|
||||||
}
|
}
|
||||||
else if (MatchState == MatchState::Cooldown)
|
else if (MatchState == MatchState::Cooldown)
|
||||||
{
|
{
|
||||||
CountDownTime = CooldownTime + WarmupTime + MatchTime - GetWorld()->GetTimeSeconds() + LevelStartingTime;
|
CountDownTime = WarmupTime + MatchTime + CooldownTime - GetWorld()->GetTimeSeconds() + LevelStartingTime;
|
||||||
|
if (CountDownTime <= 0.f)
|
||||||
|
{
|
||||||
|
RestartGame();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include "BlasterPlayerController.h"
|
#include "BlasterPlayerController.h"
|
||||||
|
|
||||||
#include "Blaster/Character/BlasterCharacter.h"
|
#include "Blaster/Character/BlasterCharacter.h"
|
||||||
|
#include "Blaster/Components/CombatComponent.h"
|
||||||
#include "Blaster/GameMode/BlasterGameMode.h"
|
#include "Blaster/GameMode/BlasterGameMode.h"
|
||||||
#include "Blaster/HUD/Announcement.h"
|
#include "Blaster/HUD/Announcement.h"
|
||||||
#include "Blaster/HUD/BlasterHUD.h"
|
#include "Blaster/HUD/BlasterHUD.h"
|
||||||
|
@ -108,6 +109,13 @@ void ABlasterPlayerController::HandleCooldown()
|
||||||
BlasterHUD->Announcement->SetVisibility(ESlateVisibility::Visible);
|
BlasterHUD->Announcement->SetVisibility(ESlateVisibility::Visible);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ABlasterCharacter* BlasterCharacter = Cast<ABlasterCharacter>(GetPawn());
|
||||||
|
if (BlasterCharacter && BlasterCharacter->GetCombat())
|
||||||
|
{
|
||||||
|
BlasterCharacter->bDisableGameplay = true;
|
||||||
|
BlasterCharacter->GetCombat()->FireButtonPressed(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ABlasterPlayerController::OnMatchStateSet(FName State)
|
void ABlasterPlayerController::OnMatchStateSet(FName State)
|
||||||
|
|
Loading…
Reference in New Issue