Skip to content

Commit

Permalink
Add Generic disable Gamecue
Browse files Browse the repository at this point in the history
  • Loading branch information
Delaunay committed Jun 24, 2022
1 parent d907364 commit e3d7eba
Show file tree
Hide file tree
Showing 11 changed files with 81 additions and 8 deletions.
Binary file modified Content/Abilities/Cues/GC_Damage.uasset
Binary file not shown.
Binary file added Content/Abilities/Cues/GC_Disable.uasset
Binary file not shown.
Binary file modified Content/Abilities/Effects/GE_Break.uasset
Binary file not shown.
Binary file modified Content/Abilities/Effects/GE_Disarm.uasset
Binary file not shown.
Binary file modified Content/Abilities/Effects/GE_Root.uasset
Binary file not shown.
Binary file modified Content/Abilities/Effects/GE_Silence.uasset
Binary file not shown.
Binary file modified Content/Abilities/Effects/GE_Stun.uasset
Binary file not shown.
Binary file added Content/Widgets/StatusBars/DisableDuration.uasset
Binary file not shown.
54 changes: 53 additions & 1 deletion Source/Gamekit/Abilities/Blueprint/GKAbilityBlueprintLibrary.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,51 @@ FText UGKAbilityBlueprintLibrary::GetFailureReasonFor(UGameplayAbility *Abil
return NSLOCTEXT(NAMESPACE, "AbilityUnknown", "Internal Failure reason");
}

TArray<FGKFailureTagMapping> GenerateDisableNameMapping()
{
// TODO: make this a datatable
auto &ASGlobals = (UGKAbilitySystemGlobals &)(UGKAbilitySystemGlobals::Get());

FText DisableStunName = NSLOCTEXT(NAMESPACE, "Stun Effect", "Stun");
FText DisableSilenceName = NSLOCTEXT(NAMESPACE, "Silence", "Silence");
FText DisableRootName = NSLOCTEXT(NAMESPACE, "Root", "Root");
FText DisableBreakName = NSLOCTEXT(NAMESPACE, "Break", "Break");
FText DisableMuteName = NSLOCTEXT(NAMESPACE, "Mute", "Mute");
FText DisableDisarmedName = NSLOCTEXT(NAMESPACE, "Disarmed", "Disarmed");
FText DisableEtheralName = NSLOCTEXT(NAMESPACE, "Etheral", "Etheral");

return TArray<FGKFailureTagMapping>{
FGKFailureTagMapping{DisableStun, DisableStunName},
FGKFailureTagMapping{DisableSilence, DisableSilenceName},
FGKFailureTagMapping{DisableRoot, DisableRootName},
FGKFailureTagMapping{DisableBreak, DisableBreakName},
FGKFailureTagMapping{DisableMute, DisableMuteName},
FGKFailureTagMapping{DisableDisarmed, DisableDisarmedName},
FGKFailureTagMapping{DisableEtheral, DisableEtheralName},
};
}

TArray<FGKFailureTagMapping> const &GetDisableNames()
{
static TArray<FGKFailureTagMapping> Mappings = GenerateDisableNameMapping();
return Mappings;
}

FText UGKAbilityBlueprintLibrary::GetDisableName(FGameplayTagContainer Tags)
{
FGameplayTag Tag = Tags.GetByIndex(0);

for (FGKFailureTagMapping const &Entry: GetDisableNames())
{
if (Entry.FailureTag == Tag)
{
return Entry.LocalReason;
}
}

return NSLOCTEXT(NAMESPACE, "DisableUnknown", "Disable has no name");
}

UEnum *UGKAbilityBlueprintLibrary::GetDefaultAbilityInputEnum()
{
static UEnum *InputEnum = StaticEnum<EGK_MOBA_AbilityInputID>();
Expand All @@ -156,7 +201,7 @@ void UGKAbilityBlueprintLibrary::GetAbilityData(class UDataTable *Table,
FGKAbilityStatic &AbilityData)
{
FGKAbilityStatic *Result = Table->FindRow<FGKAbilityStatic>(Row, "", false);
bValid = false;
bValid = false;

if (Result != nullptr)
{
Expand All @@ -173,4 +218,11 @@ void UGKAbilityBlueprintLibrary::DisableAbilityAutoGeneration(class UDataTable *
{
Result->bAutoGenerate = false;
}
}

void UGKAbilityBlueprintLibrary::GetActiveEffectsWithAnyTags(UAbilitySystemComponent *AbilitySystem,
FGameplayTagContainer const &Tags,
TArray<FActiveGameplayEffectHandle> &ActiveGameplayEffects)
{
ActiveGameplayEffects = AbilitySystem->GetActiveEffects(FGameplayEffectQuery::MakeQuery_MatchAnyEffectTags(Tags));
}
22 changes: 22 additions & 0 deletions Source/Gamekit/Abilities/Blueprint/GKAbilityBlueprintLibrary.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ class GAMEKIT_API UGKAbilityBlueprintLibrary: public UBlueprintFunctionLibrary
UFUNCTION(BlueprintPure)
static void GetAbilityData(class UDataTable *Table, FName Row, bool &bValid, FGKAbilityStatic &AbilityData);

UFUNCTION(BlueprintPure)
static FText GetDisableName(FGameplayTagContainer Tags);

UFUNCTION(BlueprintCallable)
static void DisableAbilityAutoGeneration(class UDataTable *Table, FName Row);

Expand All @@ -120,4 +123,23 @@ class GAMEKIT_API UGKAbilityBlueprintLibrary: public UBlueprintFunctionLibrary
InputID = AbilitySpec.InputID;
ActivationInfo = AbilitySpec.ActivationInfo;
}

UFUNCTION(BlueprintPure)
static void BreakGameplayEffectContextHandle(FGameplayEffectContextHandle const &EffectContext,
bool &bIsValid,
FGameplayTagContainer &ActorTagContainer,
FGameplayTagContainer &SpecTagContainer,
UGameplayAbility *&Ability,
UAbilitySystemComponent *&AbilitySystem)
{
bIsValid = EffectContext.IsValid();
EffectContext.GetOwnedGameplayTags(ActorTagContainer, SpecTagContainer);
Ability = const_cast<UGameplayAbility *>(EffectContext.GetAbility());
AbilitySystem = const_cast<UAbilitySystemComponent *>(EffectContext.GetInstigatorAbilitySystemComponent());
}

UFUNCTION(BlueprintCallable)
static void GetActiveEffectsWithAnyTags(UAbilitySystemComponent *AbilitySystem,
FGameplayTagContainer const &Tags,
TArray<FActiveGameplayEffectHandle> &ActiveGameplayEffects);
};
13 changes: 6 additions & 7 deletions Source/Gamekit/Widget/GKAbilityWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,34 +99,33 @@ void UGKAbilityWidget::RemoveListeners()
Ability->OnAbilityLevelUp.RemoveAll(this);
}

// TODO: investigate why the dask got destroyed already
// is it because of the order of NativeDestruct
// This is not necessary, they get cleanup automatically already
/*
if (IsValid(CooldownChangedTask) && !CooldownChangedTask->IsDestroyed())
{
//*
if (CooldownChangedTask->HasCooldownTags())
{
CooldownChangedTask->OnCooldownBegin.RemoveAll(this);
CooldownChangedTask->OnCooldownEnd.RemoveAll(this);
}
//*/
CooldownChangedTask->EndTask();
}
if (IsValid(AttributeChangedTask) && !AttributeChangedTask->IsDestroyed())
{
AttributeChangedTask->OnAttributeChanged.RemoveAll(this);
// AttributeChangedTask->OnAttributeChanged.RemoveAll(this);
AttributeChangedTask->EndTask();
}
*/

bBound = false;
}

void UGKAbilityWidget::NativeDestruct()
{
UUserWidget::NativeDestruct();

RemoveListeners();

UUserWidget::NativeDestruct();
}

void UGKAbilityWidget::OnAbilityInsufficientResources_Native(FGameplayAttribute Attribute,
Expand Down

0 comments on commit e3d7eba

Please sign in to comment.