92 lines
2.8 KiB
C++
92 lines
2.8 KiB
C++
// Fill out your copyright notice in the Description page of Project Settings.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
|
|
#include "SkillEffect.h"
|
|
#include "ProjectFish/Definations.h"
|
|
#include "ProjectFish/DataAsset/BagConfigAsset.h"
|
|
#include "UObject/Object.h"
|
|
#include "Skill.generated.h"
|
|
|
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FSkillUpdate);
|
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FSkillExecute, const FString&, SkillName);
|
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FSkillSpeedChanged, bool, bSpeedUp, const float&, DurationTime);
|
|
DECLARE_MULTICAST_DELEGATE_OneParam(FSkillEnduranceChange, int32);
|
|
/**
|
|
*
|
|
*/
|
|
UCLASS(BlueprintType)
|
|
class PROJECTFISH_API USkill : public UObject
|
|
{
|
|
GENERATED_BODY()
|
|
public:
|
|
//void InitSkill(class APawnWithSkill* owner, USkillManager* skillManager, FSkillData SkillData, FIntPoint BagPos);
|
|
void InitSkill(class APawnWithSkill* owner, USkillManager* skillManager, const FPlacedSkillInfo& PlacedSkill);
|
|
void InitSkillTrigger();
|
|
void TickSkill(float deltaTime);
|
|
void ExecuteSkill();
|
|
void CancelSkill();
|
|
|
|
FString GetSkillName() const;
|
|
class APawnWithSkill* GetOwner();
|
|
USkillManager* GetSkillManager() const { return SkillManager; }
|
|
|
|
TObjectPtr<USkillAsset> GetSkillData();
|
|
TArray<USkillEffect*> GetAllSkillEffects()
|
|
{
|
|
return SkillEffects;
|
|
}
|
|
|
|
FIntPoint GetBagPos();
|
|
void SetSkillData( TObjectPtr<USkillAsset> SkillData);
|
|
UFUNCTION(BlueprintCallable)
|
|
void ApplyRemainingTimeOffset(int timeOffset);
|
|
|
|
UFUNCTION(BlueprintCallable)
|
|
void ApplyRemainingEnduranceOffset(int Offset);
|
|
|
|
//修改技能速度
|
|
void ApplySkillSpeed(float offset, float duration);
|
|
|
|
UFUNCTION(BlueprintPure)
|
|
bool SkillTickAble();
|
|
|
|
UFUNCTION(BlueprintPure)
|
|
bool SkillExecuteAble();
|
|
|
|
UFUNCTION(BlueprintPure)
|
|
FIntPoint GetSkillSize();
|
|
|
|
public:
|
|
UPROPERTY(BlueprintAssignable)
|
|
FSkillUpdate OnSkillUpdate;
|
|
|
|
UPROPERTY(BlueprintAssignable)
|
|
FSkillExecute OnSkillExecute;
|
|
UPROPERTY(BlueprintAssignable)
|
|
FSkillSpeedChanged OnSkillSpeedChanged;
|
|
FSkillEnduranceChange OnSkillEnduranceChange;
|
|
protected:
|
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
|
TObjectPtr< USkillAsset> SkillData;
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
|
USkillManager* SkillManager;
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
|
TArray<USkillEffect*> SkillEffects;
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能所有者"))
|
|
class APawnWithSkill* Owner;
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "剩余冷却时间"))
|
|
float RemainingTime;
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "剩余耐久度"))
|
|
int32 RemainingEndurance;
|
|
|
|
UPROPERTY(BlueprintReadOnly, EditAnywhere, meta = (ToolTip = "背包位置"))
|
|
FIntPoint BagPosition;
|
|
};
|
|
|
|
|