Compare commits
2 Commits
0cb40e792b
...
2307baf0ca
| Author | SHA1 | Date | |
|---|---|---|---|
| 2307baf0ca | |||
| c6f31bb217 |
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.
@ -47,7 +47,7 @@ public:
|
|||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能触发类型"))
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能触发类型"))
|
||||||
ESkillTriggerType triggerType = ESkillTriggerType::ActiveSkill;
|
ESkillTriggerType triggerType = ESkillTriggerType::ActiveSkill;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能耐久度", EditConditionHides, EditCondition = "bActiveSkill"))
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能耐久度", EditConditionHides,EditCondition = "triggerType == ESkillTriggerType::ActiveSkill"))
|
||||||
int32 Endurance;
|
int32 Endurance;
|
||||||
|
|
||||||
//主动技能属性
|
//主动技能属性
|
||||||
|
|||||||
@ -57,7 +57,7 @@ enum class ESkillTriggerType: uint8
|
|||||||
UENUM(BlueprintType)
|
UENUM(BlueprintType)
|
||||||
enum class EPassiveTriggerCondition: uint8
|
enum class EPassiveTriggerCondition: uint8
|
||||||
{
|
{
|
||||||
ItemTriggered UMETA(DisplayName = "物品触发"),
|
ItemTriggered UMETA(DisplayName = "自身或者敌人的物品触发时,激活"),
|
||||||
DealDamage UMETA(DisplayName = "造成伤害"),
|
DealDamage UMETA(DisplayName = "造成伤害"),
|
||||||
SkillDurabilityDecrease UMETA(DisplayName = "物品耐久度减少"),
|
SkillDurabilityDecrease UMETA(DisplayName = "物品耐久度减少"),
|
||||||
SkillDurabilityRestore UMETA(DisplayName = "物品耐久度回复"),
|
SkillDurabilityRestore UMETA(DisplayName = "物品耐久度回复"),
|
||||||
|
|||||||
@ -40,7 +40,7 @@ void APawnWithSkill::BeginPlay()
|
|||||||
{
|
{
|
||||||
Super::BeginPlay();
|
Super::BeginPlay();
|
||||||
CurrentEndurance = MaxEndurance;
|
CurrentEndurance = MaxEndurance;
|
||||||
CurrentTenacity += MaxTenacity;
|
CurrentTenacity = MaxTenacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called every frame
|
// Called every frame
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
#include "SkillManager.h"
|
#include "SkillManager.h"
|
||||||
#include "Skill.h"
|
#include "Skill.h"
|
||||||
#include "ProjectFish/DataAsset/BagConfigAsset.h"
|
#include "ProjectFish/DataAsset/BagConfigAsset.h"
|
||||||
|
#include "ProjectFish/DataAsset/BagShapeAsset.h"
|
||||||
|
|
||||||
void USkillManager::Tick(float DeltaTime)
|
void USkillManager::Tick(float DeltaTime)
|
||||||
{
|
{
|
||||||
@ -42,6 +43,7 @@ void USkillManager::AddBagWithSkills(UBagConfigAsset* Bag, APawnWithSkill* Pawn,
|
|||||||
TArray<FIntPoint>& BagPositions)
|
TArray<FIntPoint>& BagPositions)
|
||||||
{
|
{
|
||||||
FIntPoint BagSize = *PawnInfo.Find(Pawn);
|
FIntPoint BagSize = *PawnInfo.Find(Pawn);
|
||||||
|
TMap<FIntPoint, int32>* states = PawnBagState.Find(Pawn);
|
||||||
for (auto PlacedSkill: Bag->PlacedSkills)
|
for (auto PlacedSkill: Bag->PlacedSkills)
|
||||||
{
|
{
|
||||||
USkill* skill = NewObject<USkill>(this);
|
USkill* skill = NewObject<USkill>(this);
|
||||||
@ -49,6 +51,14 @@ void USkillManager::AddBagWithSkills(UBagConfigAsset* Bag, APawnWithSkill* Pawn,
|
|||||||
SkillObjects.Add(skill);
|
SkillObjects.Add(skill);
|
||||||
BagPositions.Add(FIntPoint(PlacedSkill.PositionX, PlacedSkill.PositionY));
|
BagPositions.Add(FIntPoint(PlacedSkill.PositionX, PlacedSkill.PositionY));
|
||||||
Skills.Add(skill);
|
Skills.Add(skill);
|
||||||
|
//设置占用状态
|
||||||
|
for (int x = 0; x < Bag->BagShapeAsset->BagWidth; x++)
|
||||||
|
{
|
||||||
|
for (int y = 0; y < Bag->BagShapeAsset->BagHeight; y++)
|
||||||
|
{
|
||||||
|
states->Add(FIntPoint(x, y) + FIntPoint(x, y), GetSkillIndex(skill));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -167,3 +177,5 @@ TArray<USkill*> USkillManager::GetSkillsByType(ESkillType SkillType) const
|
|||||||
}
|
}
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -62,6 +62,7 @@ public:
|
|||||||
|
|
||||||
UFUNCTION(BlueprintPure)
|
UFUNCTION(BlueprintPure)
|
||||||
TArray<class USkill*> GetSkillsByType(ESkillType SkillType) const;
|
TArray<class USkill*> GetSkillsByType(ESkillType SkillType) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
UPROPERTY(BlueprintReadWrite)
|
UPROPERTY(BlueprintReadWrite)
|
||||||
TArray<class USkill *> Skills;
|
TArray<class USkill *> Skills;
|
||||||
|
|||||||
@ -44,22 +44,35 @@ void USkillTrigger::InitPassiveConditionTriggers()
|
|||||||
case EPassiveTriggerCondition::ItemTriggered:
|
case EPassiveTriggerCondition::ItemTriggered:
|
||||||
{
|
{
|
||||||
//物品执行时触发
|
//物品执行时触发
|
||||||
FGuid TriggerSkillID = PassiveTriggerConfig.SpecificSkillID;
|
//FGuid TriggerSkillID = PassiveTriggerConfig.SpecificSkillID;
|
||||||
if (PassiveTriggerConfig.Target == EPassiveTriggerTarget::SelfSpecificItem)
|
// if (PassiveTriggerConfig.Target == EPassiveTriggerTarget::SelfSpecificItem)
|
||||||
|
// {
|
||||||
|
// //自身
|
||||||
|
// TArray<USkill*> SpecificSkills = SkillContext.SkillManager->GetSkillsByOwnerAndID(SkillContext.OwnerSkill->GetOwner(), TriggerSkillID);
|
||||||
|
// for (USkill* Skill : SpecificSkills)
|
||||||
|
// {
|
||||||
|
// Skill->OnSkillExecute.AddDynamic(this, &USkillTrigger::OnSkillExecute);
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// else if (PassiveTriggerConfig.Target == EPassiveTriggerTarget::EnemySpecificItem)
|
||||||
|
// {
|
||||||
|
// //敌人
|
||||||
|
// TArray<USkill*> SpecificSkills = SkillContext.SkillManager->GetSkillsByOwnerAndID(SkillContext.SkillManager->GetEnemyPawn(SkillContext.OwnerSkill->GetOwner()), TriggerSkillID);
|
||||||
|
// for (USkill* Skill : SpecificSkills)
|
||||||
|
// {
|
||||||
|
// Skill->OnSkillExecute.AddDynamic(this, &USkillTrigger::OnSkillExecute);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
if (PassiveTriggerConfig.Target ==EPassiveTriggerTarget::Self || PassiveTriggerConfig.Target ==EPassiveTriggerTarget::Enemy)
|
||||||
{
|
{
|
||||||
TArray<USkill*> SpecificSkills = SkillContext.SkillManager->GetSkillsByOwnerAndID(SkillContext.OwnerSkill->GetOwner(), TriggerSkillID);
|
APawnWithSkill* TargetPawn = PassiveTriggerConfig.Target ==EPassiveTriggerTarget::Self ? SkillContext.OwnerSkill->GetOwner():
|
||||||
for (USkill* Skill : SpecificSkills)
|
SkillContext.SkillManager->GetEnemyPawn(SkillContext.OwnerSkill->GetOwner());
|
||||||
|
TArray<USkill*> PawnSkills = SkillContext.SkillManager->GetSkillsByOwner(TargetPawn);
|
||||||
|
for (USkill* Skill : PawnSkills)
|
||||||
{
|
{
|
||||||
Skill->OnSkillExecute.AddDynamic(this, &USkillTrigger::OnSkillExecute);
|
if (Skill != SkillContext.OwnerSkill)
|
||||||
|
Skill->OnSkillExecute.AddDynamic(this, &USkillTrigger::OnSkillExecute);
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (PassiveTriggerConfig.Target == EPassiveTriggerTarget::EnemySpecificItem)
|
|
||||||
{
|
|
||||||
TArray<USkill*> SpecificSkills = SkillContext.SkillManager->GetSkillsByOwnerAndID(SkillContext.SkillManager->GetEnemyPawn(SkillContext.OwnerSkill->GetOwner()), TriggerSkillID);
|
|
||||||
for (USkill* Skill : SpecificSkills)
|
|
||||||
{
|
|
||||||
Skill->OnSkillExecute.AddDynamic(this, &USkillTrigger::OnSkillExecute);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user