修改背包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">
|
||||
<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_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
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
UCLASS(BlueprintType)
|
||||
class PROJECTFISH_API USkillAsset : public UDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
@ -14,15 +14,68 @@
|
||||
#include "SkillEffects/SkillEffect_ModifySpeed.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->SkillManager = skillManager;
|
||||
this->SkillData = skillData;
|
||||
this->BagPosition = BagPos;
|
||||
this->RemainingTime = SkillData.CD;
|
||||
this->RemainingEndurance = SkillData.Endurance;
|
||||
for (auto effectData: skillData.SkillEffects)
|
||||
this->SkillData = PlacedSkill.SkillAsset;
|
||||
this->BagPosition = FIntPoint(PlacedSkill.PositionX, PlacedSkill.PositionY);
|
||||
this->RemainingTime = SkillData->CD;
|
||||
this->RemainingEndurance = SkillData->Endurance;
|
||||
for (auto effectData: SkillData->SkillEffects)
|
||||
{
|
||||
USkillEffect* skillEffect = nullptr ;
|
||||
switch (effectData.EffectType)
|
||||
@ -55,8 +108,8 @@ void USkill::InitSkill(APawnWithSkill* owner, USkillManager* skillManager, FSkil
|
||||
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)))
|
||||
const UEnum* EnumPtr = StaticEnum<ESkillEffectType>();
|
||||
UE_LOG(LogTemp, Error, TEXT("没有配置 %s类型的Skill Effect"), *EnumPtr->GetNameStringByValue(static_cast<int64>(effectData.EffectType)))
|
||||
}
|
||||
if (IsValid(skillEffect))
|
||||
{
|
||||
@ -69,11 +122,11 @@ void USkill::InitSkill(APawnWithSkill* owner, USkillManager* skillManager, FSkil
|
||||
|
||||
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;
|
||||
context.OwnerSkill = this;
|
||||
context.SkillManager = SkillManager;
|
||||
@ -91,13 +144,18 @@ void USkill::InitSkillTrigger()
|
||||
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)
|
||||
{
|
||||
if (SkillTickAble())
|
||||
RemainingTime -= deltaTime * SkillData.Speed;
|
||||
RemainingTime -= deltaTime * SkillData->Speed;
|
||||
if (RemainingTime <= 0 )
|
||||
{
|
||||
ExecuteSkill();
|
||||
@ -126,16 +184,16 @@ void USkill::ExecuteSkill()
|
||||
{
|
||||
Effect->Execute(context);
|
||||
}
|
||||
RemainingTime = SkillData.CD;
|
||||
OnSkillExecute.Broadcast(SkillData.SkillName.ToString());
|
||||
RemainingTime = SkillData->CD;
|
||||
OnSkillExecute.Broadcast(SkillData->SkillName.ToString());
|
||||
}
|
||||
|
||||
FString USkill::GetSkillName() const
|
||||
{
|
||||
return SkillData.SkillName.ToString();;
|
||||
return SkillData->SkillName.ToString();;
|
||||
}
|
||||
|
||||
FSkillData& USkill::GetSkillData()
|
||||
TObjectPtr<USkillAsset> USkill::GetSkillData()
|
||||
{
|
||||
return SkillData;
|
||||
}
|
||||
@ -145,7 +203,7 @@ FIntPoint USkill::GetBagPos()
|
||||
return BagPosition;
|
||||
}
|
||||
|
||||
void USkill::SetSkillData(FSkillData data)
|
||||
void USkill::SetSkillData(TObjectPtr<USkillAsset> data)
|
||||
{
|
||||
SkillData = data;
|
||||
OnSkillUpdate.Broadcast();
|
||||
@ -158,8 +216,8 @@ void USkill::ApplyRemainingTimeOffset(int timeOffset)
|
||||
|
||||
void USkill::ApplyRemainingRemainingEnduranceOffset(int Offset)
|
||||
{
|
||||
if (SkillData.Endurance != -1)
|
||||
this->RemainingEndurance = FMath::Max(this->RemainingEndurance + Offset, SkillData.Endurance);
|
||||
if (SkillData->Endurance != -1)
|
||||
this->RemainingEndurance = FMath::Max(this->RemainingEndurance + Offset, SkillData->Endurance);
|
||||
}
|
||||
|
||||
class APawnWithSkill* USkill::GetOwner()
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
|
||||
#include "SkillEffect.h"
|
||||
#include "ProjectFish/Definations.h"
|
||||
#include "ProjectFish/DataAsset/BagConfigAsset.h"
|
||||
#include "UObject/Object.h"
|
||||
#include "Skill.generated.h"
|
||||
|
||||
@ -19,7 +20,8 @@ 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, FSkillData SkillData, FIntPoint BagPos);
|
||||
void InitSkill(class APawnWithSkill* owner, USkillManager* skillManager, const FPlacedSkillInfo& PlacedSkill);
|
||||
void InitSkillTrigger();
|
||||
void TickSkill(float deltaTime);
|
||||
void ExecuteSkill();
|
||||
@ -27,20 +29,23 @@ public:
|
||||
FString GetSkillName() const;
|
||||
class APawnWithSkill* GetOwner();
|
||||
|
||||
FSkillData& GetSkillData();
|
||||
TObjectPtr<USkillAsset> GetSkillData();
|
||||
TArray<USkillEffect*> GetAllSkillEffects()
|
||||
{
|
||||
return SkillEffects;
|
||||
}
|
||||
|
||||
FIntPoint GetBagPos();
|
||||
void SetSkillData( FSkillData SkillData);
|
||||
void SetSkillData( TObjectPtr<USkillAsset> SkillData);
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void ApplyRemainingTimeOffset(int timeOffset);
|
||||
void ApplyRemainingRemainingEnduranceOffset(int Offset);
|
||||
|
||||
UFUNCTION(BlueprintPure)
|
||||
bool SkillTickAble();
|
||||
|
||||
UFUNCTION(BlueprintPure)
|
||||
FIntPoint GetSkillSize();
|
||||
protected:
|
||||
UPROPERTY(BlueprintAssignable)
|
||||
FSkillUpdate OnSkillUpdate;
|
||||
@ -48,7 +53,7 @@ protected:
|
||||
FSkillExecute OnSkillExecute;
|
||||
|
||||
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
||||
FSkillData SkillData;
|
||||
TObjectPtr< USkillAsset> SkillData;
|
||||
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
||||
USkillManager* SkillManager;
|
||||
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ToolTip = "技能效果"))
|
||||
|
||||
@ -27,7 +27,7 @@ void USkillEffect::Execute(const FSkillContext& context)
|
||||
}
|
||||
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)) ;
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("技能:%s 拥有者: %s 目标: %s 效果: %s")
|
||||
, *OwnerSkill->GetSkillData().SkillName.ToString()
|
||||
, *OwnerSkill->GetSkillData()->SkillName.ToString()
|
||||
,*OwnerSkill->GetOwner()->GetActorNameOrLabel()
|
||||
,*strTargets
|
||||
, *( GetSkillEffectDes()));
|
||||
@ -62,7 +62,7 @@ TArray<UObject*> USkillEffect::GetApplyTargets(const FSkillContext& context)
|
||||
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);
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ void USkillEffect_ModifyCD::Execute(const FSkillContext& context)
|
||||
{
|
||||
//修改技能的冷却时间
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
@ -22,13 +22,13 @@ void USkillEffect_ModifySpeed::Execute(const FSkillContext& context)
|
||||
{
|
||||
//修改技能的冷却倍率
|
||||
USkill* skill = Cast<USkill>(target);
|
||||
skill->GetSkillData().Speed = effectData.EffectValue;
|
||||
skill->GetSkillData()->Speed = effectData.EffectValue;
|
||||
//延时结束效果
|
||||
GetWorld()->GetTimerManager().SetTimer(TimerHandle, [&]()
|
||||
{
|
||||
|
||||
UE_LOG(LogTemp, Log, TEXT("取消CD充能效果!"));
|
||||
skill->GetSkillData().Speed = 1;
|
||||
skill->GetSkillData()->Speed = 1;
|
||||
|
||||
}, UKismetStringLibrary::Conv_StringToInt(effectData.ParamAddition), false); // 单次触发
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
#include "SkillManager.h"
|
||||
#include "Skill.h"
|
||||
#include "ProjectFish/DataAsset/BagConfigAsset.h"
|
||||
|
||||
void USkillManager::Tick(float DeltaTime)
|
||||
{
|
||||
@ -42,49 +43,64 @@ void USkillManager::AddPawn(class APawnWithSkill* Pawn, FIntPoint BagSize)
|
||||
// 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);
|
||||
bool bAddAble = true;
|
||||
for (int y = 0; y < BagSize.Y; y++)
|
||||
for (auto PlacedSkill: Bag->PlacedSkills)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
USkill* skill = NewObject<USkill>(this);
|
||||
skill->InitSkill(Pawn, this, PlacedSkill);
|
||||
SkillObjects.Add(skill);
|
||||
BagPositions.Add(FIntPoint(PlacedSkill.PositionX, PlacedSkill.PositionY));
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
|
||||
}
|
||||
|
||||
void USkillManager::OnAllSkillAdded()
|
||||
@ -100,7 +116,7 @@ class USkill* USkillManager::GetSkillByTag(FGameplayTag Tag)
|
||||
{
|
||||
for (auto Skill : Skills)
|
||||
{
|
||||
if (Skill->GetSkillData().SkillTag == Tag)
|
||||
if (Skill->GetSkillData()->SkillTag == Tag)
|
||||
return Skill;
|
||||
}
|
||||
return nullptr;
|
||||
@ -117,7 +133,7 @@ TArray<USkill*> USkillManager::GetSkillsAround(USkill* TargetSkill)
|
||||
TMap<FIntPoint, int32> *BagStates = PawnBagState.Find(TargetSkill->GetOwner());
|
||||
FIntPoint BagPos = TargetSkill->GetBagPos();
|
||||
FIntPoint BagSize = *PawnInfo.Find(TargetSkill->GetOwner());
|
||||
FSkillData data = TargetSkill->GetSkillData();
|
||||
TObjectPtr<USkillAsset> data = TargetSkill->GetSkillData();
|
||||
int beginX = FMath::Max(0, BagPos.X- 1);
|
||||
int endX = FMath::Min(BagSize.X - 1, BagPos.X + 1);
|
||||
int beginY = FMath::Max(0, BagPos.Y - 1);
|
||||
|
||||
@ -24,9 +24,12 @@ public:
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void AddPawn(class APawnWithSkill* Pawn, FIntPoint BagSize);
|
||||
|
||||
// UFUNCTION(BlueprintCallable)
|
||||
// USkill* AddSkill(FSkillData data, APawnWithSkill* Pawn, FIntPoint& BagPos);
|
||||
UFUNCTION(BlueprintCallable)
|
||||
USkill* AddSkill(FSkillData data, APawnWithSkill* Pawn, FIntPoint& BagPos);
|
||||
|
||||
void AddBagWithSkills(UBagConfigAsset* Bag, APawnWithSkill* Pawn,
|
||||
TArray<USkill*>& SkillObjects, TArray<FIntPoint>& BagPositions);
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void OnAllSkillAdded();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user