111 - Carried Ammo

This commit is contained in:
Kingsmedia 2022-05-09 19:35:28 +02:00
parent cac45b8c16
commit e93a80d107
7 changed files with 43 additions and 0 deletions

View File

@ -25,6 +25,7 @@ void UCombatComponent::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& Out
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
DOREPLIFETIME(UCombatComponent, EquippedWeapon);
DOREPLIFETIME_CONDITION(UCombatComponent, CarriedAmmo, COND_OwnerOnly);
DOREPLIFETIME(UCombatComponent, bAiming);
}
@ -216,6 +217,10 @@ bool UCombatComponent::CanFire()
return !EquippedWeapon->IsEmpty() || !bCanFire;
}
void UCombatComponent::OnRep_CarriedAmmo()
{
}
void UCombatComponent::ServerFire_Implementation(const FVector_NetQuantize& TraceHitTarget)
{
MulticastFire(TraceHitTarget);

View File

@ -4,6 +4,7 @@
#include "CoreMinimal.h"
#include "Blaster/HUD/BlasterHUD.h"
#include "Blaster/Weapon/WeaponTypes.h"
#include "Components/ActorComponent.h"
#include "CombatComponent.generated.h"
@ -100,4 +101,13 @@ private:
void FireTimerFinished();
bool CanFire();
// Carried ammo for the currently equipped weapon
UPROPERTY(ReplicatedUsing=OnRep_CarriedAmmo)
int32 CarriedAmmo;
UFUNCTION()
void OnRep_CarriedAmmo();
TMap<EWeaponType, int32> CarriedAmmoMap;
};

View File

@ -31,4 +31,7 @@ public:
UPROPERTY(meta = (BindWidget))
UTextBlock* WeaponAmmoValue;
UPROPERTY(meta = (BindWidget))
UTextBlock* CarriedAmmoValue;
};

View File

@ -89,3 +89,18 @@ void ABlasterPlayerController::SetHUDWeaponAmmo(int32 Ammo)
BlasterHUD->CharacterOverlay->WeaponAmmoValue->SetText(FText::FromString(WeaponAmmoAmount));
}
}
void ABlasterPlayerController::SetHUDCarriedAmmo(int32 Ammo)
{
BlasterHUD = BlasterHUD == nullptr ? Cast<ABlasterHUD>(GetHUD()) : BlasterHUD;
bool bHUDValid =
BlasterHUD &&
BlasterHUD->CharacterOverlay &&
BlasterHUD->CharacterOverlay->CarriedAmmoValue;
if (bHUDValid)
{
const FString CarriedAmmoAmount = FString::Printf(TEXT("%d"), Ammo);
BlasterHUD->CharacterOverlay->CarriedAmmoValue->SetText(FText::FromString(CarriedAmmoAmount));
}
}

View File

@ -20,6 +20,7 @@ public:
void SetHUDScore(float Score);
void SetHUDDefeats(int32 Defeats);
void SetHUDWeaponAmmo(int32 Ammo);
void SetHUDCarriedAmmo(int32 Ammo);
virtual void OnPossess(APawn* InPawn) override;
protected:

View File

@ -0,0 +1,9 @@
#pragma once
UENUM(BlueprintType)
enum class EWeaponType: uint8
{
EWT_AssaultRifle UMETA(DisplayName="Assault Rifle"),
EWT_MAX UMETA(DisplayName="DefaultMAX")
};