165 - Spawn Default Weapon
This commit is contained in:
parent
6e741fc764
commit
a39861b510
Binary file not shown.
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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())
|
||||
{
|
||||
|
|
|
@ -119,4 +119,10 @@ private:
|
|||
bool bInitializeGrenades = false;
|
||||
int32 HUDGrenades;
|
||||
|
||||
float bInitializeCarriedAmmo = false;
|
||||
float HUDCarriedAmmo;
|
||||
|
||||
float bInitializeHUDWeaponAmmo = false;
|
||||
float HUDWeaponAmmo;
|
||||
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -69,7 +69,8 @@ public:
|
|||
|
||||
// Enable or disable custom depth
|
||||
void EnableCustomDepth(bool bEnabled);
|
||||
|
||||
|
||||
bool bDestroyWeapon = false;
|
||||
protected:
|
||||
virtual void BeginPlay() override;
|
||||
|
||||
|
|
Loading…
Reference in New Issue