Files
back_cantanBuilding/Assets/Scripts/SandDig/GameBroadLogic_Ani.cs
2026-05-26 16:15:54 +08:00

82 lines
2.4 KiB
C#

using System.Collections.Generic;
using asap.core;
using Script.RuntimeScript.Interface;
namespace Script.RuntimeScript
{
public partial class GameBroadLogic
{
private List<BroadEffectInterface> _effectList = new List<BroadEffectInterface>();
private BroadEffectState _broadState = BroadEffectState.None;
public void AddToEffectList(BroadEffectInterface item)
{
_effectList.Add(item);
if (this._broadState == BroadEffectState.None)
{
this._broadState = BroadEffectState.Check;
}
}
public void Update()
{
switch (_broadState)
{
case BroadEffectState.None:
break;
case BroadEffectState.Check:
case BroadEffectState.OverCheck:
bool haveEffect = CheckCanPlayEffect(_broadState == BroadEffectState.OverCheck);
if (haveEffect == false)
{
_broadState = BroadEffectState.AllOver;
}
break;
case BroadEffectState.Playing:
break;
case BroadEffectState.AllOver:
_broadState = BroadEffectState.None;
GContext.container.Resolve<DiggingGameManager>().GameState = SandDigGameState.PropEffectEnd;
break;
}
}
private bool CheckCanPlayEffect(bool overCheck)
{
if (_effectList.Count > 0)
{
_effectList.Sort((a, b) => a.PlayEffectPriority.CompareTo(b.PlayEffectPriority));
_broadState = BroadEffectState.Playing;
DiggingGameManager.LogError("_effectList.Count ::" + _effectList.Count);
PlayEffect(_effectList[0], overCheck);
if (_effectList.Count > 0)//防止 被ClearEffect 清空
_effectList.RemoveAt(0);
return true;
}
else
{
return false;
}
}
private void PlayEffect(BroadEffectInterface item, bool overCheck)
{
item.PlayEffect(overCheck);
}
private void ClearEffect()
{
_effectList.Clear();
}
}
}
public enum BroadEffectState
{
None,
Check,
Playing,
AllOver,
OverCheck,
}