88 lines
2.7 KiB
C
Raw Normal View History

2025-06-18 10:07:14 +08:00
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "SkillEffect.h"
#include "ProjectFish/Definations.h"
2025-09-01 11:54:05 +08:00
#include "ProjectFish/DataAsset/BagConfigAsset.h"
2025-06-18 10:07:14 +08:00
#include "UObject/Object.h"
#include "Skill.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FSkillUpdate);
2025-09-04 09:44:11 +08:00
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FSkillExecute, const FString&, SkillName);
2025-09-04 11:28:29 +08:00
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FSkillSpeedChanged, bool, bSpeedUp, const float&, DurationTime);
2025-09-04 09:44:11 +08:00
DECLARE_MULTICAST_DELEGATE_OneParam(FSkillEnduranceChange, int32);
2025-06-18 10:07:14 +08:00
/**
*
*/
UCLASS(BlueprintType)
class PROJECTFISH_API USkill : public UObject
{
GENERATED_BODY()
public:
2025-09-01 11:54:05 +08:00
//void InitSkill(class APawnWithSkill* owner, USkillManager* skillManager, FSkillData SkillData, FIntPoint BagPos);
void InitSkill(class APawnWithSkill* owner, USkillManager* skillManager, const FPlacedSkillInfo& PlacedSkill);
2025-07-21 17:00:29 +08:00
void InitSkillTrigger();
2025-06-18 10:07:14 +08:00
void TickSkill(float deltaTime);
2025-07-21 17:00:29 +08:00
void ExecuteSkill();
2025-09-03 17:23:01 +08:00
void CancelSkill();
2025-06-18 10:07:14 +08:00
FString GetSkillName() const;
class APawnWithSkill* GetOwner();
2025-09-03 16:28:21 +08:00
USkillManager* GetSkillManager() const { return SkillManager; }
2025-06-18 10:07:14 +08:00
2025-09-01 11:54:05 +08:00
TObjectPtr<USkillAsset> GetSkillData();
TArray<USkillEffect*> GetAllSkillEffects()
{
return SkillEffects;
}
2025-07-21 17:59:58 +08:00
FIntPoint GetBagPos();
2025-09-01 11:54:05 +08:00
void SetSkillData( TObjectPtr<USkillAsset> SkillData);
UFUNCTION(BlueprintCallable)
void ApplyRemainingTimeOffset(int timeOffset);
2025-09-03 17:05:00 +08:00
void ApplyRemainingEnduranceOffset(int Offset);
2025-06-23 10:29:35 +08:00
2025-09-04 11:28:29 +08:00
//修改技能速度
void ApplySkillSpeed(float offset, float duration);
2025-06-23 10:29:35 +08:00
UFUNCTION(BlueprintPure)
bool SkillTickAble();
2025-09-01 11:54:05 +08:00
UFUNCTION(BlueprintPure)
FIntPoint GetSkillSize();
2025-09-03 16:28:21 +08:00
public:
2025-06-18 10:07:14 +08:00
UPROPERTY(BlueprintAssignable)
FSkillUpdate OnSkillUpdate;
2025-09-03 16:28:21 +08:00
2025-09-04 09:44:11 +08:00
UPROPERTY(BlueprintAssignable)
FSkillExecute OnSkillExecute;
2025-09-04 11:28:29 +08:00
UPROPERTY(BlueprintAssignable)
FSkillSpeedChanged OnSkillSpeedChanged;
2025-09-03 17:05:00 +08:00
FSkillEnduranceChange OnSkillEnduranceChange;
2025-09-03 16:28:21 +08:00
protected:
2025-06-18 10:07:14 +08:00
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
2025-09-01 11:54:05 +08:00
TObjectPtr< USkillAsset> SkillData;
2025-06-18 10:07:14 +08:00
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;
2025-07-21 17:59:58 +08:00
UPROPERTY(BlueprintReadOnly, EditAnywhere, meta = (ToolTip = "背包位置"))
FIntPoint BagPosition;
2025-06-18 10:07:14 +08:00
};
2025-06-23 10:29:35 +08:00