整合SLSUtilities
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Cielonos.MainGame.Characters;
|
||||
using Sirenix.OdinInspector;
|
||||
using SLSUtilities.FunctionalAnimation;
|
||||
@@ -68,6 +69,31 @@ namespace Cielonos.MainGame
|
||||
{
|
||||
private static readonly int ActionSpeed = Animator.StringToHash("ActionSpeed");
|
||||
|
||||
public bool CheckPlayability(RuntimeFuncAnim oldFuncAnim, RuntimeFuncAnim newFuncAnim)
|
||||
{
|
||||
if (oldFuncAnim != null)
|
||||
{
|
||||
var oldData = oldFuncAnim.funcAnimData;
|
||||
var newData = newFuncAnim.funcAnimData;
|
||||
|
||||
FuncAnimInterval specifiedInterval = oldData.intervals.FirstOrDefault(interval =>
|
||||
interval.intervalType == IntervalType.Custom && interval.intervalName == "SpecifiedActionDisruption");
|
||||
|
||||
if (specifiedInterval != null)
|
||||
{
|
||||
if (oldData.interactions.TryGetValue("SpecifiedActionDisruption", out List<string> interactions))
|
||||
{
|
||||
if (interactions.Contains(newData.animInfo.animationName))
|
||||
{
|
||||
return animationSc.currentIntervals.Any(interval => interval == specifiedInterval);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return CheckPlayability(newFuncAnim.funcAnimData.animInfo.disruptionType);
|
||||
}
|
||||
|
||||
public bool CheckPlayability(DisruptionType disruptionType = DisruptionType.NormalAction)
|
||||
{
|
||||
if (character.statusSm.isDead)
|
||||
@@ -130,7 +156,7 @@ namespace Cielonos.MainGame
|
||||
|
||||
var newRtFuncAnim = new RuntimeFuncAnim(funcAnimData, character);
|
||||
|
||||
if (!CheckPlayability(newRtFuncAnim.funcAnimData.animInfo.disruptionType))
|
||||
if (!CheckPlayability(currentRuntimeFuncAnim, newRtFuncAnim))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user