Compare commits
No commits in common. "a885201b81b4d30f5edbe0f759060878804a0ecf" and "33b3723b820c20ea3bb610f1d90261e5dcd41bc1" have entirely different histories.
a885201b81
...
33b3723b82
BIN
Project/Binaries/Win64/UnrealEditor-GasaEditor.dll
(Stored with Git LFS)
BIN
Project/Binaries/Win64/UnrealEditor-GasaEditor.dll
(Stored with Git LFS)
Binary file not shown.
@ -10,7 +10,6 @@ Tag_GlobalPPV=Global_PPV
|
||||
Template_PlayerCamera=/Game/Actors/BP_CameraMount.BP_CameraMount_C
|
||||
Template_HUD_HostUI=/Game/UI/UI_Host.UI_Host_C
|
||||
Template_HostWidgetController=/Game/UI/BP_HostWidgetController.BP_HostWidgetController_C
|
||||
TaggedMessageTable=/Game/Core/Tables/DT_TaggedMessages.DT_TaggedMessages
|
||||
|
||||
[/Script/GameplayAbilities.AbilitySystemGlobals]
|
||||
bUseDebugTargetFromHud=true
|
||||
|
@ -6,15 +6,11 @@ AllowEditorTagUnloading=True
|
||||
AllowGameTagUnloading=False
|
||||
FastReplication=False
|
||||
InvalidTagCharacters="\"\',"
|
||||
+GameplayTagTableList=/Game/Core/Tables/DT_PrimaryAttributes.DT_PrimaryAttributes
|
||||
+GameplayTagTableList=/Game/Core/DT_PrimaryAttributes.DT_PrimaryAttributes
|
||||
NumBitsForContainerSize=6
|
||||
NetIndexFirstBitSegment=16
|
||||
+GameplayTagList=(Tag="Attributes.Vital.Health",DevComment="")
|
||||
+GameplayTagList=(Tag="Attributes.Vital.Mana",DevComment="")
|
||||
+GameplayTagList=(Tag="Attributes.Vital.MaxHealth",DevComment="")
|
||||
+GameplayTagList=(Tag="Attributes.Vital.MaxMana",DevComment="")
|
||||
+GameplayTagList=(Tag="Message.Crystal.Health",DevComment="")
|
||||
+GameplayTagList=(Tag="Message.Crystal.Mana",DevComment="")
|
||||
+GameplayTagList=(Tag="Message.Potion.Health",DevComment="")
|
||||
+GameplayTagList=(Tag="Message.Potion.Mana",DevComment="")
|
||||
|
||||
|
BIN
Project/Content/Core/AbilitySystem/GE_AreaFire.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/AbilitySystem/GE_AreaFire.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/AbilitySystem/GE_CrystalHeal.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/AbilitySystem/GE_CrystalHeal.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/AbilitySystem/GE_CrystalMana.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/AbilitySystem/GE_CrystalMana.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/AbilitySystem/GE_PotionHealth.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/AbilitySystem/GE_PotionHealth.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/AbilitySystem/GE_PotionMana.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/AbilitySystem/GE_PotionMana.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/BP_AreaFire_RawEffect.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/BP_AreaFire_RawEffect.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/CT_Potion.uasset
(Stored with Git LFS)
Normal file
BIN
Project/Content/Core/CT_Potion.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Project/Content/Core/DT_PrimaryAttributes.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/DT_PrimaryAttributes.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/DT_TaggedMessages.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/DT_TaggedMessages.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/Game/BP_HUD.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/Game/BP_HUD.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/Pickups/BP_HealthPotion_RawEffect.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/Pickups/BP_HealthPotion_RawEffect.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/Pickups/BP_ManaPotion_RawEffect.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/Pickups/BP_ManaPotion_RawEffect.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/Tables/CT_Potion.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/Tables/CT_Potion.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/Tables/DT_PrimaryAttributes.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/Tables/DT_PrimaryAttributes.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Core/Tables/DT_TaggedMessages.uasset
(Stored with Git LFS)
BIN
Project/Content/Core/Tables/DT_TaggedMessages.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/Levels/StartupMap.umap
(Stored with Git LFS)
BIN
Project/Content/Levels/StartupMap.umap
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/UI/BP_HostWidgetController.uasset
(Stored with Git LFS)
BIN
Project/Content/UI/BP_HostWidgetController.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/UI/DT_StyleText_EffectMessage.uasset
(Stored with Git LFS)
BIN
Project/Content/UI/DT_StyleText_EffectMessage.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/UI/RTD_Default.uasset
(Stored with Git LFS)
BIN
Project/Content/UI/RTD_Default.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/UI/UI_EffectMessage.uasset
(Stored with Git LFS)
BIN
Project/Content/UI/UI_EffectMessage.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Project/Content/UI/UI_Host.uasset
(Stored with Git LFS)
BIN
Project/Content/UI/UI_Host.uasset
(Stored with Git LFS)
Binary file not shown.
@ -1,6 +0,0 @@
|
||||
{
|
||||
"ColumnWidths":
|
||||
{
|
||||
"TextStyle": 1099
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"ColumnWidths":
|
||||
{
|
||||
"Image": 487,
|
||||
"Tag": 246,
|
||||
"Message": 439,
|
||||
"MessageTemplate": 232
|
||||
}
|
||||
}
|
@ -1,33 +1 @@
|
||||
#include "GasaAbilitySystemComponent.h"
|
||||
|
||||
#include "Engine/Engine.h"
|
||||
#include "Engine/GameViewportClient.h"
|
||||
#include "Game/GasaGameState.h"
|
||||
#include "Game/GasaPlayerController.h"
|
||||
#include "GameFramework/HUD.h"
|
||||
#include "Slate/SceneViewport.h"
|
||||
#include "UI/GasaHUD.h"
|
||||
#include "CogDebugDraw.h"
|
||||
|
||||
|
||||
using namespace Gasa;
|
||||
|
||||
void UGasaAbilitySystemComp::OnAbilityActorInfoSet()
|
||||
{
|
||||
if ( ! OnGameplayEffectAppliedDelegateToSelf.IsBoundToObject(this))
|
||||
OnGameplayEffectAppliedDelegateToSelf.AddUObject(this, & ThisClass::EffectApplied);
|
||||
}
|
||||
|
||||
void UGasaAbilitySystemComp::EffectApplied(UAbilitySystemComponent* AbilitySystem, FGameplayEffectSpec const& Spec,
|
||||
FActiveGameplayEffectHandle ActiveEffect)
|
||||
{
|
||||
Log("EFFECT APPLIED?");
|
||||
FGameplayTagContainer Tags;
|
||||
Spec.GetAllAssetTags(Tags);
|
||||
Event_OnEffectAppliedAssetTags.Broadcast(Tags);
|
||||
}
|
||||
|
||||
void UGasaAbilitySystemComp::InitAbilityActorInfo(AActor* InOwnerActor, AActor* InAvatarActor)
|
||||
{
|
||||
Super::InitAbilityActorInfo(InOwnerActor, InAvatarActor);
|
||||
}
|
||||
#include "GasaAbilitySystemComponent.h"
|
@ -1,27 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include "AbilitySystemComponent.h"
|
||||
|
||||
#include "GasaCommon.h"
|
||||
|
||||
#include "GasaAbilitySystemComponent.generated.h"
|
||||
|
||||
|
||||
DECLARE_MULTICAST_DELEGATE_OneParam(FEffectAssetTagsSig, FGameplayTagContainer const& /*Tags*/);
|
||||
|
||||
|
||||
UCLASS(BlueprintType)
|
||||
class GASA_API UGasaAbilitySystemComp : public UAbilitySystemComponent
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
|
||||
FEffectAssetTagsSig Event_OnEffectAppliedAssetTags;
|
||||
|
||||
void OnAbilityActorInfoSet();
|
||||
|
||||
void EffectApplied(UAbilitySystemComponent* AbilitySystem, FGameplayEffectSpec const& Spec, FActiveGameplayEffectHandle ActiveEffect);
|
||||
|
||||
#pragma region AbilitySystemComponent
|
||||
void InitAbilityActorInfo(AActor* InOwnerActor, AActor* InAvatarActor) override;
|
||||
#pragma endregion AbilitySystemComponent
|
||||
};
|
||||
};
|
||||
|
@ -155,13 +155,12 @@ void AGasaCharacter::PossessedBy(AController* NewController)
|
||||
if (GetMesh() && IsReplicatingMovement() && (GetRemoteRole() == ROLE_AutonomousProxy && GetNetConnection() != nullptr))
|
||||
GetMesh()->bOnlyAllowAutonomousTickPose = true;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
if (bAutoAbilitySystem)
|
||||
{
|
||||
// TODO(Ed): Do we need to do this for enemies?
|
||||
AbilitySystem->InitAbilityActorInfo(this, this);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void AGasaCharacter::SetPlayerDefaults()
|
||||
@ -180,12 +179,10 @@ void AGasaCharacter::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
|
||||
// TODO(Ed): Find out if this is the best spot todo this
|
||||
// There is also OnPossessed, PostInitializeComponents, etc...
|
||||
if (bAutoAbilitySystem)
|
||||
{
|
||||
// TODO(Ed): Do we need to do this for enemies?
|
||||
AbilitySystem->InitAbilityActorInfo(this, this);
|
||||
Cast<UGasaAbilitySystemComp>(AbilitySystem)->OnAbilityActorInfoSet();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -232,7 +232,8 @@ void AGasaGameMode::HandleSeamlessTravelPlayer(AController*& Controller)
|
||||
|
||||
void AGasaGameMode::InitializeHUDForPlayer_Implementation(APlayerController* NewPlayer)
|
||||
{
|
||||
Super::InitializeHUDForPlayer_Implementation(NewPlayer);
|
||||
// Super::InitializeHUDForPlayer_Implementation(NewPlayer);
|
||||
NewPlayer->ClientSetHUD(HUDClass);
|
||||
}
|
||||
|
||||
void AGasaGameMode::InitSeamlessTravelPlayer(AController* NewController)
|
||||
|
147
Project/Source/Gasa/Game/GasaGameState.cpp~
Normal file
147
Project/Source/Gasa/Game/GasaGameState.cpp~
Normal file
@ -0,0 +1,147 @@
|
||||
#include "GasaGameState.h"
|
||||
|
||||
#include "CogAll.h"
|
||||
#include "CogWindowManager.h"
|
||||
#include "GasaPlayerState.h"
|
||||
#include "GasaGameInstance.h"
|
||||
#include "Net/UnrealNetwork.h"
|
||||
#include "Networking/GasaNetLibrary_Inlines.h"
|
||||
using namespace Gasa;
|
||||
|
||||
AGasaGameState::AGasaGameState()
|
||||
{
|
||||
// Enable ticking
|
||||
PrimaryActorTick.bCanEverTick = true;
|
||||
PrimaryActorTick.SetTickFunctionEnable(true);
|
||||
PrimaryActorTick.bStartWithTickEnabled = true;
|
||||
|
||||
// Replication
|
||||
bReplicates = true;
|
||||
bNetLoadOnClient = false;
|
||||
NetDormancy = DORM_Awake;
|
||||
NetCullDistanceSquared = NetCullDist_Default;
|
||||
NetUpdateFrequency = 10.0f;
|
||||
MinNetUpdateFrequency = 1.0f;
|
||||
NetPriority = 5.0f;
|
||||
}
|
||||
|
||||
#pragma region GameFramework
|
||||
void AGasaGameState::OnGameFrameworkInitialized()
|
||||
{
|
||||
NetLog("Received gameplay framework initialization.");
|
||||
if (IsServer())
|
||||
{
|
||||
if (PlayerArray.Num() > 0)
|
||||
{
|
||||
ListenServerHost = Cast<AGasaPlayerState>(PlayerArray[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
NetLog("Was not able to assign HostingPlayer!", ELogV::Error);
|
||||
}
|
||||
}
|
||||
BP_OnGameFrameworkInitialized();
|
||||
}
|
||||
#pragma endregion GameFramework
|
||||
|
||||
#pragma region Networking
|
||||
void AGasaGameState::Client_OnRep_OnlinePlayers()
|
||||
{
|
||||
}
|
||||
#pragma endregion Networking
|
||||
|
||||
#pragma region Seamless Travel
|
||||
void AGasaGameState::Multicast_R_NotifySeamlessTravelEnd_Implementation()
|
||||
{
|
||||
NetLog("Multicast_R_NotifySeamlessTravelEnd_Implementation");
|
||||
BP_Event_OnSeamlessTravelEnd.Broadcast();
|
||||
Event_OnSeamlessTravelEnd.Broadcast();
|
||||
}
|
||||
#pragma endregion Seamless Travel
|
||||
|
||||
#pragma region GameStateBase
|
||||
void AGasaGameState::HandleBeginPlay()
|
||||
{
|
||||
Super::HandleBeginPlay();
|
||||
NetLog("HandleBeginPlay: Directly called from GM");
|
||||
}
|
||||
|
||||
void AGasaGameState::SeamlessTravelTransitionCheckpoint(bool bToTransitionMap)
|
||||
{
|
||||
Super::SeamlessTravelTransitionCheckpoint(bToTransitionMap);
|
||||
NetLog("SeamlessTravelTransitionCheckpoint");
|
||||
NetLog(FString("ToTransitionMap: ") + FString(bToTransitionMap ? "true" : "false"));
|
||||
|
||||
if (bToTransitionMap)
|
||||
{
|
||||
Event_OnSeamlessTravelStart.Broadcast();
|
||||
}
|
||||
else
|
||||
{
|
||||
Multicast_R_NotifySeamlessTravelEnd();
|
||||
}
|
||||
}
|
||||
#pragma endregion GameStateBase
|
||||
|
||||
#pragma region Actor
|
||||
void AGasaGameState::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
NetLog("BeginPlay");
|
||||
|
||||
// Notified as initialized here as any possible components should also be initialized by this point.
|
||||
UGasaGameInstance*
|
||||
GI = GetGameInstance<UGasaGameInstance>();
|
||||
GI->Event_OnGameFrameworkInitialized.AddDynamic(this, & ThisClass::OnGameFrameworkInitialized);
|
||||
GI->NotifyGameFrameworkClassReady(EGameFrameworkClassFlag::GameState);
|
||||
|
||||
#if ENABLE_COG
|
||||
CogWindowManager = NewObject<UCogWindowManager>(this);
|
||||
CogWindowManagerRef = CogWindowManager;
|
||||
|
||||
// Add all the built-in windows
|
||||
Cog::AddAllWindows(*CogWindowManager);
|
||||
#endif //ENABLE_COG
|
||||
}
|
||||
|
||||
void AGasaGameState::PostInitializeComponents()
|
||||
{
|
||||
NetLog("PostInitializeComponents");
|
||||
Super::PostInitializeComponents();
|
||||
|
||||
if ( ! GetWorld()->IsEditorWorld() && IsServer())
|
||||
{
|
||||
OnlinePlayers.Empty();
|
||||
#if 0
|
||||
const auto GI = Cast<UGasaGameInstance>(GetGameInstance());
|
||||
if (GI != nullptr)
|
||||
{
|
||||
int32 NumConnections = GI->SessionSettings.bPublicGame
|
||||
? GI->SessionSettings.PublicConnections
|
||||
: GI->SessionSettings.PrivateConnections;
|
||||
OnlinePlayers.Init(nullptr, NumConnections);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void AGasaGameState::Tick(float DeltaSeconds)
|
||||
{
|
||||
Super::Tick(DeltaSeconds);
|
||||
|
||||
#if ENABLE_COG
|
||||
if (CogWindowManager)
|
||||
CogWindowManager->Tick(DeltaSeconds);
|
||||
#endif //ENABLE_COG
|
||||
}
|
||||
#pragma endregion Actor
|
||||
|
||||
#pragma region UObject
|
||||
void AGasaGameState::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
|
||||
{
|
||||
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
|
||||
|
||||
DOREPLIFETIME(AGasaGameState, ListenServerHost);
|
||||
DOREPLIFETIME(AGasaGameState, OnlinePlayers);
|
||||
}
|
||||
#pragma endregion UObject
|
@ -3,7 +3,6 @@
|
||||
#include "Networking/GasaNetLibrary_Inlines.h"
|
||||
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "DrawDebugHelpers.h"
|
||||
#include "Engine/LocalPlayer.h"
|
||||
#include "EnhancedInputComponent.h"
|
||||
#include "EnhancedInputSubsystems.h"
|
||||
@ -19,7 +18,6 @@
|
||||
#include "GasaGameInstance.h"
|
||||
#include "GasaGameState.h"
|
||||
#include "GasaPlayerState.h"
|
||||
#include "AbilitySystem/GasaAbilitySystemComponent.h"
|
||||
#include "Actors/CameraMount.h"
|
||||
#include "UI/GasaHUD.h"
|
||||
#include "UI/WidgetController.h"
|
||||
@ -68,18 +66,14 @@ void AGasaPlayerController::NetOwner_OnReady()
|
||||
if (IsClient())
|
||||
ServerRPC_R_NotifyOwningClientReady();
|
||||
|
||||
Cam = GetWorld()->SpawnActor<ACameraMount>(GetDevOptions()->Template_PlayerCamera.Get(), FActorSpawnParameters() );
|
||||
SetViewTarget(Cam);
|
||||
|
||||
AGasaPlayerState* PS = GetPlayerState();
|
||||
APlayerCharacter* PlayerChar = GetPawn<APlayerCharacter>();
|
||||
{
|
||||
PlayerChar->AbilitySystem = PS->AbilitySystem;
|
||||
PlayerChar->Attributes = PS->Attributes;
|
||||
PS->AbilitySystem->InitAbilityActorInfo(PS, PlayerChar);
|
||||
Cast<UGasaAbilitySystemComp>(PS->AbilitySystem)->OnAbilityActorInfoSet();
|
||||
PlayerChar->AbilitySystem->InitAbilityActorInfo(PS, this);
|
||||
Cam->AttachToActor(PlayerChar, FAttachmentTransformRules::KeepRelativeTransform);
|
||||
}
|
||||
Cam->AttachToActor(PlayerChar, FAttachmentTransformRules::KeepRelativeTransform);
|
||||
}
|
||||
|
||||
void AGasaPlayerController::OnGameFrameworkInitialized()
|
||||
@ -422,11 +416,15 @@ void AGasaPlayerController::BeginPlay()
|
||||
void AGasaPlayerController::PostInitializeComponents()
|
||||
{
|
||||
Super::PostInitializeComponents();
|
||||
|
||||
Cam = GetWorld()->SpawnActor<ACameraMount>(GetDevOptions()->Template_PlayerCamera.Get(), FActorSpawnParameters() );
|
||||
SetViewTarget(Cam);
|
||||
}
|
||||
|
||||
void AGasaPlayerController::Tick(float DeltaSeconds)
|
||||
{
|
||||
Super::Tick(DeltaSeconds);
|
||||
|
||||
#if 0
|
||||
switch (HighlightState)
|
||||
{
|
||||
|
@ -84,15 +84,6 @@ public class Gasa : ModuleRules
|
||||
PrivateIncludePathModuleNames.AddRange( new string[]
|
||||
{
|
||||
"CogCommon",
|
||||
"CogAbility",
|
||||
"CogAI",
|
||||
"CogAll",
|
||||
"CogDebug",
|
||||
"CogDebugEditor",
|
||||
"CogEngine",
|
||||
"CogImgui",
|
||||
"CogInput",
|
||||
"CogWindow",
|
||||
});
|
||||
PrivateDependencyModuleNames.AddRange(new string[]
|
||||
{
|
||||
|
@ -23,7 +23,6 @@
|
||||
struct FInputActionValue;
|
||||
struct FGameplayEffectContextHandle;
|
||||
struct FGameplayEffectModCallbackData;
|
||||
struct FGameplayTagContainer;
|
||||
struct FOnAttributeChangeData;
|
||||
struct FReplicationFlags;
|
||||
|
||||
@ -45,7 +44,6 @@ class UInputAction;
|
||||
class UInputMappingContext;
|
||||
class USphereComponent;
|
||||
class USpringArmComponent;
|
||||
class UTexture2D;
|
||||
#pragma endregion Engine Forwards
|
||||
|
||||
#pragma region Engine Plugin Forwards
|
||||
@ -74,7 +72,6 @@ class UGasaObject;
|
||||
class UGasaOverlay;
|
||||
class UGasaProgressBar;
|
||||
class UGasaSizeBox;
|
||||
class UGasaUserWidget;
|
||||
class UHostWidgetController;
|
||||
class UHUDHostWidget;
|
||||
class UWidgetController;
|
||||
@ -163,8 +160,7 @@ namespace Gasa
|
||||
|
||||
// Works for Unreal 5.4, Win64 MSVC (untested in other scenarios, for now)
|
||||
inline
|
||||
void Log( FString Message
|
||||
, EGasaVerbosity Verbosity = EGasaVerbosity::Log
|
||||
void Log( FString Message, EGasaVerbosity Verbosity = EGasaVerbosity::Log
|
||||
, FLogCategoryBase& Category = LogGasa
|
||||
, bool DumpStack = false
|
||||
, int32 Line = __builtin_LINE()
|
||||
|
@ -2,14 +2,6 @@
|
||||
|
||||
#include "GasaCommon.h"
|
||||
|
||||
template<typename RowType>
|
||||
inline
|
||||
RowType* GetDataTableRowByTag(UDataTable* DT, FGameplayTag& Tag)
|
||||
{
|
||||
RowType* Row = DT->FindRow<RowType>(Tag.GetTagName(), TEXT(""));
|
||||
return Row;
|
||||
}
|
||||
|
||||
template<typename KeyType, typename ValueType>
|
||||
inline
|
||||
void RemoveKeys(TMap<KeyType, ValueType> Map, TArray<KeyType> Keys)
|
||||
|
@ -1,11 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "Engine/DataTable.h"
|
||||
#include "Engine/DeveloperSettings.h"
|
||||
|
||||
#include "GasaCommon.h"
|
||||
#include "GasaDevOptions.generated.h"
|
||||
|
||||
#include "GasaDevOptions.generated.h"
|
||||
|
||||
UCLASS(Config=Game, DefaultConfig, meta=(DisplayName="Gasa"))
|
||||
class GASA_API UGasaDevOptions : public UDeveloperSettings
|
||||
@ -16,9 +15,6 @@ public:
|
||||
// NOTE(Ed): Any Soft-References must have their includes defined in GasaDevOptions.cpp
|
||||
// They are used by GasaGen for the GasaDevOptionsCache
|
||||
|
||||
UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="UI")
|
||||
TSoftObjectPtr<UDataTable> TaggedMessageTable;
|
||||
|
||||
UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="UI")
|
||||
TSoftClassPtr<ACameraMount> Template_PlayerCamera;
|
||||
|
||||
|
@ -11,9 +11,6 @@ void FGasaDevOptionsCache::CachedDevOptions()
|
||||
{
|
||||
UGasaDevOptions* DevOpts = GetMutDevOptions();
|
||||
|
||||
TaggedMessageTable = DevOpts->TaggedMessageTable.LoadSynchronous();
|
||||
ensureMsgf( TaggedMessageTable != nullptr, TEXT( "TaggedMessageTable is null, DO NOT RUN PIE or else you may get a crash if not handled in BP or C++" ) );
|
||||
|
||||
Template_PlayerCamera = DevOpts->Template_PlayerCamera.LoadSynchronous();
|
||||
ensureMsgf(
|
||||
Template_PlayerCamera != nullptr, TEXT( "Template_PlayerCamera is null, DO NOT RUN PIE or else you may get a crash if not handled in BP or C++" )
|
||||
|
@ -8,8 +8,6 @@ struct GASA_API FGasaDevOptionsCache
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY()
|
||||
UObject* TaggedMessageTable;
|
||||
UPROPERTY()
|
||||
UClass* Template_PlayerCamera;
|
||||
UPROPERTY()
|
||||
|
@ -14,15 +14,12 @@ void AGasaHUD::InitHostWidget(FWidgetControllerData const* WidgetControllerData)
|
||||
HostWidgetController = NewObject<UHostWidgetController>(this, GetDevOptions()->Template_HostWidgetController.Get());
|
||||
HostWidgetController->Data = (* WidgetControllerData);
|
||||
HostWidget->SetWidgetController(HostWidgetController);
|
||||
HostWidgetController->BindCallbacksToDependencies();
|
||||
|
||||
HostWidgetController->BroadcastInitialValues();
|
||||
HostWidget->AddToViewport();
|
||||
}
|
||||
|
||||
void AGasaHUD::DrawHUD()
|
||||
{
|
||||
Super::DrawHUD();
|
||||
}
|
||||
|
||||
#pragma region HUD
|
||||
void AGasaHUD::ShowHUD()
|
||||
{
|
||||
@ -35,9 +32,4 @@ void AGasaHUD::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
}
|
||||
|
||||
void AGasaHUD::Tick(float DeltaSeconds)
|
||||
{
|
||||
Super::Tick(DeltaSeconds);
|
||||
}
|
||||
#pragma endregion Actor
|
||||
|
@ -21,14 +21,11 @@ public:
|
||||
|
||||
void InitHostWidget(FWidgetControllerData const* WidgetControllerData);
|
||||
|
||||
#pragma region HUD
|
||||
void DrawHUD() override;
|
||||
#pragma region HUD
|
||||
void ShowHUD() override;
|
||||
#pragma endregion HUD
|
||||
|
||||
#pragma region Actor
|
||||
void BeginPlay() override;
|
||||
|
||||
void Tick(float DeltaSeconds) override;
|
||||
#pragma endregion Actor
|
||||
};
|
||||
|
@ -2,9 +2,6 @@
|
||||
#include "AbilitySystem/GasaAbilitySystemComponent_Inlines.h"
|
||||
#include "AbilitySystem/GasaAttributeSet.h"
|
||||
#include "GameplayEffectTypes.h"
|
||||
#include "GasaDevOptions.h"
|
||||
#include "TaggedMessageRow.h"
|
||||
using namespace Gasa;
|
||||
|
||||
|
||||
|
||||
@ -33,20 +30,6 @@ void UHostWidgetController::MaxManaChanged( FOnAttributeChangeData const& Attrib
|
||||
}
|
||||
#pragma endregion Attribute Changed Callbacks
|
||||
|
||||
void UHostWidgetController::OnEffectAppliedAssetTags( FGameplayTagContainer const& AssetTags )
|
||||
{
|
||||
UDataTable* TaggedMessages = GetDevOptions()->TaggedMessageTable.Get();
|
||||
for ( FGameplayTag const& Tag : AssetTags )
|
||||
{
|
||||
FGameplayTag MessageTagCategory = FGameplayTag::RequestGameplayTag( FName( "Message" ) );
|
||||
if ( ! Tag.MatchesTag( MessageTagCategory ) )
|
||||
continue;
|
||||
|
||||
FTaggedMessageRow* Row = TaggedMessages->FindRow<FTaggedMessageRow>( Tag.GetTagName(), TEXT( "" ) );
|
||||
OnTaggedAssetMessage.Broadcast( *Row );
|
||||
}
|
||||
}
|
||||
|
||||
void UHostWidgetController::BroadcastInitialValues()
|
||||
{
|
||||
// This function is managed by: GenGasa/GenGasa_HostWidgetController.cpp
|
||||
@ -83,6 +66,4 @@ void UHostWidgetController::BindCallbacksToDependencies()
|
||||
FOnGameplayAttributeValueChange& MaxManaAttributeChangedDelegate =
|
||||
AbilitySystem->GetGameplayAttributeValueChangeDelegate( GasaAttribs->GetMaxManaAttribute() );
|
||||
MaxManaAttributeChangedDelegate.AddUObject( this, &ThisClass::MaxManaChanged );
|
||||
|
||||
AbilitySystem->Event_OnEffectAppliedAssetTags.AddUObject( this, &UHostWidgetController::OnEffectAppliedAssetTags );
|
||||
}
|
||||
|
@ -1,10 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "GasaCommon.h"
|
||||
#include "TaggedMessageRow.h"
|
||||
#include "WidgetController.h"
|
||||
#include "HostWidgetController.generated.h"
|
||||
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam( FAttributeFloatChangedSig, float, NewValue );
|
||||
|
||||
UCLASS( Blueprintable, BlueprintType )
|
||||
@ -33,11 +30,6 @@ public:
|
||||
void MaxManaChanged( FOnAttributeChangeData const& Data );
|
||||
#pragma endregion Attribute Events
|
||||
|
||||
UPROPERTY( BlueprintAssignable, Category = "Messages" )
|
||||
FTaggedMessageRowSig OnTaggedAssetMessage;
|
||||
|
||||
void OnEffectAppliedAssetTags( FGameplayTagContainer const& AssetTags );
|
||||
|
||||
#pragma region WidgetController
|
||||
void BroadcastInitialValues() override;
|
||||
void BindCallbacksToDependencies() override;
|
||||
|
@ -1,28 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "GameplayTagContainer.h"
|
||||
#include "GasaCommon.h"
|
||||
#include "Engine/DataTable.h"
|
||||
#include "Templates/SubclassOf.h"
|
||||
|
||||
#include "TaggedMessageRow.generated.h"
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FTaggedMessageRow : public FTableRowBase
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly)
|
||||
FGameplayTag Tag;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly)
|
||||
FText Message;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly)
|
||||
TSubclassOf<UGasaUserWidget> MessageTemplate;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly)
|
||||
UTexture2D* Image;
|
||||
};
|
||||
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FTaggedMessageRowSig, FTaggedMessageRow, Message);
|
@ -209,8 +209,6 @@ void gen_UHostWidgetController()
|
||||
UGasaAttributeSet* GasaAttribs = Cast<UGasaAttributeSet>( Data.Attributes );
|
||||
|
||||
<bindings>
|
||||
|
||||
AbilitySystem->Event_OnEffectAppliedAssetTags.AddUObject(this, & UHostWidgetController::OnEffectAppliedAssetTags);
|
||||
})
|
||||
));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user