Files
Aura-TopDownRPG-GAS/Source/Aura/Public/Character/AuraCharacterBase.h

94 lines
2.5 KiB
C
Raw Normal View History

2025-10-14 22:20:59 -04:00
// Copyright Echo Devgroup
#pragma once
#include "CoreMinimal.h"
#include "AbilitySystemComponent.h"
#include "AbilitySystemInterface.h"
#include "GameFramework/Character.h"
#include "Interact/CombatInterface.h"
#include "AuraCharacterBase.generated.h"
2025-11-02 06:40:35 -05:00
class UAbilitySystemComponent;
class UAttributeSet;
class UGameplayEffect;
class UGameplayAbility;
class UAnimMontage;
2025-10-14 22:20:59 -04:00
UCLASS(Abstract)
class AURA_API AAuraCharacterBase : public ACharacter, public IAbilitySystemInterface, public ICombatInterface
{
GENERATED_BODY()
public:
AAuraCharacterBase();
virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override;
UAttributeSet* GetAttributeSet() const { return AttributeSet; }
2025-11-02 06:40:35 -05:00
virtual UAnimMontage* GetHitReactMontage_Implementation() override;
virtual void Die() override;
UFUNCTION(NetMulticast, reliable)
virtual void MulticastHandleDeath();
2025-10-14 22:20:59 -04:00
protected:
virtual void BeginPlay() override;
//Weapon
UPROPERTY(EditAnywhere, Category = Combat)
TObjectPtr<USkeletalMeshComponent> Weapon;
2025-10-17 00:00:23 -04:00
UPROPERTY(EditAnywhere, Category = Combat)
FName WeaponTipSocketName;
virtual FVector GetCombatSocketLocation() override;
2025-10-17 16:43:49 -04:00
2025-10-14 22:20:59 -04:00
UPROPERTY()
TObjectPtr<UAbilitySystemComponent> AbilitySystemComponent;
UPROPERTY()
TObjectPtr<UAttributeSet> AttributeSet;
virtual void InitAbilityActorInfo();
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category="Attributes")
TSubclassOf<UGameplayEffect> DefaultPrimaryAttributes;
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category="Attributes")
TSubclassOf<UGameplayEffect> DefaultSecondaryAttributes;
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category="Attributes")
TSubclassOf<UGameplayEffect> DefaultVitalAttributes;
2025-10-14 22:20:59 -04:00
void ApplyEffectToSelf(TSubclassOf<UGameplayEffect> GameplayEffectClass, float Level) const;
2025-10-18 11:28:42 -04:00
virtual void InitializeDefaultAttributes() const;
2025-10-14 22:20:59 -04:00
2025-10-16 14:33:58 -04:00
void AddCharacterAbilities();
/* Dissolve Effects */
void Dissolve();
UFUNCTION(BlueprintImplementableEvent)
void StartDissolveTimeline(UMaterialInstanceDynamic* DynamicMaterialInstance);
UFUNCTION(BlueprintImplementableEvent)
void StartWeaponDissolveTimeline(UMaterialInstanceDynamic* DynamicMaterialInstance);
UPROPERTY(EditAnywhere, BlueprintReadOnly)
TObjectPtr<UMaterialInstance> WeaponDissolveMaterialInstance;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
TObjectPtr<UMaterialInstance> DissolveMaterialInstance;
2025-10-16 14:33:58 -04:00
private:
UPROPERTY(EditAnywhere, Category="Abilities")
TArray<TSubclassOf<UGameplayAbility>> StartupAbilities;
2025-11-02 06:40:35 -05:00
UPROPERTY(EditAnywhere, Category = "Combat")
TObjectPtr<UAnimMontage> HitReactMontage;
2025-10-14 22:20:59 -04:00
};