mirror of
https://github.com/Ed94/Cog.git
synced 2026-06-13 00:01:37 -07:00
unify abilities data asset
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -216,13 +216,13 @@ void ACogAbilityReplicator::Server_ResetAllTweaks_Implementation()
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void ACogAbilityReplicator::SetTweakValue(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex, float Value)
|
||||
void ACogAbilityReplicator::SetTweakValue(const UCogAbilityDataAsset* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex, float Value)
|
||||
{
|
||||
Server_SetTweakValue(TweaksAsset, TweakIndex, TweakCategoryIndex, Value);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void ACogAbilityReplicator::Server_SetTweakValue_Implementation(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex, float Value)
|
||||
void ACogAbilityReplicator::Server_SetTweakValue_Implementation(const UCogAbilityDataAsset* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex, float Value)
|
||||
{
|
||||
if (TweaksAsset == nullptr)
|
||||
{
|
||||
@@ -252,7 +252,7 @@ void ACogAbilityReplicator::Server_SetTweakValue_Implementation(const UCogAbilit
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void ACogAbilityReplicator::ApplyAllTweaksOnActor(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakCategoryIndex, AActor* Actor)
|
||||
void ACogAbilityReplicator::ApplyAllTweaksOnActor(const UCogAbilityDataAsset* TweaksAsset, int32 TweakCategoryIndex, AActor* Actor)
|
||||
{
|
||||
if (TweaksAsset == nullptr)
|
||||
{
|
||||
@@ -297,7 +297,7 @@ void ACogAbilityReplicator::ApplyTweakOnActor(AActor* Actor, const FCogAbilityTw
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
float ACogAbilityReplicator::GetTweakCurrentValue(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex)
|
||||
float ACogAbilityReplicator::GetTweakCurrentValue(const UCogAbilityDataAsset* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex)
|
||||
{
|
||||
float* Value = GetTweakCurrentValuePtr(TweaksAsset, TweakIndex, TweakCategoryIndex);
|
||||
if (Value == nullptr)
|
||||
@@ -309,7 +309,7 @@ float ACogAbilityReplicator::GetTweakCurrentValue(const UCogAbilityDataAsset_Twe
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
float* ACogAbilityReplicator::GetTweakCurrentValuePtr(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex)
|
||||
float* ACogAbilityReplicator::GetTweakCurrentValuePtr(const UCogAbilityDataAsset* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex)
|
||||
{
|
||||
TweakCurrentValues.SetNum(TweaksAsset->Tweaks.Num() * TweaksAsset->TweaksCategories.Num());
|
||||
|
||||
@@ -324,7 +324,7 @@ float* ACogAbilityReplicator::GetTweakCurrentValuePtr(const UCogAbilityDataAsset
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void ACogAbilityReplicator::SetTweakCurrentValue(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex, float Value)
|
||||
void ACogAbilityReplicator::SetTweakCurrentValue(const UCogAbilityDataAsset* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex, float Value)
|
||||
{
|
||||
if (TweaksAsset == nullptr)
|
||||
{
|
||||
@@ -344,13 +344,13 @@ void ACogAbilityReplicator::SetTweakCurrentValue(const UCogAbilityDataAsset_Twea
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void ACogAbilityReplicator::SetTweakProfile(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 ProfileIndex)
|
||||
void ACogAbilityReplicator::SetTweakProfile(const UCogAbilityDataAsset* TweaksAsset, int32 ProfileIndex)
|
||||
{
|
||||
Server_SetTweakProfile(TweaksAsset, ProfileIndex);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void ACogAbilityReplicator::Server_SetTweakProfile_Implementation(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 ProfileIndex)
|
||||
void ACogAbilityReplicator::Server_SetTweakProfile_Implementation(const UCogAbilityDataAsset* TweaksAsset, int32 ProfileIndex)
|
||||
{
|
||||
if (TweaksAsset == nullptr)
|
||||
{
|
||||
@@ -396,7 +396,7 @@ void ACogAbilityReplicator::Server_SetTweakProfile_Implementation(const UCogAbil
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void ACogAbilityReplicator::GetActorsFromTweakCategory(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakCategoryIndex, TArray<AActor*>& Actors)
|
||||
void ACogAbilityReplicator::GetActorsFromTweakCategory(const UCogAbilityDataAsset* TweaksAsset, int32 TweakCategoryIndex, TArray<AActor*>& Actors)
|
||||
{
|
||||
if (TweaksAsset == nullptr)
|
||||
{
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
#include "CogAbilityWindow_Abilities.h"
|
||||
|
||||
#include "CogAbilityDataAsset_Abilities.h"
|
||||
#include "CogAbilityDataAsset.h"
|
||||
#include "CogAbilityHelper.h"
|
||||
#include "CogImguiHelper.h"
|
||||
#include "CogWindowWidgets.h"
|
||||
#include "imgui.h"
|
||||
#include "imgui_internal.h"
|
||||
|
||||
ImVec4 ActiveColor(1.0f, 0.8f, 0.0f, 1.0f);
|
||||
ImVec4 DeactiveColor(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void UCogAbilityWindow_Abilities::RenderHelp()
|
||||
{
|
||||
@@ -17,7 +15,7 @@ void UCogAbilityWindow_Abilities::RenderHelp()
|
||||
"Click the ability check box to force its activation or deactivation. "
|
||||
"Right click an ability to open or close the ability separate window. "
|
||||
"Use the 'Give Ability' menu to manually give an ability from a list defined in the '%s' data asset. "
|
||||
, TCHAR_TO_ANSI(*GetNameSafe(AbilitiesAsset.Get())));
|
||||
, TCHAR_TO_ANSI(*GetNameSafe(Asset.Get())));
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -108,10 +106,10 @@ void UCogAbilityWindow_Abilities::RenderAbiltiesMenu(AActor* Selection)
|
||||
{
|
||||
if (ImGui::BeginMenu("Give Ability"))
|
||||
{
|
||||
if (AbilitiesAsset != nullptr)
|
||||
if (Asset != nullptr)
|
||||
{
|
||||
int Index = 0;
|
||||
for (TSubclassOf<UGameplayAbility> AbilityClass : AbilitiesAsset->Abilities)
|
||||
for (TSubclassOf<UGameplayAbility> AbilityClass : Asset->Abilities)
|
||||
{
|
||||
ImGui::PushID(Index);
|
||||
|
||||
@@ -164,7 +162,11 @@ void UCogAbilityWindow_Abilities::RenderAbilitiesTable(UAbilitySystemComponent&
|
||||
|
||||
ImGui::PushID(Index);
|
||||
|
||||
ImVec4 Color = Spec.ActiveCount > 0 ? ActiveColor : DeactiveColor;
|
||||
ImVec4 Color(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
if (Asset != nullptr)
|
||||
{
|
||||
Color = FCogImguiHelper::ToImVec4(Spec.ActiveCount > 0 ? Asset->AbilityActiveColor : Asset->AbilityInactiveColor);
|
||||
}
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, Color);
|
||||
|
||||
//------------------------
|
||||
@@ -332,6 +334,12 @@ void UCogAbilityWindow_Abilities::RenderAbilityInfo(const UAbilitySystemComponen
|
||||
ImGui::TableSetupColumn("Property");
|
||||
ImGui::TableSetupColumn("Value");
|
||||
|
||||
ImVec4 Color(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
if (Asset != nullptr)
|
||||
{
|
||||
Color = FCogImguiHelper::ToImVec4(Spec.ActiveCount > 0 ? Asset->AbilityActiveColor : Asset->AbilityInactiveColor);
|
||||
}
|
||||
|
||||
//------------------------
|
||||
// Name
|
||||
//------------------------
|
||||
@@ -339,7 +347,6 @@ void UCogAbilityWindow_Abilities::RenderAbilityInfo(const UAbilitySystemComponen
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextColored(TextColor, "Name");
|
||||
ImGui::TableNextColumn();
|
||||
ImVec4 Color = Spec.ActiveCount > 0 ? ActiveColor : DeactiveColor;
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, Color);
|
||||
ImGui::Text("%s", TCHAR_TO_ANSI(*GetAbilityName(Ability)));
|
||||
ImGui::PopStyleColor(1);
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "AbilitySystemGlobals.h"
|
||||
#include "CogAbilityDataAsset.h"
|
||||
#include "CogAbilityHelper.h"
|
||||
#include "CogImguiHelper.h"
|
||||
#include "CogWindowWidgets.h"
|
||||
#include "AttributeSet.h"
|
||||
#include "EngineUtils.h"
|
||||
@@ -190,21 +192,24 @@ void UCogAbilityWindow_Attributes::RenderContent()
|
||||
|
||||
ImGui::TableNextRow();
|
||||
|
||||
ImVec4 Color;
|
||||
if (CurrentValue > BaseValue)
|
||||
FLinearColor Color = FLinearColor::White;
|
||||
if (Asset != nullptr)
|
||||
{
|
||||
Color = ImVec4(0.0f, 1.0f, 0.0f, 1.0f);
|
||||
}
|
||||
else if (CurrentValue < BaseValue)
|
||||
{
|
||||
Color = ImVec4(1.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
Color = ImVec4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
if (CurrentValue > BaseValue)
|
||||
{
|
||||
Color = Asset->PositiveEffectColor;
|
||||
}
|
||||
else if (CurrentValue < BaseValue)
|
||||
{
|
||||
Color = Asset->NegativeEffectColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
Color = Asset->NeutralEffectColor;
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, Color);
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, FCogImguiHelper::ToImVec4(Color));
|
||||
|
||||
//------------------------
|
||||
// Name
|
||||
@@ -228,7 +233,7 @@ void UCogAbilityWindow_Attributes::RenderContent()
|
||||
FCogWindowWidgets::EndTableTooltip();
|
||||
}
|
||||
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, Color);
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, FCogImguiHelper::ToImVec4(Color));
|
||||
|
||||
//------------------------
|
||||
// Base Value
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "CogAbilityWindow_Cheats.h"
|
||||
|
||||
#include "AbilitySystemGlobals.h"
|
||||
#include "CogAbilityDataAsset_Cheats.h"
|
||||
#include "CogAbilityDataAsset.h"
|
||||
#include "CogAbilityReplicator.h"
|
||||
#include "CogCommonAllegianceActorInterface.h"
|
||||
#include "CogDebugDraw.h"
|
||||
@@ -21,7 +21,7 @@ void UCogAbilityWindow_Cheats::RenderHelp()
|
||||
" [CTRL] to apply the cheat to controlled actor\n"
|
||||
" [ALT] to apply the cheat to the allies of the selected actor\n"
|
||||
" [SHIFT] to apply the cheat to the enemies of the selected actor\n"
|
||||
, TCHAR_TO_ANSI(*GetNameSafe(CheatsAsset.Get()))
|
||||
, TCHAR_TO_ANSI(*GetNameSafe(Asset.Get()))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -32,9 +32,9 @@ UCogAbilityWindow_Cheats::UCogAbilityWindow_Cheats()
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void UCogAbilityWindow_Cheats::SetCheatsAsset(const UCogAbilityDataAsset_Cheats* Value)
|
||||
void UCogAbilityWindow_Cheats::SetAsset(const UCogAbilityDataAsset* Value)
|
||||
{
|
||||
CheatsAsset = Value;
|
||||
Asset = Value;
|
||||
|
||||
if (bReapplyCheatsBetweenPlays == false)
|
||||
{
|
||||
@@ -48,7 +48,7 @@ void UCogAbilityWindow_Cheats::SetCheatsAsset(const UCogAbilityDataAsset_Cheats*
|
||||
}
|
||||
IsFirstLaunch = false;
|
||||
|
||||
if (CheatsAsset == nullptr)
|
||||
if (Asset == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -69,7 +69,7 @@ void UCogAbilityWindow_Cheats::SetCheatsAsset(const UCogAbilityDataAsset_Cheats*
|
||||
|
||||
for (const FString& AppliedCheatName : AppliedCheats)
|
||||
{
|
||||
if (const FCogAbilityCheat* Cheat = CheatsAsset->PersistentEffects.FindByPredicate(
|
||||
if (const FCogAbilityCheat* Cheat = Asset->PersistentEffects.FindByPredicate(
|
||||
[AppliedCheatName](const FCogAbilityCheat& Cheat) { return Cheat.Name == AppliedCheatName; }))
|
||||
{
|
||||
Replicator->ApplyCheat(LocalPawn, Targets, *Cheat);
|
||||
@@ -88,7 +88,7 @@ void UCogAbilityWindow_Cheats::RenderContent()
|
||||
return;
|
||||
}
|
||||
|
||||
if (CheatsAsset == nullptr)
|
||||
if (Asset == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -128,7 +128,7 @@ void UCogAbilityWindow_Cheats::RenderContent()
|
||||
bool bHasChanged = false;
|
||||
|
||||
int Index = 0;
|
||||
for (const FCogAbilityCheat& CheatEffect : CheatsAsset->PersistentEffects)
|
||||
for (const FCogAbilityCheat& CheatEffect : Asset->PersistentEffects)
|
||||
{
|
||||
ImGui::PushID(Index);
|
||||
bHasChanged |= AddCheat(ControlledActor, SelectedActor, CheatEffect, true);
|
||||
@@ -144,7 +144,7 @@ void UCogAbilityWindow_Cheats::RenderContent()
|
||||
{
|
||||
AppliedCheats.Empty();
|
||||
|
||||
for (const FCogAbilityCheat& CheatEffect : CheatsAsset->PersistentEffects)
|
||||
for (const FCogAbilityCheat& CheatEffect : Asset->PersistentEffects)
|
||||
{
|
||||
if (ACogAbilityReplicator::IsCheatActive(SelectedActor, CheatEffect))
|
||||
{
|
||||
@@ -155,7 +155,7 @@ void UCogAbilityWindow_Cheats::RenderContent()
|
||||
|
||||
ImGui::TableNextColumn();
|
||||
|
||||
for (const FCogAbilityCheat& CheatEffect : CheatsAsset->InstantEffects)
|
||||
for (const FCogAbilityCheat& CheatEffect : Asset->InstantEffects)
|
||||
{
|
||||
ImGui::PushID(Index);
|
||||
AddCheat(ControlledActor, SelectedActor, CheatEffect, false);
|
||||
@@ -180,17 +180,17 @@ bool UCogAbilityWindow_Cheats::AddCheat(AActor* ControlledActor, AActor* Selecte
|
||||
const FGameplayTagContainer& Tags = Cheat.Effect->GetDefaultObject<UGameplayEffect>()->InheritableGameplayEffectTags.CombinedTags;
|
||||
|
||||
FLinearColor Color;
|
||||
if (Tags.HasTag(CheatsAsset->NegativeEffectTag))
|
||||
if (Tags.HasTag(Asset->NegativeEffectTag))
|
||||
{
|
||||
Color = CheatsAsset->NegativeEffectColor;
|
||||
Color = Asset->NegativeEffectColor;
|
||||
}
|
||||
else if (Tags.HasTag(CheatsAsset->PositiveEffectTag))
|
||||
else if (Tags.HasTag(Asset->PositiveEffectTag))
|
||||
{
|
||||
Color = CheatsAsset->PositiveEffectColor;
|
||||
Color = Asset->PositiveEffectColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
Color = CheatsAsset->NeutralEffectColor;
|
||||
Color = Asset->NeutralEffectColor;
|
||||
}
|
||||
|
||||
FCogWindowWidgets::PushBackColor(FCogImguiHelper::ToImVec4(Color));
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "AbilitySystemGlobals.h"
|
||||
#include "AttributeSet.h"
|
||||
#include "CogAbilityDataAsset.h"
|
||||
#include "CogAbilityHelper.h"
|
||||
#include "CogWindowWidgets.h"
|
||||
#include "EngineUtils.h"
|
||||
@@ -20,7 +21,7 @@ void UCogAbilityWindow_Effects::RenderHelp()
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
UCogAbilityWindow_Effects::UCogAbilityWindow_Effects()
|
||||
{
|
||||
bHasMenu = true;
|
||||
bHasMenu = false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -88,21 +89,24 @@ void UCogAbilityWindow_Effects::RenderEffectRow(const UAbilitySystemComponent& A
|
||||
|
||||
const FGameplayTagContainer& Tags = Effect.InheritableGameplayEffectTags.CombinedTags;
|
||||
|
||||
ImVec4 Color;
|
||||
if (Tags.HasTag(NegativeEffectTag))
|
||||
FLinearColor Color = FLinearColor::White;
|
||||
if (Asset != nullptr)
|
||||
{
|
||||
Color = ImVec4(1.0f, 0.5f, 0.5f, 1.0f);
|
||||
}
|
||||
else if (Tags.HasTag(PositiveEffectTag))
|
||||
{
|
||||
Color = ImVec4(0.5f, 1.0f, 0.5f, 1.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
Color = ImVec4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
if (Tags.HasTag(Asset->NegativeEffectTag))
|
||||
{
|
||||
Color = Asset->NegativeEffectColor;
|
||||
}
|
||||
else if (Tags.HasTag(Asset->PositiveEffectTag))
|
||||
{
|
||||
Color = Asset->PositiveEffectColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
Color = Asset->NeutralEffectColor;
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, Color);
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, FCogImguiHelper::ToImVec4(Color));
|
||||
|
||||
if (ImGui::Selectable(TCHAR_TO_ANSI(*GetEffectName(Effect)), Selected == Index, ImGuiSelectableFlags_SpanAllColumns | ImGuiSelectableFlags_AllowItemOverlap | ImGuiSelectableFlags_AllowDoubleClick))
|
||||
{
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "CogAbilityWindow_Pools.h"
|
||||
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "CogAbilityDataAsset.h"
|
||||
#include "CogImguiHelper.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -9,7 +10,7 @@ void UCogAbilityWindow_Pools::RenderHelp()
|
||||
ImGui::Text(
|
||||
"This window displays attributes of the selected actor as pools. "
|
||||
"The pools can be configured in the '%s' data asset."
|
||||
, TCHAR_TO_ANSI(*GetNameSafe(PoolsAsset.Get()))
|
||||
, TCHAR_TO_ANSI(*GetNameSafe(Asset.Get()))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -18,7 +19,7 @@ void UCogAbilityWindow_Pools::RenderContent()
|
||||
{
|
||||
Super::RenderContent();
|
||||
|
||||
if (PoolsAsset == nullptr)
|
||||
if (Asset == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -34,7 +35,7 @@ void UCogAbilityWindow_Pools::RenderContent()
|
||||
ImGui::TableSetupColumn("Name", ImGuiTableColumnFlags_WidthStretch);
|
||||
ImGui::TableSetupColumn("Pool", ImGuiTableColumnFlags_WidthStretch);
|
||||
|
||||
for (const FCogAbilityPool& Pool : PoolsAsset->Pools)
|
||||
for (const FCogAbilityPool& Pool : Asset->Pools)
|
||||
{
|
||||
DrawPool(AbilitySystem, Pool);
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ void UCogAbilityWindow_Tags::RenderHelp()
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
UCogAbilityWindow_Tags::UCogAbilityWindow_Tags()
|
||||
{
|
||||
bHasMenu = true;
|
||||
bHasMenu = false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "CogAbilityWindow_Tweaks.h"
|
||||
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "CogAbilityDataAsset.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void UCogAbilityWindow_Tweaks::RenderHelp()
|
||||
@@ -9,7 +10,7 @@ void UCogAbilityWindow_Tweaks::RenderHelp()
|
||||
"This window can be used to apply tweaks to all the loaded actors. "
|
||||
"The tweaks are used to test various gameplay settings by actor category. "
|
||||
"The tweaks can be configured in the '%s' data asset. "
|
||||
, TCHAR_TO_ANSI(*GetNameSafe(TweaksAsset.Get()))
|
||||
, TCHAR_TO_ANSI(*GetNameSafe(Asset.Get()))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -18,7 +19,7 @@ void UCogAbilityWindow_Tweaks::RenderContent()
|
||||
{
|
||||
Super::RenderContent();
|
||||
|
||||
if (TweaksAsset == nullptr)
|
||||
if (Asset == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -41,9 +42,9 @@ void UCogAbilityWindow_Tweaks::RenderContent()
|
||||
|
||||
int32 CurrentTweakProfileIndex = Replicator->GetTweakProfileIndex();
|
||||
FName CurrentProfileName = FName("None");
|
||||
if (TweaksAsset->TweakProfiles.IsValidIndex(CurrentTweakProfileIndex))
|
||||
if (Asset->TweakProfiles.IsValidIndex(CurrentTweakProfileIndex))
|
||||
{
|
||||
CurrentProfileName = TweaksAsset->TweakProfiles[CurrentTweakProfileIndex].Name;
|
||||
CurrentProfileName = Asset->TweakProfiles[CurrentTweakProfileIndex].Name;
|
||||
}
|
||||
|
||||
if (ImGui::BeginCombo("Profile", TCHAR_TO_ANSI(*CurrentProfileName.ToString())))
|
||||
@@ -52,18 +53,18 @@ void UCogAbilityWindow_Tweaks::RenderContent()
|
||||
bool IsSelected = CurrentTweakProfileIndex == INDEX_NONE;
|
||||
if (ImGui::Selectable("None", IsSelected))
|
||||
{
|
||||
Replicator->SetTweakProfile(TweaksAsset.Get(), INDEX_NONE);
|
||||
Replicator->SetTweakProfile(Asset.Get(), INDEX_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
for (int32 TweakProfileIndex = 0; TweakProfileIndex < TweaksAsset->TweakProfiles.Num(); ++TweakProfileIndex)
|
||||
for (int32 TweakProfileIndex = 0; TweakProfileIndex < Asset->TweakProfiles.Num(); ++TweakProfileIndex)
|
||||
{
|
||||
const FCogAbilityTweakProfile& TweakProfile = TweaksAsset->TweakProfiles[TweakProfileIndex];
|
||||
const FCogAbilityTweakProfile& TweakProfile = Asset->TweakProfiles[TweakProfileIndex];
|
||||
bool IsSelected = TweakProfileIndex == CurrentTweakProfileIndex;
|
||||
|
||||
if (ImGui::Selectable(TCHAR_TO_ANSI(*TweakProfile.Name.ToString()), IsSelected))
|
||||
{
|
||||
Replicator->SetTweakProfile(TweaksAsset.Get(), TweakProfileIndex);
|
||||
Replicator->SetTweakProfile(Asset.Get(), TweakProfileIndex);
|
||||
}
|
||||
}
|
||||
ImGui::EndCombo();
|
||||
@@ -71,12 +72,12 @@ void UCogAbilityWindow_Tweaks::RenderContent()
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
if (ImGui::BeginTable("Tweaks", 1 + TweaksAsset->TweaksCategories.Num(), ImGuiTableFlags_Resizable | ImGuiTableFlags_NoBordersInBodyUntilResize))
|
||||
if (ImGui::BeginTable("Tweaks", 1 + Asset->TweaksCategories.Num(), ImGuiTableFlags_Resizable | ImGuiTableFlags_NoBordersInBodyUntilResize))
|
||||
{
|
||||
ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthStretch);
|
||||
for (int32 TweakCategoryIndex = 0; TweakCategoryIndex < TweaksAsset->TweaksCategories.Num(); ++TweakCategoryIndex)
|
||||
for (int32 TweakCategoryIndex = 0; TweakCategoryIndex < Asset->TweaksCategories.Num(); ++TweakCategoryIndex)
|
||||
{
|
||||
FCogAbilityTweakCategory& Category = TweaksAsset->TweaksCategories[TweakCategoryIndex];
|
||||
const FCogAbilityTweakCategory& Category = Asset->TweaksCategories[TweakCategoryIndex];
|
||||
ImGui::TableSetupColumn(TCHAR_TO_ANSI(*Category.Name), ImGuiTableColumnFlags_WidthStretch);
|
||||
}
|
||||
ImGui::TableHeadersRow();
|
||||
@@ -84,7 +85,7 @@ void UCogAbilityWindow_Tweaks::RenderContent()
|
||||
ImGui::TableNextRow();
|
||||
|
||||
int32 TweakIndex = 0;
|
||||
for (FCogAbilityTweak& Tweak : TweaksAsset->Tweaks)
|
||||
for (const FCogAbilityTweak& Tweak : Asset->Tweaks)
|
||||
{
|
||||
if (Tweak.Effect != nullptr)
|
||||
{
|
||||
@@ -93,7 +94,7 @@ void UCogAbilityWindow_Tweaks::RenderContent()
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::Text("%s", TCHAR_TO_ANSI(*Tweak.Name.ToString()));
|
||||
|
||||
for (int TweakCategoryIndex = 0; TweakCategoryIndex < TweaksAsset->TweaksCategories.Num(); ++TweakCategoryIndex)
|
||||
for (int TweakCategoryIndex = 0; TweakCategoryIndex < Asset->TweaksCategories.Num(); ++TweakCategoryIndex)
|
||||
{
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::PushID(TweakCategoryIndex);
|
||||
@@ -113,22 +114,22 @@ void UCogAbilityWindow_Tweaks::RenderContent()
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void UCogAbilityWindow_Tweaks::DrawTweak(ACogAbilityReplicator* Replicator, int32 TweakIndex, int32 TweakCategoryIndex)
|
||||
{
|
||||
if (TweaksAsset->TweaksCategories.IsValidIndex(TweakCategoryIndex) == false)
|
||||
if (Asset->TweaksCategories.IsValidIndex(TweakCategoryIndex) == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
float* Value = Replicator->GetTweakCurrentValuePtr(TweaksAsset.Get(), TweakIndex, TweakCategoryIndex);
|
||||
float* Value = Replicator->GetTweakCurrentValuePtr(Asset.Get(), TweakIndex, TweakCategoryIndex);
|
||||
if (Value == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const FCogAbilityTweakCategory& Category = TweaksAsset->TweaksCategories[TweakCategoryIndex];
|
||||
const FCogAbilityTweakCategory& Category = Asset->TweaksCategories[TweakCategoryIndex];
|
||||
|
||||
FCogWindowWidgets::PushBackColor(FCogImguiHelper::ToImVec4(Category.Color));
|
||||
ImGui::PushItemWidth(-1);
|
||||
ImGui::SliderFloat("##Value", Value, TweaksAsset->TweakMinValue, TweaksAsset->TweakMaxValue, "%+0.0f%%", 1.0f);
|
||||
ImGui::SliderFloat("##Value", Value, Asset->TweakMinValue, Asset->TweakMaxValue, "%+0.0f%%", 1.0f);
|
||||
ImGui::PopItemWidth();
|
||||
FCogWindowWidgets::PopBackColor();
|
||||
|
||||
@@ -146,6 +147,6 @@ void UCogAbilityWindow_Tweaks::DrawTweak(ACogAbilityReplicator* Replicator, int3
|
||||
|
||||
if (bUpdateValue)
|
||||
{
|
||||
Replicator->SetTweakValue(TweaksAsset.Get(), TweakIndex, TweakCategoryIndex, *Value);
|
||||
Replicator->SetTweakValue(Asset.Get(), TweakIndex, TweakCategoryIndex, *Value);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,203 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Engine/DataAsset.h"
|
||||
#include "GameplayEffect.h"
|
||||
#include "CogAbilityDataAsset.generated.h"
|
||||
|
||||
|
||||
class UGameplayEffect;
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct COGABILITY_API FCogAbilityCheat
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FString Name;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TSubclassOf<UGameplayEffect> Effect;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct COGABILITY_API FCogAbilityPool
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FString Name;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayAttribute Value;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayAttribute Min;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayAttribute Max;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayAttribute Regen;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FLinearColor Color = FLinearColor(0.5f, 0.5f, 0.5f, 1.0f);
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FLinearColor BackColor = FLinearColor(0.15, 0.15, 0.15, 1.0f);
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct FCogAbilityTweak
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FName Name;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TSubclassOf<UGameplayEffect> Effect;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
float Multiplier = 0.01f;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
float AddPostMultiplier = 1.0f;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct FCogAbilityTweakCategory
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FString Name;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayTag Id;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TSubclassOf<AActor> ActorClass;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayTagContainer RequiredTags;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayTagContainer IgnoredTags;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FLinearColor Color = FLinearColor::White;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct FCogAbilityTweakProfileValue
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TSubclassOf<UGameplayEffect> Effect;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayTag CategoryId;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
float Value = 0.0f;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct FCogAbilityTweakProfile
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FName Name;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TArray<FCogAbilityTweakProfileValue> Tweaks;
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
UCLASS(Blueprintable)
|
||||
class COGABILITY_API UCogAbilityDataAsset : public UPrimaryDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
|
||||
UCogAbilityDataAsset() {}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// Abilities
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
UPROPERTY(Category = "Abilities", EditAnywhere)
|
||||
TArray<TSubclassOf<UGameplayAbility>> Abilities;
|
||||
|
||||
UPROPERTY(Category = "Abilities", EditAnywhere)
|
||||
FLinearColor AbilityActiveColor = FLinearColor(1.0f, 0.8f, 0.0f, 1.0f);
|
||||
|
||||
UPROPERTY(Category = "Abilities", EditAnywhere)
|
||||
FLinearColor AbilityInactiveColor = FLinearColor(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// Cheats
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
UPROPERTY(Category="Cheats", EditAnywhere)
|
||||
FGameplayTag NegativeEffectTag;
|
||||
|
||||
UPROPERTY(Category = "Cheats", EditAnywhere)
|
||||
FGameplayTag PositiveEffectTag;
|
||||
|
||||
UPROPERTY(Category = "Cheats", EditAnywhere)
|
||||
FLinearColor NeutralEffectColor = FLinearColor(0.5f, 0.5f, 0.5f, 1.0f);
|
||||
|
||||
UPROPERTY(Category = "Cheats", EditAnywhere)
|
||||
FLinearColor NegativeEffectColor = FLinearColor(1.0f, 0.5f, 0.5f, 1.0f);
|
||||
|
||||
UPROPERTY(Category = "Cheats", EditAnywhere)
|
||||
FLinearColor PositiveEffectColor = FLinearColor(0.0f, 1.0f, 0.5f, 1.0f);
|
||||
|
||||
UPROPERTY(Category = "Cheats", EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityCheat> PersistentEffects;
|
||||
|
||||
UPROPERTY(Category = "Cheats", EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityCheat> InstantEffects;
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// Pools
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
UPROPERTY(Category = "Pools", EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityPool> Pools;
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// Tweaks
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
UPROPERTY(Category = "Tweaks", EditAnywhere)
|
||||
float TweakMinValue = -100.0f;
|
||||
|
||||
UPROPERTY(Category = "Tweaks", EditAnywhere)
|
||||
float TweakMaxValue = 200.0f;
|
||||
|
||||
UPROPERTY(Category = "Tweaks", EditAnywhere)
|
||||
FGameplayTag SetByCallerMagnitudeTag;
|
||||
|
||||
UPROPERTY(Category = "Tweaks", EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityTweak> Tweaks;
|
||||
|
||||
UPROPERTY(Category = "Tweaks", EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityTweakCategory> TweaksCategories;
|
||||
|
||||
UPROPERTY(Category = "Tweaks", EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityTweakProfile> TweakProfiles;
|
||||
};
|
||||
@@ -1,21 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Engine/DataAsset.h"
|
||||
#include "CogAbilityDataAsset_Abilities.generated.h"
|
||||
|
||||
class UGameplayAbility;
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
UCLASS(Blueprintable)
|
||||
class COGABILITY_API UCogAbilityDataAsset_Abilities : public UPrimaryDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
|
||||
UCogAbilityDataAsset_Abilities() {}
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TArray<TSubclassOf<UGameplayAbility>> Abilities;
|
||||
};
|
||||
@@ -1,51 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Engine/DataAsset.h"
|
||||
#include "GameplayEffect.h"
|
||||
#include "CogAbilityDataAsset_Cheats.generated.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct COGABILITY_API FCogAbilityCheat
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FString Name;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TSubclassOf<UGameplayEffect> Effect;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
UCLASS(Blueprintable)
|
||||
class COGABILITY_API UCogAbilityDataAsset_Cheats : public UPrimaryDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
|
||||
UCogAbilityDataAsset_Cheats() {}
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayTag NegativeEffectTag;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayTag PositiveEffectTag;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FLinearColor NeutralEffectColor = FLinearColor(0.5f, 0.5f, 0.5f, 1.0f);
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FLinearColor NegativeEffectColor = FLinearColor(1.0f, 0.5f, 0.5f, 1.0f);
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FLinearColor PositiveEffectColor = FLinearColor(0.0f, 1.0f, 0.5f, 1.0f);
|
||||
|
||||
UPROPERTY(EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityCheat> PersistentEffects;
|
||||
|
||||
UPROPERTY(EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityCheat> InstantEffects;
|
||||
};
|
||||
@@ -1,47 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Engine/DataAsset.h"
|
||||
#include "CogAbilityDataAsset_Pools.generated.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct COGABILITY_API FCogAbilityPool
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FString Name;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayAttribute Value;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayAttribute Min;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayAttribute Max;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayAttribute Regen;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FLinearColor Color = FLinearColor(0.5f, 0.5f, 0.5f, 1.0f);
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FLinearColor BackColor = FLinearColor(0.15, 0.15, 0.15, 1.0f);
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
UCLASS(Blueprintable)
|
||||
class COGABILITY_API UCogAbilityDataAsset_Pools : public UPrimaryDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
|
||||
UCogAbilityDataAsset_Pools() {}
|
||||
|
||||
UPROPERTY(EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityPool> Pools;
|
||||
};
|
||||
@@ -1,108 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Engine/DataAsset.h"
|
||||
#include "CogAbilityDataAsset_Tweaks.generated.h"
|
||||
|
||||
class UGameplayEffect;
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct FCogAbilityTweak
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FName Name;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TSubclassOf<UGameplayEffect> Effect;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
float Multiplier = 0.01f;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
float AddPostMultiplier = 1.0f;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct FCogAbilityTweakCategory
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FString Name;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayTag Id;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TSubclassOf<AActor> ActorClass;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayTagContainer RequiredTags;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayTagContainer IgnoredTags;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FLinearColor Color = FLinearColor::White;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct FCogAbilityTweakProfileValue
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TSubclassOf<UGameplayEffect> Effect;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayTag CategoryId;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
float Value = 0.0f;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
USTRUCT()
|
||||
struct FCogAbilityTweakProfile
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FName Name;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TArray<FCogAbilityTweakProfileValue> Tweaks;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
UCLASS(Blueprintable)
|
||||
class COGABILITY_API UCogAbilityDataAsset_Tweaks : public UPrimaryDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
UCogAbilityDataAsset_Tweaks() {}
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
float TweakMinValue = -100.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
float TweakMaxValue = 200.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
FGameplayTag SetByCallerMagnitudeTag;
|
||||
|
||||
UPROPERTY(EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityTweak> Tweaks;
|
||||
|
||||
UPROPERTY(EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityTweakCategory> TweaksCategories;
|
||||
|
||||
UPROPERTY(EditAnywhere, meta = (TitleProperty = "Name"))
|
||||
TArray<FCogAbilityTweakProfile> TweakProfiles;
|
||||
};
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
class AActor;
|
||||
class UAbilitySystemComponent;
|
||||
class UCogAbilityDataAsset_Tweaks;
|
||||
class UCogAbilityDataAsset;
|
||||
struct FCogAbilityCheat;
|
||||
struct FCogAbilityTweak;
|
||||
struct FGameplayTag;
|
||||
@@ -38,15 +38,15 @@ public:
|
||||
|
||||
void ResetAllTweaks();
|
||||
|
||||
void SetTweakValue(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakIndex, int32 CategoryIndex, float Value);
|
||||
void SetTweakValue(const UCogAbilityDataAsset* TweaksAsset, int32 TweakIndex, int32 CategoryIndex, float Value);
|
||||
|
||||
void SetTweakProfile(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 ProfileIndex);
|
||||
void SetTweakProfile(const UCogAbilityDataAsset* TweaksAsset, int32 ProfileIndex);
|
||||
|
||||
int32 GetTweakProfileIndex() const { return TweakProfileIndex; }
|
||||
|
||||
float GetTweakCurrentValue(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakIndex, int32 CategoryIndex);
|
||||
float GetTweakCurrentValue(const UCogAbilityDataAsset* TweaksAsset, int32 TweakIndex, int32 CategoryIndex);
|
||||
|
||||
float* GetTweakCurrentValuePtr(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakIndex, int32 CategoryIndex);
|
||||
float* GetTweakCurrentValuePtr(const UCogAbilityDataAsset* TweaksAsset, int32 TweakIndex, int32 CategoryIndex);
|
||||
|
||||
private:
|
||||
|
||||
@@ -63,15 +63,15 @@ private:
|
||||
void Server_ResetAllTweaks();
|
||||
|
||||
UFUNCTION(Reliable, Server)
|
||||
void Server_SetTweakValue(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex, float Value);
|
||||
void Server_SetTweakValue(const UCogAbilityDataAsset* TweaksAsset, int32 TweakIndex, int32 TweakCategoryIndex, float Value);
|
||||
|
||||
UFUNCTION(Reliable, Server)
|
||||
void Server_SetTweakProfile(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 ProfileIndex);
|
||||
void Server_SetTweakProfile(const UCogAbilityDataAsset* TweaksAsset, int32 ProfileIndex);
|
||||
|
||||
void SetTweakCurrentValue(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakIndex, int32 CategoryIndex, float Value);
|
||||
void SetTweakCurrentValue(const UCogAbilityDataAsset* TweaksAsset, int32 TweakIndex, int32 CategoryIndex, float Value);
|
||||
void ApplyTweakOnActor(AActor* Actor, const FCogAbilityTweak& Tweak, float Value, const FGameplayTag& SetByCallerMagnitudeTag);
|
||||
void ApplyAllTweaksOnActor(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 TweakCategoryIndex, AActor* Actor);
|
||||
void GetActorsFromTweakCategory(const UCogAbilityDataAsset_Tweaks* TweaksAsset, int32 CategoryIndex, TArray<AActor*>& Actors);
|
||||
void ApplyAllTweaksOnActor(const UCogAbilityDataAsset* TweaksAsset, int32 TweakCategoryIndex, AActor* Actor);
|
||||
void GetActorsFromTweakCategory(const UCogAbilityDataAsset* TweaksAsset, int32 CategoryIndex, TArray<AActor*>& Actors);
|
||||
|
||||
TObjectPtr<APlayerController> OwnerPlayerController;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "CogAbilityWindow_Abilities.generated.h"
|
||||
|
||||
class UGameplayAbility;
|
||||
class UCogAbilityDataAsset_Abilities;
|
||||
class UCogAbilityDataAsset;
|
||||
struct FGameplayAbilitySpec;
|
||||
|
||||
UCLASS()
|
||||
@@ -17,7 +17,7 @@ public:
|
||||
|
||||
UCogAbilityWindow_Abilities();
|
||||
|
||||
TWeakObjectPtr<UCogAbilityDataAsset_Abilities> AbilitiesAsset;
|
||||
TWeakObjectPtr<const UCogAbilityDataAsset> Asset;
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#include "CogWindow.h"
|
||||
#include "CogAbilityWindow_Attributes.generated.h"
|
||||
|
||||
class UCogAbilityDataAsset;
|
||||
|
||||
UCLASS(Config = Cog)
|
||||
class COGABILITY_API UCogAbilityWindow_Attributes : public UCogWindow
|
||||
{
|
||||
@@ -13,6 +15,8 @@ public:
|
||||
|
||||
UCogAbilityWindow_Attributes();
|
||||
|
||||
TWeakObjectPtr<const UCogAbilityDataAsset> Asset;
|
||||
|
||||
protected:
|
||||
|
||||
virtual void RenderHelp() override;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "CogAbilityWindow_Cheats.generated.h"
|
||||
|
||||
class AActor;
|
||||
class UCogAbilityDataAsset_Cheats;
|
||||
class UCogAbilityDataAsset;
|
||||
struct FCogAbilityCheat;
|
||||
|
||||
UCLASS(Config = Cog)
|
||||
@@ -17,9 +17,9 @@ public:
|
||||
|
||||
UCogAbilityWindow_Cheats();
|
||||
|
||||
const UCogAbilityDataAsset_Cheats* GetCheatsAsset() const { return CheatsAsset.Get(); }
|
||||
const UCogAbilityDataAsset* GetAsset() const { return Asset.Get(); }
|
||||
|
||||
void SetCheatsAsset(const UCogAbilityDataAsset_Cheats* Value);
|
||||
void SetAsset(const UCogAbilityDataAsset* Value);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -42,5 +42,5 @@ private:
|
||||
UPROPERTY(Config)
|
||||
TArray<FString> AppliedCheats;
|
||||
|
||||
TWeakObjectPtr<const UCogAbilityDataAsset_Cheats> CheatsAsset;
|
||||
TWeakObjectPtr<const UCogAbilityDataAsset> Asset;
|
||||
};
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include "CogWindow.h"
|
||||
#include "CogAbilityWindow_Effects.generated.h"
|
||||
|
||||
class UCogAbilityDataAsset;
|
||||
|
||||
UCLASS()
|
||||
class COGABILITY_API UCogAbilityWindow_Effects : public UCogWindow
|
||||
{
|
||||
@@ -14,9 +16,7 @@ public:
|
||||
|
||||
UCogAbilityWindow_Effects();
|
||||
|
||||
FGameplayTag NegativeEffectTag;
|
||||
|
||||
FGameplayTag PositiveEffectTag;
|
||||
TWeakObjectPtr<const UCogAbilityDataAsset> Asset;
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "CogWindow.h"
|
||||
#include "CogAbilityWindow_Pools.generated.h"
|
||||
|
||||
class UCogAbilityDataAsset_Pools;
|
||||
class UCogAbilityDataAsset;
|
||||
class UAbilitySystemComponent;
|
||||
struct FCogAbilityPool;
|
||||
|
||||
@@ -16,7 +16,7 @@ class COGABILITY_API UCogAbilityWindow_Pools : public UCogWindow
|
||||
|
||||
public:
|
||||
|
||||
TWeakObjectPtr<UCogAbilityDataAsset_Pools> PoolsAsset;
|
||||
TWeakObjectPtr<const UCogAbilityDataAsset> Asset;
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "CogAbilityWindow_Tweaks.generated.h"
|
||||
|
||||
class ACogAbilityReplicator;
|
||||
class UCogAbilityDataAsset_Tweaks;
|
||||
class UCogAbilityDataAsset;
|
||||
|
||||
UCLASS()
|
||||
class COGABILITY_API UCogAbilityWindow_Tweaks : public UCogWindow
|
||||
@@ -13,7 +13,7 @@ class COGABILITY_API UCogAbilityWindow_Tweaks : public UCogWindow
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
TWeakObjectPtr<UCogAbilityDataAsset_Tweaks> TweaksAsset;
|
||||
TWeakObjectPtr<const UCogAbilityDataAsset> Asset;
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "CogWindowManager.h"
|
||||
#include "CogWindowWidgets.h"
|
||||
#include "EngineUtils.h"
|
||||
#include "GameFramework/Character.h"
|
||||
#include "imgui.h"
|
||||
#include "Kismet/GameplayStatics.h"
|
||||
|
||||
@@ -23,6 +24,7 @@ void UCogEngineWindow_Selection::RenderHelp()
|
||||
UCogEngineWindow_Selection::UCogEngineWindow_Selection()
|
||||
{
|
||||
bHasMenu = true;
|
||||
SubClasses = { AActor::StaticClass(), ACharacter::StaticClass() };
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -16,7 +16,6 @@ public class CogSample : ModuleRules
|
||||
"GameplayTasks",
|
||||
"GameplayAbilities",
|
||||
"GameplayTags",
|
||||
"HeadMountedDisplay",
|
||||
"InputCore",
|
||||
"NetCore",
|
||||
});
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
#include "AssetRegistry/AssetRegistryModule.h"
|
||||
#include "AssetRegistry/IAssetRegistry.h"
|
||||
#include "CogCommon.h"
|
||||
#include "CogSampleFunctionLibrary_Tag.h"
|
||||
#include "GameFramework/Character.h"
|
||||
#include "GameFramework/GameMode.h"
|
||||
@@ -10,10 +9,7 @@
|
||||
#include "Modules/ModuleManager.h"
|
||||
|
||||
#if ENABLE_COG
|
||||
#include "CogAbilityDataAsset_Abilities.h"
|
||||
#include "CogAbilityDataAsset_Cheats.h"
|
||||
#include "CogAbilityDataAsset_Pools.h"
|
||||
#include "CogAbilityDataAsset_Tweaks.h"
|
||||
#include "CogAbilityDataAsset.h"
|
||||
#include "CogAbilityModule.h"
|
||||
#include "CogAbilityWindow_Abilities.h"
|
||||
#include "CogAbilityWindow_Attributes.h"
|
||||
@@ -167,25 +163,27 @@ void ACogSampleGameState::InitializeCog()
|
||||
//---------------------------------------
|
||||
// Abilities
|
||||
//---------------------------------------
|
||||
UCogAbilityWindow_Abilities* AbilitiesWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Abilities>("Gameplay.Abilities");
|
||||
AbilitiesWindow->AbilitiesAsset = GetFirstAssetByClass<UCogAbilityDataAsset_Abilities>();
|
||||
const UCogAbilityDataAsset* AbilitiesAsset = GetFirstAssetByClass<UCogAbilityDataAsset>();
|
||||
|
||||
CogWindowManager->CreateWindow<UCogAbilityWindow_Attributes>("Gameplay.Attributes");
|
||||
UCogAbilityWindow_Abilities* AbilitiesWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Abilities>("Gameplay.Abilities");
|
||||
AbilitiesWindow->Asset = AbilitiesAsset;
|
||||
|
||||
UCogAbilityWindow_Attributes* AttributesWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Attributes>("Gameplay.Attributes");
|
||||
AttributesWindow->Asset = AbilitiesAsset;
|
||||
|
||||
UCogAbilityWindow_Cheats* CheatsWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Cheats>("Gameplay.Cheats");
|
||||
CheatsWindow->SetCheatsAsset(GetFirstAssetByClass<UCogAbilityDataAsset_Cheats>());
|
||||
CheatsWindow->SetAsset(AbilitiesAsset);
|
||||
|
||||
UCogAbilityWindow_Effects* EffectsWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Effects>("Gameplay.Effects");
|
||||
EffectsWindow->NegativeEffectTag = Tag_Effect_Alignment_Negative;
|
||||
EffectsWindow->PositiveEffectTag = Tag_Effect_Alignment_Positive;
|
||||
EffectsWindow->Asset = AbilitiesAsset;
|
||||
|
||||
UCogAbilityWindow_Pools* PoolsWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Pools>("Gameplay.Pools");
|
||||
PoolsWindow->PoolsAsset = GetFirstAssetByClass<UCogAbilityDataAsset_Pools>();
|
||||
PoolsWindow->Asset = AbilitiesAsset;
|
||||
|
||||
CogWindowManager->CreateWindow<UCogAbilityWindow_Tags>("Gameplay.Tags");
|
||||
|
||||
UCogAbilityWindow_Tweaks* TweaksWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Tweaks>("Gameplay.Tweaks");
|
||||
TweaksWindow->TweaksAsset = GetFirstAssetByClass<UCogAbilityDataAsset_Tweaks>();
|
||||
TweaksWindow->Asset = AbilitiesAsset;
|
||||
|
||||
//---------------------------------------
|
||||
// Input
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "CogSampleDefines.h"
|
||||
#include "CogCommon.h"
|
||||
#include "GameFramework/GameStateBase.h"
|
||||
#include "CogSampleGameState.generated.h"
|
||||
|
||||
@@ -10,7 +10,7 @@ class UCogWindowManager;
|
||||
UCLASS()
|
||||
class ACogSampleGameState : public AGameStateBase
|
||||
{
|
||||
GENERATED_BODY()
|
||||
GENERATED_BODY()
|
||||
|
||||
ACogSampleGameState(const FObjectInitializer& ObjectInitializer);
|
||||
|
||||
@@ -22,6 +22,9 @@ class ACogSampleGameState : public AGameStateBase
|
||||
|
||||
private:
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// To make sure it doesn't get garbage collected.
|
||||
//--------------------------------------------------------------
|
||||
UPROPERTY()
|
||||
TObjectPtr<UObject> CogWindowManagerRef = nullptr;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user