165 - Spawn Default Weapon

This commit is contained in:
Kingsmedia 2022-05-24 01:16:06 +02:00
parent 6e741fc764
commit a39861b510
7 changed files with 58 additions and 1 deletions

View File

@ -183,6 +183,8 @@ void ABlasterCharacter::BeginPlay()
{
Super::BeginPlay();
SpawnDefaultWeapon();
UpdateHUDAmmo();
UpdateHUDHealth();
UpdateHUDShield();
if (HasAuthority())
@ -686,6 +688,31 @@ void ABlasterCharacter::UpdateHUDShield()
}
}
void ABlasterCharacter::UpdateHUDAmmo()
{
BlasterPlayerController = BlasterPlayerController == nullptr ? Cast<ABlasterPlayerController>(Controller) : BlasterPlayerController;
if (BlasterPlayerController && Combat && Combat->EquippedWeapon)
{
BlasterPlayerController->SetHUDCarriedAmmo(Combat->CarriedAmmo);
BlasterPlayerController->SetHUDWeaponAmmo(Combat->EquippedWeapon->GetAmmo());
}
}
void ABlasterCharacter::SpawnDefaultWeapon()
{
const ABlasterGameMode* BlasterGameMode = Cast<ABlasterGameMode>(UGameplayStatics::GetGameMode(this));
UWorld* World = GetWorld();
if (BlasterGameMode && World && !bEliminated && DefaultWeaponClass)
{
AWeapon* StartingWeapon = World->SpawnActor<AWeapon>(DefaultWeaponClass);
StartingWeapon->bDestroyWeapon = true;
if (Combat)
{
Combat->EquipWeapon(StartingWeapon);
}
}
}
void ABlasterCharacter::PollInit()
{
if (BlasterPlayerState == nullptr)

View File

@ -43,6 +43,9 @@ public:
void UpdateHUDHealth();
void UpdateHUDShield();
void UpdateHUDAmmo();
void SpawnDefaultWeapon();
protected:
virtual void BeginPlay() override;
@ -201,6 +204,10 @@ private:
UPROPERTY(EditAnywhere)
USoundCue* EliminationBotSound;
// Default weapon
UPROPERTY(EditAnywhere)
TSubclassOf<AWeapon> DefaultWeaponClass;
// Grenade
UPROPERTY(VisibleAnywhere)

View File

@ -234,6 +234,11 @@ void ABlasterPlayerController::SetHUDWeaponAmmo(int32 Ammo)
FString AmmoText = FString::Printf(TEXT("%d"), Ammo);
BlasterHUD->CharacterOverlay->WeaponAmmoValue->SetText(FText::FromString(AmmoText));
}
else
{
bInitializeHUDWeaponAmmo = true;
HUDWeaponAmmo = Ammo;
}
}
void ABlasterPlayerController::SetHUDCarriedAmmo(int32 Ammo)
@ -247,6 +252,11 @@ void ABlasterPlayerController::SetHUDCarriedAmmo(int32 Ammo)
FString AmmoText = FString::Printf(TEXT("%d"), Ammo);
BlasterHUD->CharacterOverlay->CarriedAmmoValue->SetText(FText::FromString(AmmoText));
}
else
{
bInitializeCarriedAmmo = true;
HUDCarriedAmmo = Ammo;
}
}
void ABlasterPlayerController::SetHUDGrenades(int32 Grenades)
@ -367,6 +377,8 @@ void ABlasterPlayerController::PollInit()
if (bInitializeShield) SetHUDShield(HUDShield, HUDMaxShield);
if (bInitializeScore) SetHUDScore(HUDScore);
if (bInitializeDefeats) SetHUDDefeats(HUDDefeats);
if (bInitializeCarriedAmmo) SetHUDCarriedAmmo(HUDCarriedAmmo);
if (bInitializeHUDWeaponAmmo) SetHUDWeaponAmmo(HUDWeaponAmmo);
ABlasterCharacter* BlasterCharacter = Cast<ABlasterCharacter>(GetPawn());
if (BlasterCharacter && BlasterCharacter->GetCombat())
{

View File

@ -119,4 +119,10 @@ private:
bool bInitializeGrenades = false;
int32 HUDGrenades;
float bInitializeCarriedAmmo = false;
float HUDCarriedAmmo;
float bInitializeHUDWeaponAmmo = false;
float HUDWeaponAmmo;
};

View File

@ -255,6 +255,10 @@ void AWeapon::Fire(const FVector& HitTarget)
void AWeapon::Dropped()
{
if (bDestroyWeapon)
{
SetLifeSpan(30.f);
}
SetWeaponState(EWeaponState::EWS_Dropped);
const FDetachmentTransformRules DetachRules(EDetachmentRule::KeepWorld, true);
WeaponMesh->DetachFromComponent(DetachRules);

View File

@ -70,6 +70,7 @@ public:
// Enable or disable custom depth
void EnableCustomDepth(bool bEnabled);
bool bDestroyWeapon = false;
protected:
virtual void BeginPlay() override;