修改当技能耐久度为0的时候 UI正常进度条刷新显示
This commit is contained in:
parent
812cc728af
commit
1cd0265ee7
BIN
ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish-0001.dll
Normal file
BIN
ProjectFish/Binaries/Win64/UnrealEditor-ProjectFish-0001.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2,7 +2,7 @@
|
||||
"BuildId": "37670630",
|
||||
"Modules":
|
||||
{
|
||||
"ProjectFish": "UnrealEditor-ProjectFish.dll",
|
||||
"ProjectFishEditor": "UnrealEditor-ProjectFishEditor.dll"
|
||||
"ProjectFish": "UnrealEditor-ProjectFish-0001.dll",
|
||||
"ProjectFishEditor": "UnrealEditor-ProjectFishEditor-0001.dll"
|
||||
}
|
||||
}
|
||||
@ -115,11 +115,16 @@ void USkill::InitSkillTrigger()
|
||||
|
||||
bool USkill::SkillTickAble()
|
||||
{
|
||||
//剩余次数无限制或者拥有者没有被韧性眩晕
|
||||
return (RemainingEndurance >0 || RemainingEndurance == -1 )
|
||||
//剩余次数无限制 或者 剩余次数大于0次并且拥有者没有被韧性眩晕
|
||||
return (RemainingEndurance == -1 || RemainingEndurance >= 0 )
|
||||
&& Owner->CurrentTenacity > 0 && SkillData->triggerType == ESkillTriggerType::ActiveSkill;
|
||||
}
|
||||
|
||||
bool USkill::SkillExecuteAble()
|
||||
{
|
||||
return (RemainingEndurance == -1 || RemainingEndurance > 0 ) && RemainingTime <= 0;
|
||||
}
|
||||
|
||||
FIntPoint USkill::GetSkillSize()
|
||||
{
|
||||
return GetSkillSizeValue(SkillData->SkillSize);
|
||||
@ -128,21 +133,25 @@ FIntPoint USkill::GetSkillSize()
|
||||
void USkill::TickSkill(float deltaTime)
|
||||
{
|
||||
if (SkillTickAble())
|
||||
{
|
||||
RemainingTime -= deltaTime * SkillData->Speed;
|
||||
if (RemainingTime <= 0 )
|
||||
RemainingTime = FMath::Max(RemainingTime, 0);
|
||||
}
|
||||
|
||||
if (SkillExecuteAble() )
|
||||
{
|
||||
ExecuteSkill();
|
||||
}
|
||||
if (RemainingEndurance == 0)
|
||||
{
|
||||
FSkillContext context;
|
||||
context.OwnerSkill = this;
|
||||
context.SkillManager = SkillManager;
|
||||
for (auto Effect: SkillEffects)
|
||||
{
|
||||
Effect->EffectEnded(context);
|
||||
}
|
||||
}
|
||||
// if (RemainingEndurance == 0)
|
||||
// {
|
||||
// FSkillContext context;
|
||||
// context.OwnerSkill = this;
|
||||
// context.SkillManager = SkillManager;
|
||||
// for (auto Effect: SkillEffects)
|
||||
// {
|
||||
// Effect->EffectEnded(context);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
void USkill::ExecuteSkill()
|
||||
|
||||
@ -53,6 +53,9 @@ public:
|
||||
UFUNCTION(BlueprintPure)
|
||||
bool SkillTickAble();
|
||||
|
||||
UFUNCTION(BlueprintPure)
|
||||
bool SkillExecuteAble();
|
||||
|
||||
UFUNCTION(BlueprintPure)
|
||||
FIntPoint GetSkillSize();
|
||||
|
||||
|
||||
@ -45,134 +45,11 @@ void USkillEffect::Cancel(const FSkillContext& context)
|
||||
{
|
||||
}
|
||||
|
||||
void USkillEffect::EffectEnded(const FSkillContext& context)
|
||||
{
|
||||
}
|
||||
|
||||
// TArray<UObject*> USkillEffect::GetApplyTargets(const FSkillContext& context)
|
||||
// void USkillEffect::EffectEnded(const FSkillContext& context)
|
||||
// {
|
||||
// TArray<UObject*> result;
|
||||
// switch (effectData.SkillSelecter.SelecterType)
|
||||
// {
|
||||
// case EEffectTargetType::Target:
|
||||
// {
|
||||
// //目标是敌人
|
||||
// result.Add(context.SkillManager->GetEnemyPawn(OwnerSkill->GetOwner()));
|
||||
// break;;
|
||||
// }
|
||||
// case EEffectTargetType::Self:
|
||||
// {
|
||||
// //目标是敌人
|
||||
// result.Add(OwnerSkill->GetOwner());
|
||||
// break;;
|
||||
// }
|
||||
// case EEffectTargetType::TargetSkill:
|
||||
// {
|
||||
// TArray<USkill*> Skills = context.SkillManager->GetSkillsByOwner(context.SkillManager->GetEnemyPawn(OwnerSkill->GetOwner()));
|
||||
// if (effectData.SkillSelecter.bAll)
|
||||
// {
|
||||
// result.Append(Skills);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num());
|
||||
// for (int i = 0; i < TargetNum; i++)
|
||||
// {
|
||||
// int randomIndex = FMath::RandRange(0, Skills.Num() - 1);
|
||||
// result.Add(Skills[randomIndex]);
|
||||
// Skills.RemoveAt(randomIndex);
|
||||
// }
|
||||
// }
|
||||
// break;;
|
||||
// }
|
||||
// case EEffectTargetType::SelfSkill:
|
||||
// {
|
||||
// TArray<USkill*> Skills = context.SkillManager->GetSkillsByOwner(OwnerSkill->GetOwner());
|
||||
// if (effectData.SkillSelecter.bAll)
|
||||
// {
|
||||
// result.Append(Skills);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num());
|
||||
// for (int i = 0; i < TargetNum; i++)
|
||||
// {
|
||||
// int randomIndex = FMath::RandRange(0, Skills.Num() - 1);
|
||||
// result.Add(Skills[randomIndex]);
|
||||
// Skills.RemoveAt(randomIndex);
|
||||
// }
|
||||
// }
|
||||
// break;;
|
||||
// }
|
||||
// case EEffectTargetType::AroundSkill:
|
||||
// {
|
||||
// TArray<USkill*> aroundSkills = context.SkillManager->GetSkillsAround(context.OwnerSkill);
|
||||
// for (auto skill: aroundSkills)
|
||||
// {
|
||||
// result.Add(skill);
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// case EEffectTargetType::SelfSkillType:
|
||||
// {
|
||||
// //筛选指定类型的技能
|
||||
// TArray<USkill*> Skills = context.SkillManager->GetSkillsByOwner(OwnerSkill->GetOwner());
|
||||
// for (int i = Skills.Num() - 1; i >= 0; i--)
|
||||
// {
|
||||
// if (!Skills[i]->GetSkillData()->SkillTypes.Contains(effectData.SkillSelecter.SkillType))
|
||||
// {
|
||||
// Skills.RemoveAt(i);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (effectData.SkillSelecter.bAll)
|
||||
// {
|
||||
// result.Append(Skills);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num());
|
||||
// for (int i = 0; i < TargetNum; i++)
|
||||
// {
|
||||
// int randomIndex = FMath::RandRange(0, Skills.Num() - 1);
|
||||
// result.Add(Skills[randomIndex]);
|
||||
// Skills.RemoveAt(randomIndex);
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// case EEffectTargetType::TargetSkillType:
|
||||
// {
|
||||
// //筛选指定类型的技能
|
||||
// TArray<USkill*> Skills = context.SkillManager->GetSkillsByOwner(context.SkillManager->GetEnemyPawn(OwnerSkill->GetOwner()));
|
||||
// for (int i = Skills.Num() - 1; i >= 0; i--)
|
||||
// {
|
||||
// if (!Skills[i]->GetSkillData()->SkillTypes.Contains(effectData.SkillSelecter.SkillType))
|
||||
// {
|
||||
// Skills.RemoveAt(i);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (effectData.SkillSelecter.bAll)
|
||||
// {
|
||||
// result.Append(Skills);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num());
|
||||
// for (int i = 0; i < TargetNum; i++)
|
||||
// {
|
||||
// int randomIndex = FMath::RandRange(0, Skills.Num() - 1);
|
||||
// result.Add(Skills[randomIndex]);
|
||||
// Skills.RemoveAt(randomIndex);
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
|
||||
|
||||
FString USkillEffect::GetSkillEffectDes()
|
||||
{
|
||||
return FString();
|
||||
|
||||
@ -20,7 +20,7 @@ public:
|
||||
void InitSkillEffect(class USkill* skill, FSkillEffectData data);
|
||||
virtual void Execute(const FSkillContext& context) ;
|
||||
virtual void Cancel(const FSkillContext& context) ;
|
||||
virtual void EffectEnded(const FSkillContext& context);
|
||||
//virtual void EffectEnded(const FSkillContext& context);
|
||||
//TArray<UObject*> GetApplyTargets(const FSkillContext& context);
|
||||
|
||||
UFUNCTION(BlueprintPure)
|
||||
|
||||
@ -24,24 +24,24 @@ void USkillEffect_DamageReduce::Execute(const FSkillContext& context)
|
||||
}
|
||||
}
|
||||
|
||||
void USkillEffect_DamageReduce::EffectEnded(const FSkillContext& context)
|
||||
{
|
||||
Super::EffectEnded(context);
|
||||
TArray<UObject*> targets = context.SkillManager->GetTargetsBySelector(context.OwnerSkill, effectData.SkillSelecter);
|
||||
for (auto target: targets)
|
||||
{
|
||||
if (!target->GetClass()->IsChildOf(APawnWithSkill::StaticClass()))
|
||||
{
|
||||
UE_LOG(LogTemp, Error, TEXT("skill %s apply target is not a pawn "), *(OwnerSkill->GetSkillName()));
|
||||
}
|
||||
else
|
||||
{
|
||||
//恢复目标护盾值
|
||||
APawnWithSkill* OwnerPawn = Cast<APawnWithSkill>(target);
|
||||
OwnerPawn->SetDamageReduce(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
// void USkillEffect_DamageReduce::EffectEnded(const FSkillContext& context)
|
||||
// {
|
||||
// Super::EffectEnded(context);
|
||||
// TArray<UObject*> targets = context.SkillManager->GetTargetsBySelector(context.OwnerSkill, effectData.SkillSelecter);
|
||||
// for (auto target: targets)
|
||||
// {
|
||||
// if (!target->GetClass()->IsChildOf(APawnWithSkill::StaticClass()))
|
||||
// {
|
||||
// UE_LOG(LogTemp, Error, TEXT("skill %s apply target is not a pawn "), *(OwnerSkill->GetSkillName()));
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //恢复目标护盾值
|
||||
// APawnWithSkill* OwnerPawn = Cast<APawnWithSkill>(target);
|
||||
// OwnerPawn->SetDamageReduce(0);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
FString USkillEffect_DamageReduce::GetSkillEffectDes()
|
||||
{
|
||||
|
||||
@ -15,6 +15,6 @@ class PROJECTFISH_API USkillEffect_DamageReduce : public USkillEffect
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
void Execute(const FSkillContext& context) override;
|
||||
void EffectEnded(const FSkillContext& context) override;
|
||||
//void EffectEnded(const FSkillContext& context) override;
|
||||
FString GetSkillEffectDes() override;
|
||||
};
|
||||
|
||||
@ -36,11 +36,11 @@ void USkillEffect_ModifySpeed::Execute(const FSkillContext& context)
|
||||
}
|
||||
}
|
||||
|
||||
void USkillEffect_ModifySpeed::EffectEnded(const FSkillContext& context)
|
||||
{
|
||||
Super::EffectEnded(context);
|
||||
//GetWorld()->GetTimerManager().ClearTimer(TimerHandle);
|
||||
}
|
||||
// void USkillEffect_ModifySpeed::EffectEnded(const FSkillContext& context)
|
||||
// {
|
||||
// Super::EffectEnded(context);
|
||||
// //GetWorld()->GetTimerManager().ClearTimer(TimerHandle);
|
||||
// }
|
||||
|
||||
FString USkillEffect_ModifySpeed::GetSkillEffectDes()
|
||||
{
|
||||
|
||||
@ -17,7 +17,7 @@ class PROJECTFISH_API USkillEffect_ModifySpeed : public USkillEffect
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
void Execute(const FSkillContext& context) override;
|
||||
void EffectEnded(const FSkillContext& context) override;
|
||||
//void EffectEnded(const FSkillContext& context) override;
|
||||
FString GetSkillEffectDes() override;
|
||||
private:
|
||||
FTimerHandle TimerHandle;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user