80 - Blaster HUD and Player Controller

This commit is contained in:
Kingsmedia 2022-05-05 17:57:57 +02:00
parent 490af86ef1
commit 7127ade9ee
17 changed files with 137 additions and 5 deletions

Binary file not shown.

View File

@ -4,6 +4,8 @@
#include "CombatComponent.h"
#include "Blaster/Character/BlasterCharacter.h"
#include "Blaster/HUD/BlasterHUD.h"
#include "Blaster/PlayerController/BlasterPlayerController.h"
#include "Blaster/Weapon/Weapon.h"
#include "Engine/SkeletalMeshSocket.h"
#include "GameFramework/CharacterMovementComponent.h"
@ -36,6 +38,47 @@ void UCombatComponent::BeginPlay()
}
}
void UCombatComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
SetHUDCrosshairs(DeltaTime);
}
void UCombatComponent::SetHUDCrosshairs(float DeltaTime)
{
if (Character == nullptr || Character->Controller == nullptr) return;
Controller = Controller == nullptr ? Cast<ABlasterPlayerController>(Character->Controller) : Controller;
if (Controller)
{
HUD = HUD == nullptr ? Cast<ABlasterHUD>(Controller->GetHUD()) : HUD;
if (HUD)
{
FHUDPackage HUDPackage;
if (EquippedWeapon)
{
HUDPackage.CrosshairsCenter = EquippedWeapon->CrosshairsCenter;
HUDPackage.CrosshairsLeft = EquippedWeapon->CrosshairsLeft;
HUDPackage.CrosshairsRight = EquippedWeapon->CrosshairsRight;
HUDPackage.CrosshairsTop = EquippedWeapon->CrosshairsTop;
HUDPackage.CrosshairsBottom = EquippedWeapon->CrosshairsBottom;
}
else
{
HUDPackage.CrosshairsCenter = nullptr;
HUDPackage.CrosshairsLeft = nullptr;
HUDPackage.CrosshairsRight = nullptr;
HUDPackage.CrosshairsTop = nullptr;
HUDPackage.CrosshairsBottom = nullptr;
}
HUD->SetHUDPackage(HUDPackage);
}
}
}
void UCombatComponent::SetAiming(bool bIsAiming)
{
bAiming = bIsAiming;
@ -123,11 +166,6 @@ void UCombatComponent::MulticastFire_Implementation(const FVector_NetQuantize& T
}
}
void UCombatComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
}
void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip)
{
if (Character == nullptr || WeaponToEquip == nullptr) return;

View File

@ -41,9 +41,13 @@ protected:
void MulticastFire(const FVector_NetQuantize& TraceHitTarget);
void TraceUnderCrosshairs(FHitResult& TraceHitResult);
void SetHUDCrosshairs(float DeltaTime);
private:
class ABlasterCharacter* Character;
class ABlasterPlayerController* Controller;
class ABlasterHUD* HUD;
UPROPERTY(ReplicatedUsing=OnRep_EquippedWeapon)
class AWeapon* EquippedWeapon;

View File

@ -0,0 +1,11 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "BlasterHUD.h"
void ABlasterHUD::DrawHUD()
{
Super::DrawHUD();
}

View File

@ -0,0 +1,38 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/HUD.h"
#include "BlasterHUD.generated.h"
USTRUCT(BlueprintType)
struct FHUDPackage
{
GENERATED_BODY()
public:
UTexture2D* CrosshairsCenter;
UTexture2D* CrosshairsLeft;
UTexture2D* CrosshairsRight;
UTexture2D* CrosshairsTop;
UTexture2D* CrosshairsBottom;
};
/**
*
*/
UCLASS()
class BLASTER_API ABlasterHUD : public AHUD
{
GENERATED_BODY()
public:
virtual void DrawHUD() override;
private:
FHUDPackage HUDPackage;
public:
FORCEINLINE void SetHUDPackage(const FHUDPackage& Package) { HUDPackage = Package; };
};

View File

@ -0,0 +1,5 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "BlasterPlayerController.h"

View File

@ -0,0 +1,17 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "BlasterPlayerController.generated.h"
/**
*
*/
UCLASS()
class BLASTER_API ABlasterPlayerController : public APlayerController
{
GENERATED_BODY()
};

View File

@ -27,6 +27,23 @@ public:
void ShowPickupWidget(bool bShowWidget);
virtual void Fire(const FVector& HitTarget);
// Textures for the weapon crosshairs
UPROPERTY(EditAnywhere, Category= Crosshairs)
class UTexture2D* CrosshairsCenter;
UPROPERTY(EditAnywhere, Category= Crosshairs)
class UTexture2D* CrosshairsLeft;
UPROPERTY(EditAnywhere, Category= Crosshairs)
class UTexture2D* CrosshairsRight;
UPROPERTY(EditAnywhere, Category= Crosshairs)
class UTexture2D* CrosshairsTop;
UPROPERTY(EditAnywhere, Category= Crosshairs)
class UTexture2D* CrosshairsBottom;
protected:
virtual void BeginPlay() override;
@ -69,6 +86,8 @@ private:
UPROPERTY(EditAnywhere, Category= "Weapon Properties")
TSubclassOf<class ACasing> CasingClass;
public:
void SetWeaponState(EWeaponState State);
FORCEINLINE USphereComponent* GetAreaSphere() const { return AreaSphere; }