108 - Defeats
This commit is contained in:
parent
4261cd8f0d
commit
1eaa5ffca5
Binary file not shown.
|
@ -37,6 +37,7 @@ private:
|
|||
UPROPERTY(BlueprintReadOnly, Category="Movement", meta=(AllowPrivateAccess = "true"))
|
||||
bool bWeaponEquipped;
|
||||
|
||||
UPROPERTY()
|
||||
class AWeapon* EquippedWeapon;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly, Category="Movement", meta=(AllowPrivateAccess = "true"))
|
||||
|
|
|
@ -244,13 +244,14 @@ void ABlasterCharacter::Tick(float DeltaTime)
|
|||
|
||||
void ABlasterCharacter::PollInit()
|
||||
{
|
||||
if (PlayerState == nullptr)
|
||||
if (BlasterPlayerState == nullptr)
|
||||
{
|
||||
PlayerState = GetPlayerState<ABlasterPlayerState>();
|
||||
if (PlayerState)
|
||||
BlasterPlayerState = GetPlayerState<ABlasterPlayerState>();
|
||||
if (BlasterPlayerState)
|
||||
{
|
||||
// Initialize Score now we have the PlayerState
|
||||
PlayerState->IncreaseScore(0.f);
|
||||
BlasterPlayerState->IncreaseScore(0.f);
|
||||
BlasterPlayerState->IncreaseDefeats(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,7 +57,9 @@ protected:
|
|||
void PollInit();
|
||||
|
||||
private:
|
||||
class ABlasterPlayerState* PlayerState;
|
||||
|
||||
UPROPERTY()
|
||||
class ABlasterPlayerState* BlasterPlayerState;
|
||||
|
||||
UPROPERTY(VisibleAnywhere, Category="Camera")
|
||||
class USpringArmComponent* CameraBoom;
|
||||
|
@ -121,6 +123,7 @@ private:
|
|||
UFUNCTION()
|
||||
void OnRep_Health();
|
||||
|
||||
UPROPERTY()
|
||||
class ABlasterPlayerController* BlasterPlayerController;
|
||||
|
||||
bool bEliminated = false;
|
||||
|
|
|
@ -47,8 +47,11 @@ protected:
|
|||
void SetHUDCrosshairs(float DeltaTime);
|
||||
|
||||
private:
|
||||
UPROPERTY()
|
||||
class ABlasterCharacter* Character;
|
||||
UPROPERTY()
|
||||
class ABlasterPlayerController* Controller;
|
||||
UPROPERTY()
|
||||
class ABlasterHUD* HUD;
|
||||
|
||||
UPROPERTY(ReplicatedUsing=OnRep_EquippedWeapon)
|
||||
|
|
|
@ -19,6 +19,10 @@ void ABlasterGameMode::PlayerEliminated(ABlasterCharacter* EliminatedCharacter,
|
|||
{
|
||||
AttackerPlayerState->IncreaseScore(1.f);
|
||||
}
|
||||
if (VictimPlayerState)
|
||||
{
|
||||
VictimPlayerState->IncreaseDefeats(1);
|
||||
}
|
||||
|
||||
if (EliminatedCharacter)
|
||||
{
|
||||
|
|
|
@ -35,6 +35,7 @@ public:
|
|||
UPROPERTY(EditAnywhere, Category = "Player Stats")
|
||||
TSubclassOf<class UUserWidget> CharacterOverlayClass;
|
||||
|
||||
UPROPERTY()
|
||||
class UCharacterOverlay* CharacterOverlay;
|
||||
|
||||
protected:
|
||||
|
|
|
@ -25,4 +25,7 @@ public:
|
|||
UPROPERTY(meta = (BindWidget))
|
||||
UTextBlock* ScoreValue;
|
||||
|
||||
UPROPERTY(meta = (BindWidget))
|
||||
UTextBlock* DefeatsValue;
|
||||
|
||||
};
|
||||
|
|
|
@ -55,7 +55,22 @@ void ABlasterPlayerController::SetHUDScore(float Score)
|
|||
|
||||
if (bHUDValid)
|
||||
{
|
||||
const FString ScoreValue = FString::Printf(TEXT("%d"), FMath::FloorToInt(Score));
|
||||
BlasterHUD->CharacterOverlay->ScoreValue->SetText(FText::FromString(ScoreValue));
|
||||
const FString ScoreAmount = FString::Printf(TEXT("%d"), FMath::FloorToInt(Score));
|
||||
BlasterHUD->CharacterOverlay->ScoreValue->SetText(FText::FromString(ScoreAmount));
|
||||
}
|
||||
}
|
||||
|
||||
void ABlasterPlayerController::SetHUDDefeats(int32 Defeats)
|
||||
{
|
||||
BlasterHUD = BlasterHUD == nullptr ? Cast<ABlasterHUD>(GetHUD()) : BlasterHUD;
|
||||
bool bHUDValid =
|
||||
BlasterHUD &&
|
||||
BlasterHUD->CharacterOverlay &&
|
||||
BlasterHUD->CharacterOverlay->DefeatsValue;
|
||||
|
||||
if (bHUDValid)
|
||||
{
|
||||
const FString DefeatsAmount = FString::Printf(TEXT("%d"), Defeats);
|
||||
BlasterHUD->CharacterOverlay->DefeatsValue->SetText(FText::FromString(DefeatsAmount));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ public:
|
|||
|
||||
void SetHUDHealth(float Health, float MaxHealth);
|
||||
void SetHUDScore(float Score);
|
||||
void SetHUDDefeats(int32 Defeats);
|
||||
virtual void OnPossess(APawn* InPawn) override;
|
||||
|
||||
protected:
|
||||
|
@ -26,6 +27,7 @@ protected:
|
|||
|
||||
private:
|
||||
|
||||
UPROPERTY()
|
||||
class ABlasterHUD* BlasterHUD;
|
||||
|
||||
};
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "Blaster/Character/BlasterCharacter.h"
|
||||
#include "Blaster/PlayerController/BlasterPlayerController.h"
|
||||
#include "Net/UnrealNetwork.h"
|
||||
|
||||
void ABlasterPlayerState::IncreaseScore(float ScoreAmount)
|
||||
{
|
||||
|
@ -21,6 +22,13 @@ void ABlasterPlayerState::IncreaseScore(float ScoreAmount)
|
|||
}
|
||||
}
|
||||
|
||||
void ABlasterPlayerState::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
|
||||
{
|
||||
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
|
||||
|
||||
DOREPLIFETIME(ABlasterPlayerState, Defeats);
|
||||
}
|
||||
|
||||
void ABlasterPlayerState::OnRep_Score()
|
||||
{
|
||||
Super::OnRep_Score();
|
||||
|
@ -36,6 +44,34 @@ void ABlasterPlayerState::OnRep_Score()
|
|||
}
|
||||
}
|
||||
|
||||
void ABlasterPlayerState::IncreaseDefeats(int32 DefeatsAmount)
|
||||
{
|
||||
Defeats += DefeatsAmount;
|
||||
|
||||
Character = GetCharacter();
|
||||
if (Character)
|
||||
{
|
||||
Controller = GetController();
|
||||
if (Controller)
|
||||
{
|
||||
Controller->SetHUDDefeats(Defeats);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ABlasterPlayerState::OnRep_Defeats()
|
||||
{
|
||||
Character = GetCharacter();
|
||||
if (Character)
|
||||
{
|
||||
Controller = GetController();
|
||||
if (Controller)
|
||||
{
|
||||
Controller->SetHUDDefeats(Defeats);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ABlasterCharacter* ABlasterPlayerState::GetCharacter() const
|
||||
{
|
||||
return Character == nullptr ? Cast<ABlasterCharacter>(GetPawn()) : Character;
|
||||
|
|
|
@ -15,12 +15,22 @@ class BLASTER_API ABlasterPlayerState : public APlayerState
|
|||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
||||
virtual void OnRep_Score() override;
|
||||
UFUNCTION()
|
||||
virtual void OnRep_Defeats();
|
||||
|
||||
void IncreaseScore(float ScoreAmount);
|
||||
void IncreaseDefeats(int32 DefeatsAmount);
|
||||
|
||||
private:
|
||||
UPROPERTY()
|
||||
class ABlasterCharacter* Character;
|
||||
UPROPERTY()
|
||||
class ABlasterPlayerController* Controller;
|
||||
ABlasterCharacter* GetCharacter() const;
|
||||
ABlasterPlayerController* GetController() const;
|
||||
|
||||
UPROPERTY(ReplicatedUsing = OnRep_Defeats)
|
||||
int32 Defeats;
|
||||
};
|
||||
|
|
|
@ -37,6 +37,7 @@ private:
|
|||
UPROPERTY(EditAnywhere)
|
||||
class UParticleSystem* Tracer;
|
||||
|
||||
UPROPERTY()
|
||||
class UParticleSystemComponent* TracerComponent;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
|
|
Loading…
Reference in New Issue