diff --git a/COMP250_1_2101327_AI/Config/DefaultEditor.ini b/COMP250_1_2101327_AI/Config/DefaultEditor.ini index 79b70b5..197e527 100644 --- a/COMP250_1_2101327_AI/Config/DefaultEditor.ini +++ b/COMP250_1_2101327_AI/Config/DefaultEditor.ini @@ -7,3 +7,5 @@ bReplaceBlueprintWithClass= true bDontLoadBlueprintOutsideEditor= true bBlueprintIsNotBlueprintType= true +[/Script/AdvancedPreviewScene.SharedProfiles] + diff --git a/COMP250_1_2101327_AI/Config/DefaultEngine.ini b/COMP250_1_2101327_AI/Config/DefaultEngine.ini index 5d28da9..1f6d137 100644 --- a/COMP250_1_2101327_AI/Config/DefaultEngine.ini +++ b/COMP250_1_2101327_AI/Config/DefaultEngine.ini @@ -1,7 +1,17 @@ [/Script/EngineSettings.GameMapsSettings] -GameDefaultMap=/Game/Main.Main EditorStartupMap=/Game/Main.Main -GlobalDefaultGameMode="/Script/COMP250_1_2101327_AI.COMP250_1_2101327_AIGameMode" +LocalMapOptions= +TransitionMap=None +bUseSplitscreen=True +TwoPlayerSplitscreenLayout=Horizontal +ThreePlayerSplitscreenLayout=FavorTop +FourPlayerSplitscreenLayout=Grid +bOffsetPlayerGamepadIds=False +GameInstanceClass=/Script/Engine.GameInstance +GameDefaultMap=/Game/Main.Main +ServerDefaultMap=/Engine/Maps/Entry.Entry +GlobalDefaultGameMode=/Game/Blueprints/BP_DefaultGM.BP_DefaultGM_C +GlobalDefaultServerGameMode=None [/Script/Engine.RendererSettings] r.ReflectionMethod=1 diff --git a/COMP250_1_2101327_AI/Content/Blueprints/BP_DefaultGM.uasset b/COMP250_1_2101327_AI/Content/Blueprints/BP_DefaultGM.uasset new file mode 100644 index 0000000..e3e9cc4 --- /dev/null +++ b/COMP250_1_2101327_AI/Content/Blueprints/BP_DefaultGM.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92575bcb9d995d8cc158d5c1cf508f4055243d265d8e4710aa37b276fc9e431f +size 19310 diff --git a/COMP250_1_2101327_AI/Content/Blueprints/BP_Enemy.uasset b/COMP250_1_2101327_AI/Content/Blueprints/BP_Enemy.uasset new file mode 100644 index 0000000..9efb07d --- /dev/null +++ b/COMP250_1_2101327_AI/Content/Blueprints/BP_Enemy.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb612e0a38a91147a38ab4fd2ee051e27a07fb91377b0494595af2a7f7263b20 +size 29891 diff --git a/COMP250_1_2101327_AI/Content/Blueprints/BP_PlayerCharacter.uasset b/COMP250_1_2101327_AI/Content/Blueprints/BP_PlayerCharacter.uasset new file mode 100644 index 0000000..5df47b3 --- /dev/null +++ b/COMP250_1_2101327_AI/Content/Blueprints/BP_PlayerCharacter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11c09e0b8018995fb6952438435639ab60a6bbab13bcc873fafc5a6fd986cdd7 +size 24111 diff --git a/COMP250_1_2101327_AI/Content/Blueprints/Combat_UI/BP_TurnBaseCombatV2.uasset b/COMP250_1_2101327_AI/Content/Blueprints/Combat_UI/BP_TurnBaseCombatV2.uasset deleted file mode 100644 index 87fba1e..0000000 --- a/COMP250_1_2101327_AI/Content/Blueprints/Combat_UI/BP_TurnBaseCombatV2.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:585c803cd12ca9653d6899f40409bda8eaafdd13d720961e153b492aecd27647 -size 18145 diff --git a/COMP250_1_2101327_AI/Content/Blueprints/Combat_UI/Combat_UI.uasset b/COMP250_1_2101327_AI/Content/Blueprints/Combat_UI/Combat_UI.uasset index 9b8859b..d2ef75d 100644 --- a/COMP250_1_2101327_AI/Content/Blueprints/Combat_UI/Combat_UI.uasset +++ b/COMP250_1_2101327_AI/Content/Blueprints/Combat_UI/Combat_UI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e5ff8ab0d0ff280651a377665160589f56e36bd674db3c6034f753aa15a4a35 -size 69723 +oid sha256:c47bb8a8e50d3ad4ae0cfb77fb7766211b51c1b64390fe65cea3b4170aa1e476 +size 69842 diff --git a/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_DamageOverTime.uasset b/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_DamageOverTime.uasset index e965c36..ddd4ac1 100644 --- a/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_DamageOverTime.uasset +++ b/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_DamageOverTime.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9258011884ace274348fbb3d91c741979051d2f2d78cc40b884ac21e3b898753 -size 6237 +oid sha256:61debd1414ef5d894f933c15910bb6ce4ac654449deeb861c81a75cf8824666f +size 6549 diff --git a/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_HealOverTime.uasset b/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_HealOverTime.uasset index 572d950..b77744a 100644 --- a/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_HealOverTime.uasset +++ b/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_HealOverTime.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab7b99da71ed1d90b5852d3ae7d7d9f240a83f2a14ea7a25f2d2c40d3ab67ce8 -size 5702 +oid sha256:dc803ac31bd79c663649efa519208cec863843153ff8e7a2542adc4578d9f44b +size 6126 diff --git a/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_Thorns.uasset b/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_Thorns.uasset index e2fc662..bed9034 100644 --- a/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_Thorns.uasset +++ b/COMP250_1_2101327_AI/Content/Blueprints/StatusEffects/BP_Thorns.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a82e1946fb542ea7136deec176e5c11615578072ed594673be532d6c78f8819 -size 6012 +oid sha256:e8ae8fad89ddef8721186bfc06d565ed9d6ce30b9abd4821ed20b11866b400e5 +size 6402 diff --git a/COMP250_1_2101327_AI/Content/Blueprints/Status_UI/StatusIcon.uasset b/COMP250_1_2101327_AI/Content/Blueprints/Status_UI/StatusIcon.uasset new file mode 100644 index 0000000..e075cbe --- /dev/null +++ b/COMP250_1_2101327_AI/Content/Blueprints/Status_UI/StatusIcon.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67388ff26bba88b68a679be1fe7a8499c25619870f832fe62d70d6523a3876c8 +size 23344 diff --git a/COMP250_1_2101327_AI/Content/Blueprints/Status_UI/StatusIndicator.uasset b/COMP250_1_2101327_AI/Content/Blueprints/Status_UI/StatusIndicator.uasset new file mode 100644 index 0000000..6d891f9 --- /dev/null +++ b/COMP250_1_2101327_AI/Content/Blueprints/Status_UI/StatusIndicator.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65eaa3d54bd8d8a6ce4337a2c51867e044d390676121e8cb73e05ab73d74e15b +size 21291 diff --git a/COMP250_1_2101327_AI/Content/Fonts/Hachicro.uasset b/COMP250_1_2101327_AI/Content/Fonts/Hachicro.uasset index 3506e69..483cb4a 100644 --- a/COMP250_1_2101327_AI/Content/Fonts/Hachicro.uasset +++ b/COMP250_1_2101327_AI/Content/Fonts/Hachicro.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:28f600cb3bf0bf34d819e1f512d02ee76385276c8890c3a48fa29ca987339d03 +oid sha256:6abce84b6a1078dcbfe2d863385a63079aff17c41db885ae5ced975adb60abce size 19087 diff --git a/COMP250_1_2101327_AI/Content/Fonts/Hachicro_Font.uasset b/COMP250_1_2101327_AI/Content/Fonts/Hachicro_Font.uasset index 21c738d..7c022ca 100644 --- a/COMP250_1_2101327_AI/Content/Fonts/Hachicro_Font.uasset +++ b/COMP250_1_2101327_AI/Content/Fonts/Hachicro_Font.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e72c1f19f8b487d1dffb1f54548a7db565f6f29a38e88188d8eeb189d0f1c2c1 +oid sha256:6cf1b07ec4ddb7677325fee6ede3b28619889ced097e6bbac5230e09697c0f62 size 6904 diff --git a/COMP250_1_2101327_AI/Content/MSPresets/MSTextures/Black.uasset b/COMP250_1_2101327_AI/Content/MSPresets/MSTextures/Black.uasset new file mode 100644 index 0000000..01f872c --- /dev/null +++ b/COMP250_1_2101327_AI/Content/MSPresets/MSTextures/Black.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8819bea82628cb093a6daf158467415a2fa18a27eacf8ea8af8a803a52dba1f +size 5727 diff --git a/COMP250_1_2101327_AI/Content/Main.umap b/COMP250_1_2101327_AI/Content/Main.umap index 5164b53..13490b0 100644 --- a/COMP250_1_2101327_AI/Content/Main.umap +++ b/COMP250_1_2101327_AI/Content/Main.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31de49eac503c3e1fda877ed49a3e964be4843d2d8cc0524fd00d8bc12b3ba79 -size 36123 +oid sha256:85d51dd4abb6c5d7fb44fd0b03b6cc5198d66632ab01a333c791a04018ea6d6a +size 39819 diff --git a/COMP250_1_2101327_AI/Content/StarterContent/Architecture/Floor_400x400.uasset b/COMP250_1_2101327_AI/Content/StarterContent/Architecture/Floor_400x400.uasset index dbc8014..c2a34af 100644 --- a/COMP250_1_2101327_AI/Content/StarterContent/Architecture/Floor_400x400.uasset +++ b/COMP250_1_2101327_AI/Content/StarterContent/Architecture/Floor_400x400.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e2c98917101ce51951b0dcfdff82038b16b8f5fed288983d6ff54dc61bb054a -size 14831 +oid sha256:4c0ecf0ac0702cc2bd355ec050232a61c49e10f102448efbeb735a51824adef6 +size 14948 diff --git a/COMP250_1_2101327_AI/Content/StarterContent/Particles/P_Ambient_Dust.uasset b/COMP250_1_2101327_AI/Content/StarterContent/Particles/P_Ambient_Dust.uasset index bf2e439..61a42c1 100644 --- a/COMP250_1_2101327_AI/Content/StarterContent/Particles/P_Ambient_Dust.uasset +++ b/COMP250_1_2101327_AI/Content/StarterContent/Particles/P_Ambient_Dust.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01ef616c7a8bd90cd1b7a13efb18a56f33346efbae51efa31f09804478b7621d -size 43456 +oid sha256:3f4f9de3e23ca1581b34ae27f09764daa4b35d4b62b05819d4541165aced43fd +size 53268 diff --git a/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/COMP250_1_2101327_AICharacter.h b/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/COMP250_1_2101327_AICharacter.h index 3bc9b7e..af69e45 100644 --- a/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/COMP250_1_2101327_AICharacter.h +++ b/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/COMP250_1_2101327_AICharacter.h @@ -23,6 +23,7 @@ class ACOMP250_1_2101327_AICharacter : public ACharacter /** MappingContext */ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) + // ReSharper disable once UnrealHeaderToolError class UInputMappingContext* DefaultMappingContext; /** Jump Input Action */ diff --git a/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/GOAP/GOAPAgent.cpp b/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/GOAP/GOAPAgent.cpp new file mode 100644 index 0000000..b960949 --- /dev/null +++ b/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/GOAP/GOAPAgent.cpp @@ -0,0 +1,35 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "GOAPAgent.h" + + +// Sets default values for this component's properties +UGOAPAgent::UGOAPAgent() +{ + // Set this component to be initialized when the game starts, and to be ticked every frame. You can turn these features + // off to improve performance if you don't need them. + PrimaryComponentTick.bCanEverTick = true; + + // ... +} + + +// Called when the game starts +void UGOAPAgent::BeginPlay() +{ + Super::BeginPlay(); + + // ... + +} + + +// Called every frame +void UGOAPAgent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) +{ + Super::TickComponent(DeltaTime, TickType, ThisTickFunction); + + // ... +} + diff --git a/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/GOAP/GOAPAgent.h b/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/GOAP/GOAPAgent.h new file mode 100644 index 0000000..9dc3500 --- /dev/null +++ b/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/GOAP/GOAPAgent.h @@ -0,0 +1,26 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Components/ActorComponent.h" +#include "GOAPAgent.generated.h" + + +UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent)) +class COMP250_1_2101327_AI_API UGOAPAgent : public UActorComponent +{ + GENERATED_BODY() + +public: + // Sets default values for this component's properties + UGOAPAgent(); + +protected: + // Called when the game starts + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; +}; diff --git a/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/TurnBasedCombatV2/TurnBaseCombatV2.cpp b/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/TurnBasedCombatV2/TurnBaseCombatV2.cpp index ea8c4f6..3fb63ab 100644 --- a/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/TurnBasedCombatV2/TurnBaseCombatV2.cpp +++ b/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/TurnBasedCombatV2/TurnBaseCombatV2.cpp @@ -34,23 +34,23 @@ ATurnBaseCombatV2::ATurnBaseCombatV2() void ATurnBaseCombatV2::StartCombat(AActor* Enemy) { if (Enemy == nullptr) return; - UBlackboardComponent* EnemyBlackboard = Cast(Enemy->GetInstigatorController())->GetBlackboardComponent(); + //UBlackboardComponent* EnemyBlackboard = Cast(Enemy->GetInstigatorController())->GetBlackboardComponent(); - if (EnemyBlackboard->GetValueAsBool("IsInCombat")) return; - EnemyBlackboard->SetValueAsBool("IsInCombat", true); + //if (EnemyBlackboard->GetValueAsBool("IsInCombat")) return; + //EnemyBlackboard->SetValueAsBool("IsInCombat", true); FProperty* HealthProperty = Enemy->GetClass()->FindPropertyByName(FName("Health")); int32* EnemyHealthPtr = HealthProperty->ContainerPtrToValuePtr(Enemy); EnemyHealth = EnemyHealthPtr; - if (EnemyBlackboard->GetValueAsBool("Sight")) - { - //bEnemyHasExtraTurn = true; - SwitchTurn(); - } - else - { - bPlayerHasExtraTurn = true; - } + // if (EnemyBlackboard->GetValueAsBool("Sight")) + // { + // //bEnemyHasExtraTurn = true; + // SwitchTurn(); + // } + // else + // { + // bPlayerHasExtraTurn = true; + // } if (HUD->IsInViewport()) return; HUD->AddToViewport(); @@ -71,11 +71,11 @@ void ATurnBaseCombatV2::StartCombat(AActor* Enemy) PlayerController->SetInputMode(FInputModeUIOnly()); PlayerController->bShowMouseCursor = true; - FVector Direction = Enemy->GetActorLocation() - PlayerActor->GetActorLocation(); - Direction.Normalize(); - FRotator LookAtRotation = FRotationMatrix::MakeFromX(Direction).Rotator(); - LookAtRotation.Pitch = -9.0f; - PlayerController->SetControlRotation(LookAtRotation); + // FVector Direction = Enemy->GetActorLocation() - PlayerActor->GetActorLocation(); + // Direction.Normalize(); + // FRotator LookAtRotation = FRotationMatrix::MakeFromX(Direction).Rotator(); + // LookAtRotation.Pitch = -9.0f; + // PlayerController->SetControlRotation(LookAtRotation); //DrawDebugPoint(GetWorld(), Enemy->GetActorLocation(), 10, FColor::Red, false, 10); @@ -152,14 +152,20 @@ void ATurnBaseCombatV2::BeginPlay() AButton = Cast(HUD->GetWidgetFromName("AButton")); IButton = Cast(HUD->GetWidgetFromName("IButton")); BackspaceButton = Cast(HUD->GetWidgetFromName("BackspaceButton")); - RunButton = Cast(HUD->GetWidgetFromName("RunButton")); + //RunButton = Cast(HUD->GetWidgetFromName("RunButton")); CastButton->OnClicked.AddDynamic(this, &ATurnBaseCombatV2::CastButtonOnClick); PButton->OnClicked.AddDynamic(this, &ATurnBaseCombatV2::PButtonOnClick); EButton->OnClicked.AddDynamic(this, &ATurnBaseCombatV2::EButtonOnClick); AButton->OnClicked.AddDynamic(this, &ATurnBaseCombatV2::AButtonOnClick); IButton->OnClicked.AddDynamic(this, &ATurnBaseCombatV2::IButtonOnClick); BackspaceButton->OnClicked.AddDynamic(this, &ATurnBaseCombatV2::BackspaceButtonOnClick); - RunButton->OnClicked.AddDynamic(this, &ATurnBaseCombatV2::RunButtonOnClick); + //RunButton->OnClicked.AddDynamic(this, &ATurnBaseCombatV2::RunButtonOnClick); + + UGameplayStatics::GetAllActorsOfClassWithTag(GetWorld(), AActor::StaticClass(), FName("Enemy"), AllCharacterActorsInScene); + for (AActor* Actor : AllCharacterActorsInScene) + { + StartCombat(Actor); + } } void ATurnBaseCombatV2::ExecuteCast(FString Combo) @@ -212,12 +218,12 @@ void ATurnBaseCombatV2::ExecuteCast(FString Combo) } } - if (GunEffect) - { - const UStaticMeshComponent* GunComponent = Cast(PlayerActor->GetComponentsByTag(UPrimitiveComponent::StaticClass(), FName("Gun"))[0]); - const FVector GunLocationOffset = GunComponent->GetSocketTransform("Muzzle").TransformPosition(FVector(-100, 0, 0)); - UNiagaraFunctionLibrary::SpawnSystemAtLocation(GetWorld(), GunEffect, GunLocationOffset, PlayerActor->GetActorRotation()); - } + // if (GunEffect) + // { + // const UStaticMeshComponent* GunComponent = Cast(PlayerActor->GetComponentsByTag(UPrimitiveComponent::StaticClass(), FName("Gun"))[0]); + // const FVector GunLocationOffset = GunComponent->GetSocketTransform("Muzzle").TransformPosition(FVector(-100, 0, 0)); + // UNiagaraFunctionLibrary::SpawnSystemAtLocation(GetWorld(), GunEffect, GunLocationOffset, PlayerActor->GetActorRotation()); + // } CurrentComboString = ""; UpdateComboString(CurrentComboString); @@ -434,13 +440,13 @@ void ATurnBaseCombatV2::BackspaceButtonOnClick() UpdateResourceBars(); } -void ATurnBaseCombatV2::RunButtonOnClick() -{ - UBlackboardComponent* EnemyBlackboard = Cast(EnemyActor->GetInstigatorController())->GetBlackboardComponent(); - - EnemyBlackboard->SetValueAsBool("IsInCombat", false); - EndCombat(); -} +// void ATurnBaseCombatV2::RunButtonOnClick() +// { +// UBlackboardComponent* EnemyBlackboard = Cast(EnemyActor->GetInstigatorController())->GetBlackboardComponent(); +// +// EnemyBlackboard->SetValueAsBool("IsInCombat", false); +// EndCombat(); +// } void ATurnBaseCombatV2::UpdateComboString(FString NewCombo) const { @@ -489,7 +495,7 @@ void ATurnBaseCombatV2::ToggleButtons() const IButton->SetIsEnabled(!IButton->GetIsEnabled()); BackspaceButton->SetIsEnabled(!BackspaceButton->GetIsEnabled()); CastButton->SetIsEnabled(!CastButton->GetIsEnabled()); - RunButton->SetIsEnabled(!RunButton->GetIsEnabled()); + //RunButton->SetIsEnabled(!RunButton->GetIsEnabled()); } void ATurnBaseCombatV2::EnemyTurn() diff --git a/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/TurnBasedCombatV2/TurnBaseCombatV2.h b/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/TurnBasedCombatV2/TurnBaseCombatV2.h index f09dc51..7b63cc6 100644 --- a/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/TurnBasedCombatV2/TurnBaseCombatV2.h +++ b/COMP250_1_2101327_AI/Source/COMP250_1_2101327_AI/TurnBasedCombatV2/TurnBaseCombatV2.h @@ -13,7 +13,7 @@ #include "StatusEffects/Thorns.h" #include "TurnBaseCombatV2.generated.h" -class UNiagaraSystem; +//class UNiagaraSystem; UCLASS() class COMP250_1_2101327_AI_API ATurnBaseCombatV2 : public AGameStateBase @@ -192,8 +192,8 @@ private: UFUNCTION() void BackspaceButtonOnClick(); - UFUNCTION() - void RunButtonOnClick(); + //UFUNCTION() + //void RunButtonOnClick(); void UpdateComboString(FString NewCombo) const; void UpdateActionPoints() const;