geometry-tower-defense-base/src-ref/Procedure/Base/ProcedureVerifyResources.cs

78 lines
2.8 KiB
C#

using GameFramework.Event;
using GeometryTD;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
namespace GeometryTD.Procedure
{
public class ProcedureVerifyResources : ProcedureBase
{
private bool m_VerifyResourcesComplete = false;
public override bool UseNativeDialog
{
get
{
return true;
}
}
protected override void OnEnter(ProcedureOwner procedureOwner)
{
base.OnEnter(procedureOwner);
GameEntry.Event.Subscribe(ResourceVerifyStartEventArgs.EventId, OnResourceVerifyStart);
GameEntry.Event.Subscribe(ResourceVerifySuccessEventArgs.EventId, OnResourceVerifySuccess);
GameEntry.Event.Subscribe(ResourceVerifyFailureEventArgs.EventId, OnResourceVerifyFailure);
m_VerifyResourcesComplete = false;
GameEntry.Resource.VerifyResources(OnVerifyResourcesComplete);
}
protected override void OnLeave(ProcedureOwner procedureOwner, bool isShutdown)
{
base.OnLeave(procedureOwner, isShutdown);
GameEntry.Event.Unsubscribe(ResourceVerifyStartEventArgs.EventId, OnResourceVerifyStart);
GameEntry.Event.Unsubscribe(ResourceVerifySuccessEventArgs.EventId, OnResourceVerifySuccess);
GameEntry.Event.Unsubscribe(ResourceVerifyFailureEventArgs.EventId, OnResourceVerifyFailure);
}
protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
{
base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
if (!m_VerifyResourcesComplete)
{
return;
}
ChangeState<ProcedureCheckResources>(procedureOwner);
}
private void OnVerifyResourcesComplete(bool result)
{
m_VerifyResourcesComplete = true;
Log.Info("Verify resources complete, result is '{0}'.", result);
}
private void OnResourceVerifyStart(object sender, GameEventArgs e)
{
ResourceVerifyStartEventArgs ne = (ResourceVerifyStartEventArgs)e;
Log.Info("Start verify resources, verify resource count '{0}', verify resource total length '{1}'.", ne.Count, ne.TotalLength);
}
private void OnResourceVerifySuccess(object sender, GameEventArgs e)
{
ResourceVerifySuccessEventArgs ne = (ResourceVerifySuccessEventArgs)e;
Log.Info("Verify resource '{0}' success.", ne.Name);
}
private void OnResourceVerifyFailure(object sender, GameEventArgs e)
{
ResourceVerifyFailureEventArgs ne = (ResourceVerifyFailureEventArgs)e;
Log.Warning("Verify resource '{0}' failure.", ne.Name);
}
}
}