275 lines
9.8 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameplayTagContainer.h"
#include "PawnWithSkill.h"
#include "UObject/Object.h"
#include "Definations.generated.h"
UENUM(BlueprintType)
enum class ESkillEffectType: uint8
{
Damage UMETA(DisplayName = "拉力", ToolTip = "对对方耐力造成损耗"),
Heal UMETA(DisplayName = "恢复", ToolTip = "对我方耐力进行恢复"),
ModifyCooldown UMETA(DisplayName = "技能冷却修改", ToolTip = "使技能冷却时间修改"),
Charge UMETA(DisplayName = "充能", ToolTip = "使技能的冷却进度加快"),
ModifySpeed UMETA(DisplayName = "速度修改", ToolTip = "使技能冷却进度倍率进展 持续指定时间"),
SkillEnduranceRestore UMETA(DisplayName = "技能耐久度恢复", ToolTip = "使技能耐久度恢复"),
EnhanceFishRod UMETA(DisplayName = "增强鱼竿", ToolTip = "使鱼竿上海增加"),
EnhanceSkill UMETA(DisplayName = "增强技能", ToolTip = "增强指定的技能数值"),
DamageReduce UMETA(DisplayName = "减伤", ToolTip = "减少所受的伤害"),
};
//技能对象类型
UENUM(BlueprintType)
enum class ESkillTargetType: uint8
{
Self UMETA(DisplayName = "目标是自身角色"),
Other UMETA(DisplayName = "目标是对方角色"),
Around UMETA(DisplayName = "格子周围的技能")
// AdjacentLeft UMETA(DisplayName = "左侧相邻"),
// AdjacentRight UMETA(DisplayName = "右侧相邻"),
// AllLeft UMETA(DisplayName = "左侧全部"),
// AllRight UMETA(DisplayName = "右侧全部"),
};
//随机对象类型
UENUM(BlueprintType)
enum class ERandomTargetType: uint8
{
AllSelf UMETA(DisplayName = "我方全部技能"),
AllOther UMETA(DisplayName = "敌方全部技能"),
};
//技能选择器类型
UENUM(BlueprintType)
enum class ETargetSelecterType: uint8
{
SkillPos UMETA(DisplayName = "指定对象选择"),
SkillTag UMETA(DisplayName = "根据技能Tag选择"),
RandomScope UMETA(DisplayName = "指定技能组选择"),
};
USTRUCT(BlueprintType)
struct FSkillContext
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "敌人"))
class USkillManager* SkillManager;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "所属的技能"))
class USkill* OwnerSkill;
};
//技能选择器
USTRUCT(BlueprintType)
struct FSkillTargetSelector
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能选择器类型"))
ETargetSelecterType SelecterType;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能目标类型",
EditConditionHides, EditCondition = "SelecterType == ETargetSelecterType::SkillPos"))
ESkillTargetType TargetType;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "应用的技能tag",
EditConditionHides, EditCondition = "SelecterType == ETargetSelecterType::SkillTag"))
FGameplayTagContainer ApplySkillTags;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "随机目标类型"
, EditConditionHides, EditCondition = "SelecterType == ETargetSelecterType::RandomScope"))
ERandomTargetType RandomType;
};
//技能效果
USTRUCT(BlueprintType)
struct FSkillEffectData
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能类型"))
ESkillEffectType EffectType;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能值"))
float EffectValue;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能配置补充,不需要为空"))
FString ParamAddition;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能选择器"))
FSkillTargetSelector SkillSelecter;
};
USTRUCT(BlueprintType)
struct FSkillData: public FTableRowBase
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能名称"))
FText SkillName;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (AllowedClasses = "Texture2D", ToolTip = "技能图片"))
FSoftObjectPath SkillTexture;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能Tag"))
FGameplayTag SkillTag;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "背包占用"))
FIntPoint SkillWeight = FIntPoint(1, 1);
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "是否为主动技能"))
bool bActiveSkill = true;
//主动技能属性
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能CD", EditConditionHides, EditCondition = "bActiveSkill"))
float CD;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能CD速度", EditConditionHides, EditCondition = "bActiveSkill"))
float Speed = 1.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能耐久度", EditConditionHides, EditCondition = "bActiveSkill"))
int32 Endurance;
//被动技能属性
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "被动技能触发器,没有配置的话为光环类技能默认进行触发", AllowedClasses = "SkillTrigger", EditConditionHides, EditCondition = "!bActiveSkill"))
TSubclassOf<class USkillTrigger> SkillTrigger;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能效果组"))
TArray<FSkillEffectData> SkillEffects;
};
USTRUCT(BlueprintType)
struct FSkillDataConfig
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (RowType = "FSkillData"))
UDataTable* DataTable;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FName SkillRowName;
};
/**
*
*/
UCLASS()
class PROJECTFISH_API UDefinations : public UObject
{
GENERATED_BODY()
};
USTRUCT(BlueprintType)
struct FFishingRodSkill
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "鱼竿技能名称"))
FName SkillName;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "鱼钩技能"))
TSubclassOf<class UFishingRodSKill_Base> SkillClass;
};
USTRUCT(BlueprintType)
struct FFishingRod: public FTableRowBase
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "鱼竿名称"))
FName FishingRod_Name;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "鱼竿伤害CD"))
int32 DamageCD;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "鱼竿伤害"))
int32 Damage;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "附加的耐力值"))
int32 Endurance_Add;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "附加的附加的韧性值"))
int32 Tenacity_Add;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "物品背包大小"))
FIntPoint BagSize;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能效果组"))
TArray<FFishingRodSkill> Skills;
};
USTRUCT(BlueprintType)
struct FShipDataConfig
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Ship", meta = (ForceUnits = "cm", ToolTip = "船体长度"))
int32 ShipLength = 100;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Ship", meta = (ForceUnits = "cm", ToolTip = "船体宽度"))
int32 ShipWidth = 100;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Ship", meta = (ForceUnits = "cm", ToolTip = "船体高度"))
int32 ShipHeight = 100;
/*** Movement ***/
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ForceUnits = "cm/s", Category = "Character|Movement", ToolTip = "正常速度"))
float BaseSpeed = 600.f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Character|Movement", meta = (ForceUnits = "cm/s",ToolTip = "冲刺速度"))
float SprintSpeed = 1200.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Character|Movement", meta = (ForceUnits = "s", ToolTip = "加速到最大速度时间"))
float AccelerationTime = 0.3f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Character|Movement", meta = (ForceUnits = "s", ToolTip = "停止需要的减速时间"))
float DecelerationTime = 0.2f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Character|Movement", meta = (ToolTip = "转向灵敏度/阻尼"))
float TurnSensitivity = 1.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Character|Movement", meta = (ToolTip = "回弹系数"))
float BounceFactor= 1.0f;
/*** Camera ***/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Position", meta = (ForceUnits = "cm", ToolTip = "与角色距离"))
float CameraDistance = 1200.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Position", meta = (ForceUnits = "cm", ToolTip = "与角色高度差"))
float CameraHeightOffset = 600.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Position", meta = (ForceUnits = "Degrees",ToolTip = "镜头与地面夹角角度"))
float CameraGroundAngle = -45.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Rotation", meta = (ToolTip = "镜头转动灵命度"))
float CameraRotationSensitivity = 1.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Rotation", meta = (ToolTip = "反转Y轴"))
bool FlipCameraYAxius = false;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Rotation", meta = (ForceUnits = "Degrees",ToolTip = "最大上仰角度"))
float MaxUpwardAngle = -20.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Rotation", meta = (ForceUnits = "Degrees", ToolTip = "最低下俯角度"))
float MaxDownwardAngle = -70.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Follow", meta = (ToolTip = "镜头跟随阻尼"))
float CameraFollowLagRatio = 3.0f;
// UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Collision", meta = (ToolTip = "镜头跟随阻尼"))
// float CameraCollisionLagRatio = 3.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Collision", meta = (ForceUnits = "cm", ToolTip = "与角色的最小距离"))
float CameraMinDistance = 500.0f;
};