修改背包UI
This commit is contained in:
parent
cd4bf0109d
commit
bd3961c614
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
ProjectFish/Content/UI/WBP_SkillCell.uasset
Normal file
BIN
ProjectFish/Content/UI/WBP_SkillCell.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,4 +1,5 @@
|
|||||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AAssetRegistry_002Ff_003AAssetData_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AAssetRegistry_002Ff_003AAssetData_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003AEditor_002Fd_003APropertyEditor_002Fd_003APublic_002Ff_003APropertyCustomizationHelpers_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003AEditor_002Fd_003APropertyEditor_002Fd_003APublic_002Ff_003APropertyCustomizationHelpers_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AUObjectBaseUtility_002Eh/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AUObjectBaseUtility_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003AMisc_002Ff_003AMTAccessDetector_002Eh/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
|
||||||
@ -33,7 +33,7 @@ struct FBagSlot
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
UCLASS()
|
UCLASS(BlueprintType)
|
||||||
class PROJECTFISH_API UBagShapeAsset : public UDataAsset
|
class PROJECTFISH_API UBagShapeAsset : public UDataAsset
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
UCLASS()
|
UCLASS(BlueprintType)
|
||||||
class PROJECTFISH_API USkillAsset : public UDataAsset
|
class PROJECTFISH_API USkillAsset : public UDataAsset
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|||||||
@ -14,15 +14,68 @@
|
|||||||
#include "SkillEffects/SkillEffect_ModifySpeed.h"
|
#include "SkillEffects/SkillEffect_ModifySpeed.h"
|
||||||
#include "SkillEffects/SkillEffect_SER.h"
|
#include "SkillEffects/SkillEffect_SER.h"
|
||||||
|
|
||||||
void USkill::InitSkill(APawnWithSkill* owner, USkillManager* skillManager, FSkillData skillData, FIntPoint BagPos)
|
// void USkill::InitSkill(APawnWithSkill* owner, USkillManager* skillManager, FSkillData skillData, FIntPoint BagPos)
|
||||||
|
// {
|
||||||
|
// this->Owner = owner;
|
||||||
|
// this->SkillManager = skillManager;
|
||||||
|
// this->SkillData = skillData;
|
||||||
|
// this->BagPosition = BagPos;
|
||||||
|
// this->RemainingTime = SkillData->CD;
|
||||||
|
// this->RemainingEndurance = SkillData->Endurance;
|
||||||
|
// for (auto effectData: SkillData->SkillEffects)
|
||||||
|
// {
|
||||||
|
// USkillEffect* skillEffect = nullptr ;
|
||||||
|
// switch (effectData.EffectType)
|
||||||
|
// {
|
||||||
|
// case ESkillEffectType::Damage:
|
||||||
|
// skillEffect = NewObject<USkillEffect>(this, USkillEffect_Damage::StaticClass());
|
||||||
|
// break;
|
||||||
|
// case ESkillEffectType::Heal:
|
||||||
|
// skillEffect = NewObject<USkillEffect>(this, USkillEffect_Heal::StaticClass());
|
||||||
|
// break;
|
||||||
|
// case ESkillEffectType::ModifyCooldown:
|
||||||
|
// skillEffect = NewObject<USkillEffect>(this, USkillEffect_ModifyCD::StaticClass());
|
||||||
|
// break;
|
||||||
|
// case ESkillEffectType::Charge:
|
||||||
|
// skillEffect = NewObject<USkillEffect>(this, USkillEffect_Charge::StaticClass());
|
||||||
|
// break;
|
||||||
|
// case ESkillEffectType::ModifySpeed:
|
||||||
|
// skillEffect = NewObject<USkillEffect>(this, USkillEffect_ModifySpeed::StaticClass());
|
||||||
|
// break;
|
||||||
|
// case ESkillEffectType::SkillEnduranceRestore:
|
||||||
|
// skillEffect = NewObject<USkillEffect>(this, USkillEffect_SER::StaticClass());
|
||||||
|
// break;
|
||||||
|
// case ESkillEffectType::EnhanceFishRod:
|
||||||
|
// skillEffect = NewObject<USkillEffect>(this, USkillEffect_EnhanceFishRod::StaticClass());
|
||||||
|
// break;
|
||||||
|
// case ESkillEffectType::EnhanceSkill:
|
||||||
|
// skillEffect = NewObject<USkillEffect>(this, USkillEffect_EnhanceSkill::StaticClass());
|
||||||
|
// break;
|
||||||
|
// case ESkillEffectType::DamageReduce:
|
||||||
|
// skillEffect = NewObject<USkillEffect>(this, USkillEffect_DamageReduce::StaticClass());
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// const UEnum* EnumPtr = StaticEnum<ESkillEffectType>();
|
||||||
|
// UE_LOG(LogTemp, Error, TEXT("没有配置 %s类型的Skill Effect"), *EnumPtr->GetNameStringByValue(static_cast<int64>(effectData.EffectType)))
|
||||||
|
// }
|
||||||
|
// if (IsValid(skillEffect))
|
||||||
|
// {
|
||||||
|
// skillEffect->InitSkillEffect(this, effectData);
|
||||||
|
// this->SkillEffects.Add(skillEffect);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
void USkill::InitSkill(class APawnWithSkill* owner, USkillManager* skillManager, const FPlacedSkillInfo& PlacedSkill)
|
||||||
{
|
{
|
||||||
this->Owner = owner;
|
this->Owner = owner;
|
||||||
this->SkillManager = skillManager;
|
this->SkillManager = skillManager;
|
||||||
this->SkillData = skillData;
|
this->SkillData = PlacedSkill.SkillAsset;
|
||||||
this->BagPosition = BagPos;
|
this->BagPosition = FIntPoint(PlacedSkill.PositionX, PlacedSkill.PositionY);
|
||||||
this->RemainingTime = SkillData.CD;
|
this->RemainingTime = SkillData->CD;
|
||||||
this->RemainingEndurance = SkillData.Endurance;
|
this->RemainingEndurance = SkillData->Endurance;
|
||||||
for (auto effectData: skillData.SkillEffects)
|
for (auto effectData: SkillData->SkillEffects)
|
||||||
{
|
{
|
||||||
USkillEffect* skillEffect = nullptr ;
|
USkillEffect* skillEffect = nullptr ;
|
||||||
switch (effectData.EffectType)
|
switch (effectData.EffectType)
|
||||||
@ -69,11 +122,11 @@ void USkill::InitSkill(APawnWithSkill* owner, USkillManager* skillManager, FSkil
|
|||||||
|
|
||||||
void USkill::InitSkillTrigger()
|
void USkill::InitSkillTrigger()
|
||||||
{
|
{
|
||||||
if (!SkillData.bActiveSkill)
|
if (!SkillData->bActiveSkill)
|
||||||
{
|
{
|
||||||
if (SkillData.SkillTrigger)
|
if (SkillData->SkillTrigger)
|
||||||
{
|
{
|
||||||
USkillTrigger* SkillTrigger = NewObject<USkillTrigger>(this, SkillData.SkillTrigger);
|
USkillTrigger* SkillTrigger = NewObject<USkillTrigger>(this, SkillData->SkillTrigger);
|
||||||
FSkillContext context;
|
FSkillContext context;
|
||||||
context.OwnerSkill = this;
|
context.OwnerSkill = this;
|
||||||
context.SkillManager = SkillManager;
|
context.SkillManager = SkillManager;
|
||||||
@ -91,13 +144,18 @@ void USkill::InitSkillTrigger()
|
|||||||
bool USkill::SkillTickAble()
|
bool USkill::SkillTickAble()
|
||||||
{
|
{
|
||||||
//剩余次数无限制或者拥有者没有被韧性眩晕
|
//剩余次数无限制或者拥有者没有被韧性眩晕
|
||||||
return (RemainingEndurance >0 || RemainingEndurance == -1 ) && Owner->CurrentTenacity > 0 && SkillData.bActiveSkill;
|
return (RemainingEndurance >0 || RemainingEndurance == -1 ) && Owner->CurrentTenacity > 0 && SkillData->bActiveSkill;
|
||||||
|
}
|
||||||
|
|
||||||
|
FIntPoint USkill::GetSkillSize()
|
||||||
|
{
|
||||||
|
return GetSkillSizeValue(SkillData->SkillSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
void USkill::TickSkill(float deltaTime)
|
void USkill::TickSkill(float deltaTime)
|
||||||
{
|
{
|
||||||
if (SkillTickAble())
|
if (SkillTickAble())
|
||||||
RemainingTime -= deltaTime * SkillData.Speed;
|
RemainingTime -= deltaTime * SkillData->Speed;
|
||||||
if (RemainingTime <= 0 )
|
if (RemainingTime <= 0 )
|
||||||
{
|
{
|
||||||
ExecuteSkill();
|
ExecuteSkill();
|
||||||
@ -126,16 +184,16 @@ void USkill::ExecuteSkill()
|
|||||||
{
|
{
|
||||||
Effect->Execute(context);
|
Effect->Execute(context);
|
||||||
}
|
}
|
||||||
RemainingTime = SkillData.CD;
|
RemainingTime = SkillData->CD;
|
||||||
OnSkillExecute.Broadcast(SkillData.SkillName.ToString());
|
OnSkillExecute.Broadcast(SkillData->SkillName.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
FString USkill::GetSkillName() const
|
FString USkill::GetSkillName() const
|
||||||
{
|
{
|
||||||
return SkillData.SkillName.ToString();;
|
return SkillData->SkillName.ToString();;
|
||||||
}
|
}
|
||||||
|
|
||||||
FSkillData& USkill::GetSkillData()
|
TObjectPtr<USkillAsset> USkill::GetSkillData()
|
||||||
{
|
{
|
||||||
return SkillData;
|
return SkillData;
|
||||||
}
|
}
|
||||||
@ -145,7 +203,7 @@ FIntPoint USkill::GetBagPos()
|
|||||||
return BagPosition;
|
return BagPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
void USkill::SetSkillData(FSkillData data)
|
void USkill::SetSkillData(TObjectPtr<USkillAsset> data)
|
||||||
{
|
{
|
||||||
SkillData = data;
|
SkillData = data;
|
||||||
OnSkillUpdate.Broadcast();
|
OnSkillUpdate.Broadcast();
|
||||||
@ -158,8 +216,8 @@ void USkill::ApplyRemainingTimeOffset(int timeOffset)
|
|||||||
|
|
||||||
void USkill::ApplyRemainingRemainingEnduranceOffset(int Offset)
|
void USkill::ApplyRemainingRemainingEnduranceOffset(int Offset)
|
||||||
{
|
{
|
||||||
if (SkillData.Endurance != -1)
|
if (SkillData->Endurance != -1)
|
||||||
this->RemainingEndurance = FMath::Max(this->RemainingEndurance + Offset, SkillData.Endurance);
|
this->RemainingEndurance = FMath::Max(this->RemainingEndurance + Offset, SkillData->Endurance);
|
||||||
}
|
}
|
||||||
|
|
||||||
class APawnWithSkill* USkill::GetOwner()
|
class APawnWithSkill* USkill::GetOwner()
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include "SkillEffect.h"
|
#include "SkillEffect.h"
|
||||||
#include "ProjectFish/Definations.h"
|
#include "ProjectFish/Definations.h"
|
||||||
|
#include "ProjectFish/DataAsset/BagConfigAsset.h"
|
||||||
#include "UObject/Object.h"
|
#include "UObject/Object.h"
|
||||||
#include "Skill.generated.h"
|
#include "Skill.generated.h"
|
||||||
|
|
||||||
@ -19,7 +20,8 @@ class PROJECTFISH_API USkill : public UObject
|
|||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
public:
|
public:
|
||||||
void InitSkill(class APawnWithSkill* owner, USkillManager* skillManager, FSkillData SkillData, FIntPoint BagPos);
|
//void InitSkill(class APawnWithSkill* owner, USkillManager* skillManager, FSkillData SkillData, FIntPoint BagPos);
|
||||||
|
void InitSkill(class APawnWithSkill* owner, USkillManager* skillManager, const FPlacedSkillInfo& PlacedSkill);
|
||||||
void InitSkillTrigger();
|
void InitSkillTrigger();
|
||||||
void TickSkill(float deltaTime);
|
void TickSkill(float deltaTime);
|
||||||
void ExecuteSkill();
|
void ExecuteSkill();
|
||||||
@ -27,20 +29,23 @@ public:
|
|||||||
FString GetSkillName() const;
|
FString GetSkillName() const;
|
||||||
class APawnWithSkill* GetOwner();
|
class APawnWithSkill* GetOwner();
|
||||||
|
|
||||||
FSkillData& GetSkillData();
|
TObjectPtr<USkillAsset> GetSkillData();
|
||||||
TArray<USkillEffect*> GetAllSkillEffects()
|
TArray<USkillEffect*> GetAllSkillEffects()
|
||||||
{
|
{
|
||||||
return SkillEffects;
|
return SkillEffects;
|
||||||
}
|
}
|
||||||
|
|
||||||
FIntPoint GetBagPos();
|
FIntPoint GetBagPos();
|
||||||
void SetSkillData( FSkillData SkillData);
|
void SetSkillData( TObjectPtr<USkillAsset> SkillData);
|
||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
void ApplyRemainingTimeOffset(int timeOffset);
|
void ApplyRemainingTimeOffset(int timeOffset);
|
||||||
void ApplyRemainingRemainingEnduranceOffset(int Offset);
|
void ApplyRemainingRemainingEnduranceOffset(int Offset);
|
||||||
|
|
||||||
UFUNCTION(BlueprintPure)
|
UFUNCTION(BlueprintPure)
|
||||||
bool SkillTickAble();
|
bool SkillTickAble();
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintPure)
|
||||||
|
FIntPoint GetSkillSize();
|
||||||
protected:
|
protected:
|
||||||
UPROPERTY(BlueprintAssignable)
|
UPROPERTY(BlueprintAssignable)
|
||||||
FSkillUpdate OnSkillUpdate;
|
FSkillUpdate OnSkillUpdate;
|
||||||
@ -48,7 +53,7 @@ protected:
|
|||||||
FSkillExecute OnSkillExecute;
|
FSkillExecute OnSkillExecute;
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
||||||
FSkillData SkillData;
|
TObjectPtr< USkillAsset> SkillData;
|
||||||
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
||||||
USkillManager* SkillManager;
|
USkillManager* SkillManager;
|
||||||
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
||||||
|
|||||||
@ -27,7 +27,7 @@ void USkillEffect::Execute(const FSkillContext& context)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
strTargets += (Cast<USkill>(target))->GetSkillData().SkillName.ToString() + "|" ;
|
strTargets += (Cast<USkill>(target))->GetSkillData()->SkillName.ToString() + "|" ;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -35,7 +35,7 @@ void USkillEffect::Execute(const FSkillContext& context)
|
|||||||
FString type = EnumPtr->GetNameStringByValue(static_cast<int64>(effectData.EffectType)) ;
|
FString type = EnumPtr->GetNameStringByValue(static_cast<int64>(effectData.EffectType)) ;
|
||||||
|
|
||||||
UE_LOG(LogTemp, Warning, TEXT("技能:%s 拥有者: %s 目标: %s 效果: %s")
|
UE_LOG(LogTemp, Warning, TEXT("技能:%s 拥有者: %s 目标: %s 效果: %s")
|
||||||
, *OwnerSkill->GetSkillData().SkillName.ToString()
|
, *OwnerSkill->GetSkillData()->SkillName.ToString()
|
||||||
,*OwnerSkill->GetOwner()->GetActorNameOrLabel()
|
,*OwnerSkill->GetOwner()->GetActorNameOrLabel()
|
||||||
,*strTargets
|
,*strTargets
|
||||||
, *( GetSkillEffectDes()));
|
, *( GetSkillEffectDes()));
|
||||||
@ -62,7 +62,7 @@ TArray<UObject*> USkillEffect::GetApplyTargets(const FSkillContext& context)
|
|||||||
for (auto skill: context.SkillManager->GetAllSkills())
|
for (auto skill: context.SkillManager->GetAllSkills())
|
||||||
{
|
{
|
||||||
|
|
||||||
if (effectData.SkillSelecter.ApplySkillTags.HasTag(skill->GetSkillData().SkillTag))
|
if (effectData.SkillSelecter.ApplySkillTags.HasTag(skill->GetSkillData()->SkillTag))
|
||||||
{
|
{
|
||||||
result.Add(skill);
|
result.Add(skill);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,7 @@ void USkillEffect_ModifyCD::Execute(const FSkillContext& context)
|
|||||||
{
|
{
|
||||||
//修改技能的冷却时间
|
//修改技能的冷却时间
|
||||||
USkill* skill = Cast<USkill>(target);
|
USkill* skill = Cast<USkill>(target);
|
||||||
skill->GetSkillData().CD = FMath::Max(1, skill->GetSkillData().CD + effectData.EffectValue);
|
skill->GetSkillData()->CD = FMath::Max(1, skill->GetSkillData()->CD + effectData.EffectValue);
|
||||||
skill->ApplyRemainingTimeOffset(effectData.EffectValue);
|
skill->ApplyRemainingTimeOffset(effectData.EffectValue);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,13 +22,13 @@ void USkillEffect_ModifySpeed::Execute(const FSkillContext& context)
|
|||||||
{
|
{
|
||||||
//修改技能的冷却倍率
|
//修改技能的冷却倍率
|
||||||
USkill* skill = Cast<USkill>(target);
|
USkill* skill = Cast<USkill>(target);
|
||||||
skill->GetSkillData().Speed = effectData.EffectValue;
|
skill->GetSkillData()->Speed = effectData.EffectValue;
|
||||||
//延时结束效果
|
//延时结束效果
|
||||||
GetWorld()->GetTimerManager().SetTimer(TimerHandle, [&]()
|
GetWorld()->GetTimerManager().SetTimer(TimerHandle, [&]()
|
||||||
{
|
{
|
||||||
|
|
||||||
UE_LOG(LogTemp, Log, TEXT("取消CD充能效果!"));
|
UE_LOG(LogTemp, Log, TEXT("取消CD充能效果!"));
|
||||||
skill->GetSkillData().Speed = 1;
|
skill->GetSkillData()->Speed = 1;
|
||||||
|
|
||||||
}, UKismetStringLibrary::Conv_StringToInt(effectData.ParamAddition), false); // 单次触发
|
}, UKismetStringLibrary::Conv_StringToInt(effectData.ParamAddition), false); // 单次触发
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include "SkillManager.h"
|
#include "SkillManager.h"
|
||||||
#include "Skill.h"
|
#include "Skill.h"
|
||||||
|
#include "ProjectFish/DataAsset/BagConfigAsset.h"
|
||||||
|
|
||||||
void USkillManager::Tick(float DeltaTime)
|
void USkillManager::Tick(float DeltaTime)
|
||||||
{
|
{
|
||||||
@ -42,49 +43,64 @@ void USkillManager::AddPawn(class APawnWithSkill* Pawn, FIntPoint BagSize)
|
|||||||
// this->SkillPawns = Pawns;
|
// this->SkillPawns = Pawns;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
USkill* USkillManager::AddSkill(FSkillData data, APawnWithSkill* Pawn, FIntPoint& BagPos)
|
// USkill* USkillManager::AddSkill(FSkillData data, APawnWithSkill* Pawn, FIntPoint& BagPos)
|
||||||
|
// {
|
||||||
|
// TMap<FIntPoint, int32>* states = PawnBagState.Find(Pawn);
|
||||||
|
// FIntPoint BagSize = *PawnInfo.Find(Pawn);
|
||||||
|
// bool bAddAble = true;
|
||||||
|
// for (int y = 0; y < BagSize.Y; y++)
|
||||||
|
// {
|
||||||
|
// for (int x = 0; x < BagSize.X; x++)
|
||||||
|
// {
|
||||||
|
// bAddAble = true;
|
||||||
|
// for (int skillX = 0; skillX < data.SkillWeight.X; skillX++)
|
||||||
|
// {
|
||||||
|
// for (int skillY = 0; skillY < data.SkillWeight.Y; skillY++)
|
||||||
|
// {
|
||||||
|
// if (states->Find(FIntPoint(x, y) + FIntPoint(skillX, skillY)) == nullptr
|
||||||
|
// || *states->Find(FIntPoint(x, y) + FIntPoint(skillX, skillY)) != -1)
|
||||||
|
// {
|
||||||
|
// bAddAble = false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// //满足条件
|
||||||
|
// if (bAddAble)
|
||||||
|
// {
|
||||||
|
// BagPos = FIntPoint(x, y);
|
||||||
|
// USkill* skill = NewObject<USkill>(this);
|
||||||
|
// skill->InitSkill(Pawn, this, data, BagPos);
|
||||||
|
// Skills.Add(skill);
|
||||||
|
// //设置占用状态
|
||||||
|
// for (int xTemp = 0; xTemp < data.SkillWeight.X; xTemp++)
|
||||||
|
// {
|
||||||
|
// for (int yTemp = 0; yTemp < data.SkillWeight.Y; yTemp++)
|
||||||
|
// {
|
||||||
|
// states->Add(FIntPoint(xTemp, yTemp) + FIntPoint(x, y), GetSkillIndex(skill));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return skill;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return nullptr;
|
||||||
|
// }
|
||||||
|
|
||||||
|
void USkillManager::AddBagWithSkills(UBagConfigAsset* Bag, APawnWithSkill* Pawn, TArray<USkill*>& SkillObjects,
|
||||||
|
TArray<FIntPoint>& BagPositions)
|
||||||
{
|
{
|
||||||
TMap<FIntPoint, int32>* states = PawnBagState.Find(Pawn);
|
|
||||||
FIntPoint BagSize = *PawnInfo.Find(Pawn);
|
FIntPoint BagSize = *PawnInfo.Find(Pawn);
|
||||||
bool bAddAble = true;
|
for (auto PlacedSkill: Bag->PlacedSkills)
|
||||||
for (int y = 0; y < BagSize.Y; y++)
|
|
||||||
{
|
{
|
||||||
for (int x = 0; x < BagSize.X; x++)
|
|
||||||
{
|
|
||||||
bAddAble = true;
|
|
||||||
for (int skillX = 0; skillX < data.SkillWeight.X; skillX++)
|
|
||||||
{
|
|
||||||
for (int skillY = 0; skillY < data.SkillWeight.Y; skillY++)
|
|
||||||
{
|
|
||||||
if (states->Find(FIntPoint(x, y) + FIntPoint(skillX, skillY)) == nullptr
|
|
||||||
|| *states->Find(FIntPoint(x, y) + FIntPoint(skillX, skillY)) != -1)
|
|
||||||
{
|
|
||||||
bAddAble = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//满足条件
|
|
||||||
if (bAddAble)
|
|
||||||
{
|
|
||||||
BagPos = FIntPoint(x, y);
|
|
||||||
USkill* skill = NewObject<USkill>(this);
|
USkill* skill = NewObject<USkill>(this);
|
||||||
skill->InitSkill(Pawn, this, data, BagPos);
|
skill->InitSkill(Pawn, this, PlacedSkill);
|
||||||
Skills.Add(skill);
|
SkillObjects.Add(skill);
|
||||||
//设置占用状态
|
BagPositions.Add(FIntPoint(PlacedSkill.PositionX, PlacedSkill.PositionY));
|
||||||
for (int xTemp = 0; xTemp < data.SkillWeight.X; xTemp++)
|
|
||||||
{
|
|
||||||
for (int yTemp = 0; yTemp < data.SkillWeight.Y; yTemp++)
|
|
||||||
{
|
|
||||||
states->Add(FIntPoint(xTemp, yTemp) + FIntPoint(x, y), GetSkillIndex(skill));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return skill;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void USkillManager::OnAllSkillAdded()
|
void USkillManager::OnAllSkillAdded()
|
||||||
@ -100,7 +116,7 @@ class USkill* USkillManager::GetSkillByTag(FGameplayTag Tag)
|
|||||||
{
|
{
|
||||||
for (auto Skill : Skills)
|
for (auto Skill : Skills)
|
||||||
{
|
{
|
||||||
if (Skill->GetSkillData().SkillTag == Tag)
|
if (Skill->GetSkillData()->SkillTag == Tag)
|
||||||
return Skill;
|
return Skill;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -117,7 +133,7 @@ TArray<USkill*> USkillManager::GetSkillsAround(USkill* TargetSkill)
|
|||||||
TMap<FIntPoint, int32> *BagStates = PawnBagState.Find(TargetSkill->GetOwner());
|
TMap<FIntPoint, int32> *BagStates = PawnBagState.Find(TargetSkill->GetOwner());
|
||||||
FIntPoint BagPos = TargetSkill->GetBagPos();
|
FIntPoint BagPos = TargetSkill->GetBagPos();
|
||||||
FIntPoint BagSize = *PawnInfo.Find(TargetSkill->GetOwner());
|
FIntPoint BagSize = *PawnInfo.Find(TargetSkill->GetOwner());
|
||||||
FSkillData data = TargetSkill->GetSkillData();
|
TObjectPtr<USkillAsset> data = TargetSkill->GetSkillData();
|
||||||
int beginX = FMath::Max(0, BagPos.X- 1);
|
int beginX = FMath::Max(0, BagPos.X- 1);
|
||||||
int endX = FMath::Min(BagSize.X - 1, BagPos.X + 1);
|
int endX = FMath::Min(BagSize.X - 1, BagPos.X + 1);
|
||||||
int beginY = FMath::Max(0, BagPos.Y - 1);
|
int beginY = FMath::Max(0, BagPos.Y - 1);
|
||||||
|
|||||||
@ -24,8 +24,11 @@ public:
|
|||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
void AddPawn(class APawnWithSkill* Pawn, FIntPoint BagSize);
|
void AddPawn(class APawnWithSkill* Pawn, FIntPoint BagSize);
|
||||||
|
|
||||||
|
// UFUNCTION(BlueprintCallable)
|
||||||
|
// USkill* AddSkill(FSkillData data, APawnWithSkill* Pawn, FIntPoint& BagPos);
|
||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
USkill* AddSkill(FSkillData data, APawnWithSkill* Pawn, FIntPoint& BagPos);
|
void AddBagWithSkills(UBagConfigAsset* Bag, APawnWithSkill* Pawn,
|
||||||
|
TArray<USkill*>& SkillObjects, TArray<FIntPoint>& BagPositions);
|
||||||
|
|
||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
void OnAllSkillAdded();
|
void OnAllSkillAdded();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user