66. Initialize Attributes with Gameplay Effects
This commit is contained in:
parent
7f7a041978
commit
f1a4a44c8d
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.
@ -5,6 +5,7 @@
|
||||
"Description": 135,
|
||||
"Category": 96,
|
||||
"BaseValue": 106,
|
||||
"Name": 82
|
||||
"Name": 82,
|
||||
"MinAttribute": 327
|
||||
}
|
||||
}
|
@ -103,6 +103,8 @@ void UGasaAttributeSet::PostGameplayEffectExecute( FGameplayEffectModCallbackDat
|
||||
{
|
||||
SetMaxMana( FMath::Clamp( GetMaxMana(), 0, 99999.000000 ) );
|
||||
}
|
||||
|
||||
Props.Populate( Data );
|
||||
}
|
||||
|
||||
void UGasaAttributeSet::PreAttributeChange( FGameplayAttribute const& Attribute, float& NewValue )
|
||||
|
@ -115,47 +115,6 @@ public:
|
||||
FORCEINLINE void SetVigor( float NewVal );
|
||||
FORCEINLINE void SetMaxHealth( float NewVal );
|
||||
FORCEINLINE void SetMaxMana( float NewVal );
|
||||
|
||||
FORCEINLINE void InitHealth( float NewVal )
|
||||
{
|
||||
Health.SetBaseValue( NewVal );
|
||||
Health.SetCurrentValue( NewVal );
|
||||
}
|
||||
FORCEINLINE void InitMana( float NewVal )
|
||||
{
|
||||
Mana.SetBaseValue( NewVal );
|
||||
Mana.SetCurrentValue( NewVal );
|
||||
}
|
||||
FORCEINLINE void InitStrength( float NewVal )
|
||||
{
|
||||
Strength.SetBaseValue( NewVal );
|
||||
Strength.SetCurrentValue( NewVal );
|
||||
}
|
||||
FORCEINLINE void InitIntelligence( float NewVal )
|
||||
{
|
||||
Intelligence.SetBaseValue( NewVal );
|
||||
Intelligence.SetCurrentValue( NewVal );
|
||||
}
|
||||
FORCEINLINE void InitResilience( float NewVal )
|
||||
{
|
||||
Resilience.SetBaseValue( NewVal );
|
||||
Resilience.SetCurrentValue( NewVal );
|
||||
}
|
||||
FORCEINLINE void InitVigor( float NewVal )
|
||||
{
|
||||
Vigor.SetBaseValue( NewVal );
|
||||
Vigor.SetCurrentValue( NewVal );
|
||||
}
|
||||
FORCEINLINE void InitMaxHealth( float NewVal )
|
||||
{
|
||||
MaxHealth.SetBaseValue( NewVal );
|
||||
MaxHealth.SetCurrentValue( NewVal );
|
||||
}
|
||||
FORCEINLINE void InitMaxMana( float NewVal )
|
||||
{
|
||||
MaxMana.SetBaseValue( NewVal );
|
||||
MaxMana.SetCurrentValue( NewVal );
|
||||
}
|
||||
#pragma endregion Setters
|
||||
|
||||
#pragma region AttributeSet
|
||||
|
@ -69,10 +69,16 @@ void AGasaCharacter::InitDefaultAttributes()
|
||||
{
|
||||
UAbilitySystemComponent* ASC = GetAbilitySystemComponent();
|
||||
ensure(ASC);
|
||||
ensure(DefaultAttributes);
|
||||
FGameplayEffectContextHandle Context = ASC->MakeEffectContext();
|
||||
FGameplayEffectSpecHandle Spec = ASC->MakeOutgoingSpec(DefaultAttributes, 1.0f, Context );
|
||||
ASC->ApplyGameplayEffectSpecToTarget( * Spec.Data, ASC );
|
||||
ensure(DefaultVitalAttributes);
|
||||
ensure(DefaultPrimaryAttributes);
|
||||
ensure(DefaultSecondaryAttributes);
|
||||
FGameplayEffectContextHandle Context = ASC->MakeEffectContext();
|
||||
FGameplayEffectSpecHandle SpecPrimary = ASC->MakeOutgoingSpec(DefaultPrimaryAttributes, 1.0f, Context );
|
||||
FGameplayEffectSpecHandle SpecSecondary = ASC->MakeOutgoingSpec(DefaultSecondaryAttributes, 1.0f, Context );
|
||||
FGameplayEffectSpecHandle SpecVital = ASC->MakeOutgoingSpec(DefaultVitalAttributes, 1.0f, Context );
|
||||
ASC->ApplyGameplayEffectSpecToTarget( * SpecPrimary.Data, ASC );
|
||||
ASC->ApplyGameplayEffectSpecToTarget( * SpecSecondary.Data, ASC );
|
||||
ASC->ApplyGameplayEffectSpecToTarget( * SpecVital.Data, ASC );
|
||||
}
|
||||
#pragma endregion Ability System
|
||||
|
||||
@ -168,11 +174,15 @@ void AGasaCharacter::PossessedBy(AController* NewController)
|
||||
GetMesh()->bOnlyAllowAutonomousTickPose = true;
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (bAutoAbilitySystem)
|
||||
{
|
||||
AbilitySystem->InitAbilityActorInfo(this, this);
|
||||
}
|
||||
#if 1
|
||||
// if (bAutoAbilitySystem)
|
||||
// {
|
||||
// // Note(Ed): For the player character; this is manually called by the player controller in NetOwner_Ready()
|
||||
// AbilitySystem->InitAbilityActorInfo(this, this);
|
||||
// Cast<UGasaAbilitySystemComp>(AbilitySystem)->OnAbilityActorInfoSet();
|
||||
//
|
||||
// InitDefaultAttributes();
|
||||
// }
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -196,6 +206,7 @@ void AGasaCharacter::BeginPlay()
|
||||
// There is also OnPossessed, PostInitializeComponents, etc...
|
||||
if (bAutoAbilitySystem)
|
||||
{
|
||||
// Note(Ed): For the player character; this is manually called by the player controller in NetOwner_Ready()
|
||||
AbilitySystem->InitAbilityActorInfo(this, this);
|
||||
Cast<UGasaAbilitySystemComp>(AbilitySystem)->OnAbilityActorInfoSet();
|
||||
|
||||
|
@ -13,7 +13,7 @@ UENUM(BlueprintType)
|
||||
enum class EHighlight : uint8
|
||||
{
|
||||
Disabled,
|
||||
Enabled,
|
||||
Enabled,ddddddd
|
||||
};
|
||||
|
||||
UCLASS(Abstract)
|
||||
@ -36,7 +36,13 @@ public:
|
||||
TObjectPtr<UAttributeSet> Attributes;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Ability System")
|
||||
TSubclassOf<UGameplayEffect> DefaultAttributes;
|
||||
TSubclassOf<UGameplayEffect> DefaultVitalAttributes;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Ability System")
|
||||
TSubclassOf<UGameplayEffect> DefaultPrimaryAttributes;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Ability System")
|
||||
TSubclassOf<UGameplayEffect> DefaultSecondaryAttributes;
|
||||
|
||||
void InitDefaultAttributes();
|
||||
#pragma endregion Ability System
|
||||
|
@ -78,6 +78,8 @@ void AGasaPlayerController::NetOwner_OnReady()
|
||||
PlayerChar->Attributes = PS->Attributes;
|
||||
PS->AbilitySystem->InitAbilityActorInfo(PS, PlayerChar);
|
||||
Cast<UGasaAbilitySystemComp>(PS->AbilitySystem)->OnAbilityActorInfoSet();
|
||||
|
||||
PlayerChar->InitDefaultAttributes();
|
||||
}
|
||||
Cam->AttachToActor(PlayerChar, FAttachmentTransformRules::KeepRelativeTransform);
|
||||
}
|
||||
|
@ -159,22 +159,6 @@ void gen_attribute_set_from_table( UDataTable* table, FString asset_name )
|
||||
FORCEINLINE void Set<property>(float NewVal);
|
||||
)));
|
||||
}
|
||||
body.append(fmt_newline);
|
||||
body.append(fmt_newline);
|
||||
|
||||
// Generate initers
|
||||
for ( TPair< FName, TArray<FAttributeSetField>>& attributes : AttributesByCategory )
|
||||
for (FAttributeSetField attribute : attributes.Value)
|
||||
{
|
||||
body.append(code_fmt("property", (StrC)to_string(attribute.Name),
|
||||
stringize(
|
||||
FORCEINLINE void Init<property>(float NewVal)
|
||||
{
|
||||
<property>.SetBaseValue(NewVal);
|
||||
<property>.SetCurrentValue(NewVal);
|
||||
}
|
||||
)));
|
||||
}
|
||||
}
|
||||
body.append(def_pragma(txt("endregion Setters")));
|
||||
body.append(fmt_newline);
|
||||
|
Loading…
Reference in New Issue
Block a user