feat: UI ammo, UI debuf
This commit is contained in:
parent
1845537987
commit
848f500933
Binary file not shown.
Binary file not shown.
BIN
Content/Widget/WBP_Debuf.uasset
Normal file
BIN
Content/Widget/WBP_Debuf.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -48,7 +48,10 @@ void AExoPlayerCharacter::BeginPlay()
|
||||||
if (PlayerHud)
|
if (PlayerHud)
|
||||||
{
|
{
|
||||||
PlayerHud->SetHp(CurrentHealth,MaxHealth);
|
PlayerHud->SetHp(CurrentHealth,MaxHealth);
|
||||||
PlayerHud->SetAmmo(10);
|
PlayerHud->SetAmmoNumber(10);
|
||||||
|
PlayerHud->SetAmmoType(EAmmoType::Revolver);
|
||||||
|
for (int i=0;i<4;i++)
|
||||||
|
PlayerHud->AddDebuf(NULL,0.25f*i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
25
Source/Exo/Private/Widget/UWBP_Debuf.cpp
Normal file
25
Source/Exo/Private/Widget/UWBP_Debuf.cpp
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
|
#include "Widget/UWBP_Debuf.h"
|
||||||
|
|
||||||
|
#include "Components/Image.h"
|
||||||
|
#include "Widget/UWBP_RoundProgressBar.h"
|
||||||
|
|
||||||
|
void UUWBP_Debuf::SetTexture(UTexture2D* texture)
|
||||||
|
{
|
||||||
|
if (!DebufImage)
|
||||||
|
return;
|
||||||
|
FSlateBrush NewBrush;
|
||||||
|
if (!texture)
|
||||||
|
return;
|
||||||
|
NewBrush.SetResourceObject(texture);
|
||||||
|
NewBrush.ImageSize = FVector2D(64, 64);
|
||||||
|
DebufImage->SetBrush(NewBrush);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UUWBP_Debuf::SetPrecent(float precent)
|
||||||
|
{
|
||||||
|
if (ProgressBar)
|
||||||
|
ProgressBar->SetPercent(precent);
|
||||||
|
}
|
||||||
|
|
@ -4,27 +4,23 @@
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "Blueprint/UserWidget.h"
|
#include "Blueprint/UserWidget.h"
|
||||||
#include "WBP_PlayerUI.generated.h"
|
#include "UWBP_Debuf.generated.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
UCLASS()
|
UCLASS()
|
||||||
class UWBP_PlayerUI : public UUserWidget
|
class UUWBP_Debuf : public UUserWidget
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
public:
|
public:
|
||||||
void SetHp(float hp,float hpMax);
|
UPROPERTY(EditAnywhere, meta = (BindWidget))
|
||||||
|
class UUWBP_RoundProgressBar* ProgressBar;
|
||||||
void SetAmmo(int ammo);
|
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, meta = (BindWidget))
|
UPROPERTY(EditAnywhere, meta = (BindWidget))
|
||||||
class UWBP_HpBar* HPBar;
|
class UImage* DebufImage;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, meta = (BindWidget))
|
void SetTexture(UTexture2D* texture);
|
||||||
class UImage* AmmoImage;
|
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, meta = (BindWidget))
|
|
||||||
class UTextBlock* AmmoText;
|
|
||||||
|
|
||||||
|
void SetPrecent(float precent);
|
||||||
};
|
};
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
|
|
||||||
#include "Widget/UWBP_HpBar.h"
|
|
||||||
|
|
||||||
#include "Components/ProgressBar.h"
|
|
||||||
#include "Widget/UWBP_RoundProgressBar.h"
|
|
||||||
|
|
||||||
void UWBP_HpBar::SetHp(float hp, float hpMax)
|
|
||||||
{
|
|
||||||
if (!HPBar)
|
|
||||||
return;
|
|
||||||
HPBar->SetPercent(hp/hpMax);
|
|
||||||
}
|
|
||||||
|
|
@ -3,18 +3,66 @@
|
||||||
|
|
||||||
#include "Widget/WBP_PlayerUI.h"
|
#include "Widget/WBP_PlayerUI.h"
|
||||||
|
|
||||||
|
#include "UWBP_Debuf.h"
|
||||||
|
#include "Blueprint/WidgetTree.h"
|
||||||
|
#include "Components/CanvasPanel.h"
|
||||||
|
#include "Components/CanvasPanelSlot.h"
|
||||||
|
#include "Components/Image.h"
|
||||||
#include "Components/TextBlock.h"
|
#include "Components/TextBlock.h"
|
||||||
#include "Widget/UWBP_HpBar.h"
|
#include "Widget/UWBP_RoundProgressBar.h"
|
||||||
|
|
||||||
void UWBP_PlayerUI::SetHp(float hp, float hpMax)
|
void UWBP_PlayerUI::SetHp(float hp, float hpMax)
|
||||||
{
|
{
|
||||||
if (HPBar)
|
if (!HPBar)
|
||||||
HPBar->SetHp(hp, hpMax);
|
return;
|
||||||
|
HPBar->SetPercent(hp/hpMax);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UWBP_PlayerUI::SetAmmo(int ammo)
|
void UWBP_PlayerUI::SetAmmoType(EAmmoType ammoType)
|
||||||
|
{
|
||||||
|
if (!AmmoImage)
|
||||||
|
return;
|
||||||
|
FSlateBrush NewBrush;
|
||||||
|
if (!AmmoIconMap.Contains(ammoType))
|
||||||
|
return;
|
||||||
|
UTexture2D* IconTexture = AmmoIconMap[ammoType];
|
||||||
|
if (!IconTexture)
|
||||||
|
return;
|
||||||
|
NewBrush.SetResourceObject(IconTexture);
|
||||||
|
NewBrush.ImageSize = FVector2D(64, 64);
|
||||||
|
AmmoImage->SetBrush(NewBrush);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UWBP_PlayerUI::SetAmmoNumber(int ammo)
|
||||||
{
|
{
|
||||||
if (AmmoText)
|
if (AmmoText)
|
||||||
AmmoText->SetText(FText::AsNumber(ammo));
|
AmmoText->SetText(FText::AsNumber(ammo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UWBP_PlayerUI::AddDebuf(UTexture2D* texture, float procent)
|
||||||
|
{
|
||||||
|
if (!DebufClass)
|
||||||
|
return;
|
||||||
|
if (!DebufPanel)
|
||||||
|
return;
|
||||||
|
|
||||||
|
UUWBP_Debuf* NewDebuf = WidgetTree->ConstructWidget<UUWBP_Debuf>(DebufClass, FName(FString::Printf(TEXT("Debuff %d"), debufs.Num())));
|
||||||
|
if (!NewDebuf)
|
||||||
|
return;
|
||||||
|
float angle=debufs.Num()*DebufAngleDiff;
|
||||||
|
float radians= FMath::DegreesToRadians(angle);
|
||||||
|
debufs.Add(NewDebuf);
|
||||||
|
NewDebuf->SetTexture(texture);
|
||||||
|
NewDebuf->SetPrecent(procent);
|
||||||
|
UCanvasPanelSlot* CanvasSlot = Cast<UCanvasPanelSlot>(DebufPanel->AddChild(NewDebuf));
|
||||||
|
|
||||||
|
if (!CanvasSlot)
|
||||||
|
return;
|
||||||
|
|
||||||
|
CanvasSlot->SetAnchors(FAnchors(0.5f, 0.5f));
|
||||||
|
CanvasSlot->SetAlignment(FVector2D(0.5f, 0.5f));
|
||||||
|
CanvasSlot->SetPosition(FVector2D(sin(radians)*DebufRange,-cos(radians)*DebufRange));
|
||||||
|
CanvasSlot->SetAutoSize(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
|
||||||
#include "Blueprint/UserWidget.h"
|
|
||||||
#include "UWBP_HpBar.generated.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
UCLASS()
|
|
||||||
class UWBP_HpBar : public UUserWidget
|
|
||||||
{
|
|
||||||
GENERATED_BODY()
|
|
||||||
public:
|
|
||||||
|
|
||||||
void SetHp(float hp,float hpMax);
|
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, meta = (BindWidget))
|
|
||||||
class UUWBP_RoundProgressBar* HPBar;
|
|
||||||
};
|
|
||||||
52
Source/Exo/Public/Widget/WBP_PlayerUI.h
Normal file
52
Source/Exo/Public/Widget/WBP_PlayerUI.h
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "Blueprint/UserWidget.h"
|
||||||
|
#include "WBP_PlayerUI.generated.h"
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
enum class EAmmoType: uint8;
|
||||||
|
class UUWBP_Debuf;
|
||||||
|
UCLASS()
|
||||||
|
class UWBP_PlayerUI : public UUserWidget
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
public:
|
||||||
|
void SetHp(float hp,float hpMax);
|
||||||
|
|
||||||
|
void SetAmmoType(EAmmoType ammoType);
|
||||||
|
|
||||||
|
void SetAmmoNumber(int ammo);
|
||||||
|
|
||||||
|
void AddDebuf(UTexture2D* texture,float procent);
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, meta = (BindWidget))
|
||||||
|
class UUWBP_RoundProgressBar* HPBar;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, meta = (BindWidget))
|
||||||
|
class UTextBlock* AmmoText;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, meta = (BindWidget))
|
||||||
|
class UImage* AmmoImage;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, meta = (BindWidget))
|
||||||
|
class UCanvasPanel* DebufPanel;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Debuf")
|
||||||
|
float DebufRange;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Debuf")
|
||||||
|
float DebufAngleDiff;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Debuf")
|
||||||
|
TSubclassOf<UUserWidget> DebufClass;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Ammo")
|
||||||
|
TMap<EAmmoType, UTexture2D*> AmmoIconMap;
|
||||||
|
|
||||||
|
private:
|
||||||
|
TArray<UUWBP_Debuf*> debufs;
|
||||||
|
};
|
||||||
Loading…
Reference in New Issue
Block a user