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;
|
2025-11-09 16:27:22 -05:00
|
|
|
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;
|
|
|
|
|
|
2025-10-15 15:39:53 -04:00
|
|
|
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();
|
2025-11-09 16:27:22 -05:00
|
|
|
|
|
|
|
|
/* 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
|
|
|
};
|