D1/Source/D1/Actor/BaseWeapon.h

88 lines
2.9 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 = "Status")
float Damage;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Status")
TMap<FGameplayTag, float> ActionStatCost;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Status")
TMap<FGameplayTag, float> ActionDamageMultiplier;
};