From 638b7c34faa756ef09e4e263e9b91fa606e50728 Mon Sep 17 00:00:00 2001 From: Caleb Buhungiro Date: Mon, 23 Jun 2025 12:28:21 +0800 Subject: [PATCH] added ValueGauge.cpp Widget --- .../Gameplay/ValueGauge/ValueGuage_WBP.uasset | 3 ++ Source/Crunch/Crunch.Build.cs | 6 +++- .../Private/GAS/CAbilitySystemComponent.cpp | 7 ++++- Source/Crunch/Private/Widgets/ValueGauge.cpp | 31 +++++++++++++++++++ Source/Crunch/Public/Widgets/ValueGauge.h | 31 +++++++++++++++++++ 5 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 Content/Widgets/Gameplay/ValueGauge/ValueGuage_WBP.uasset create mode 100644 Source/Crunch/Private/Widgets/ValueGauge.cpp create mode 100644 Source/Crunch/Public/Widgets/ValueGauge.h diff --git a/Content/Widgets/Gameplay/ValueGauge/ValueGuage_WBP.uasset b/Content/Widgets/Gameplay/ValueGauge/ValueGuage_WBP.uasset new file mode 100644 index 0000000..0891acc --- /dev/null +++ b/Content/Widgets/Gameplay/ValueGauge/ValueGuage_WBP.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ce43b8288419329a4cfef7f787aab2145506922f4c790583045a9a5b4c162ff +size 26430 diff --git a/Source/Crunch/Crunch.Build.cs b/Source/Crunch/Crunch.Build.cs index 863b651..2840b59 100644 --- a/Source/Crunch/Crunch.Build.cs +++ b/Source/Crunch/Crunch.Build.cs @@ -19,7 +19,11 @@ public class Crunch : ModuleRules "GameplayTags" ]); - PrivateDependencyModuleNames.AddRange(new string[] { }); + PrivateDependencyModuleNames.AddRange([ + "UMG", + "Slate", + "SlateCore" + ]); // Uncomment if you are using Slate UI // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); diff --git a/Source/Crunch/Private/GAS/CAbilitySystemComponent.cpp b/Source/Crunch/Private/GAS/CAbilitySystemComponent.cpp index 2f7378c..34096e3 100644 --- a/Source/Crunch/Private/GAS/CAbilitySystemComponent.cpp +++ b/Source/Crunch/Private/GAS/CAbilitySystemComponent.cpp @@ -7,9 +7,14 @@ void UCAbilitySystemComponent::ApplyInitialEffects() { if (!GetOwner() || !GetOwner()->HasAuthority()) return; - + for (const auto& EffectClass : InitialEffects) { + /** + * this will work as well + * const auto Effect{EffectClass->GetDefaultObject()}; + * ApplyGameplayEffectToSelf(Effect, 0.f, MakeEffectContext()); + **/ auto GameplayEffectSpecHandle{MakeOutgoingSpec(EffectClass, 1, MakeEffectContext())}; ApplyGameplayEffectSpecToSelf(*GameplayEffectSpecHandle.Data.Get()); } diff --git a/Source/Crunch/Private/Widgets/ValueGauge.cpp b/Source/Crunch/Private/Widgets/ValueGauge.cpp new file mode 100644 index 0000000..4a7393d --- /dev/null +++ b/Source/Crunch/Private/Widgets/ValueGauge.cpp @@ -0,0 +1,31 @@ +// Multiplayer By Caleb + + +#include "Widgets/ValueGauge.h" + +#include "Components/ProgressBar.h" +#include "Components/TextBlock.h" + +void UValueGauge::NativePreConstruct() +{ + Super::NativePreConstruct(); + ProgressBar->SetFillColorAndOpacity(BarColor); +} + +void UValueGauge::SetValue(float NewValue, float NewMaxValue) +{ + if (NewMaxValue == 0) + { + UE_LOG(LogTemp, Warning, TEXT("Value Gauge: %s, NewMaxValue can't be 0"), *GetName()); + return; + } + + const float NewPercentage{NewValue / NewMaxValue}; + ProgressBar->SetPercent(NewPercentage); + const auto FormatOps{FNumberFormattingOptions().SetMaximumFractionalDigits(0)}; + ValueText->SetText(FText::Format( + FTextFormat::FromString("{0}/{1}"), + FText::AsNumber(NewValue, &FormatOps), + FText::AsNumber(NewMaxValue, &FormatOps) + )); +} diff --git a/Source/Crunch/Public/Widgets/ValueGauge.h b/Source/Crunch/Public/Widgets/ValueGauge.h new file mode 100644 index 0000000..2440c5c --- /dev/null +++ b/Source/Crunch/Public/Widgets/ValueGauge.h @@ -0,0 +1,31 @@ +// Multiplayer By Caleb + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "ValueGauge.generated.h" + +class UTextBlock; +class UProgressBar; +/** + * + */ +UCLASS() +class CRUNCH_API UValueGauge : public UUserWidget +{ + GENERATED_BODY() +public: + virtual void NativePreConstruct() override; + void SetValue(float NewValue, float NewMaxValue); + +private: + UPROPERTY(EditAnywhere, Category="Visual") + FLinearColor BarColor; + UPROPERTY(EditAnywhere, meta=(BindWidget)) + UProgressBar* ProgressBar; + UPROPERTY(EditAnywhere, meta=(BindWidget)) + UTextBlock* ValueText; + + +};