90 lines
3.0 KiB
C++
90 lines
3.0 KiB
C++
// Fill out your copyright notice in the Description page of Project Settings.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Actor/BaseEquippable.h"
|
|
#include "Definitions/GameEnums.h"
|
|
#include "Animation/CombatAnimInstance.h"
|
|
#include "Components/StateManagerComponent.h"
|
|
#include "BaseWeapon.generated.h"
|
|
|
|
/**
|
|
*
|
|
*/
|
|
class UAnimMontage;
|
|
|
|
UCLASS()
|
|
class D1_API ABaseWeapon : public ABaseEquippable
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
ABaseWeapon();
|
|
|
|
public:
|
|
//override
|
|
virtual void OnEquipped() override;
|
|
|
|
public:
|
|
//Delegate
|
|
void OnHit(FHitResult hitResult);
|
|
public:
|
|
//Normal
|
|
void SimulateWeaponPhysics();
|
|
float GetStatCostForAction();
|
|
float GetDamage();
|
|
|
|
//Call by Blueprint
|
|
UFUNCTION(BlueprintCallable)
|
|
virtual void ActivateCollision(ECollisionPart CollisionPart);
|
|
UFUNCTION(BlueprintCallable)
|
|
virtual void DeactivateCollision(ECollisionPart CollsionPart);
|
|
UFUNCTION(BlueprintCallable)
|
|
virtual void ToggleWeaponCombat(bool EnableCombat);
|
|
|
|
public:
|
|
virtual TArray<UAnimMontage*> GetActionMontage(FGameplayTag characterAction);
|
|
|
|
protected:
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Initialization")
|
|
FName HandSocketName;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Initialization")
|
|
ECombatType CombatType;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Initialization")
|
|
TSubclassOf<UDamageType> DamageTypeClass;
|
|
|
|
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="Components")
|
|
TObjectPtr<class UCombatComponent> CombatComponent;
|
|
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="Components")
|
|
TObjectPtr<class UCollisionComponent> CollisionComponent;
|
|
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="Components")
|
|
TObjectPtr<UStateManagerComponent> OwnerStateManager;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Montages")
|
|
TObjectPtr<UAnimMontage> EnterCombat;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Montages")
|
|
TObjectPtr<UAnimMontage> ExitCombat;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Montages")
|
|
TArray<TObjectPtr<UAnimMontage>> LightAttackMontage;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Montages")
|
|
TArray<TObjectPtr<UAnimMontage>> DodgeMontage;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Montages")
|
|
TArray<TObjectPtr<UAnimMontage>> HeavyAttackMontage;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Montages")
|
|
TArray<TObjectPtr<UAnimMontage>> ChargedAttackMontage;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Montages")
|
|
TArray<TObjectPtr<UAnimMontage>> FallingAttackMontage;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Montages")
|
|
TArray<TObjectPtr<UAnimMontage>> SprintAttackMontage;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Montages")
|
|
TArray<TObjectPtr<UAnimMontage>> BlockAttackMontage;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Status")
|
|
float Damage;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Status")
|
|
TMap<FGameplayTag, float> ActionStatCost;
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Status")
|
|
TMap<FGameplayTag, float> ActionDamageMultiplier;
|
|
};
|