using System;
namespace ET
{
public interface IEvent
{
Type Type { get; }
}
public abstract class AEvent: IEvent where A: struct
{
public Type Type
{
get
{
return typeof (A);
}
}
protected abstract ETTask Run(Scene scene, A a);
public async ETTask Handle(Scene scene, A a)
{
try
{
await Run(scene, a);
}
catch (Exception e)
{
Log.Error(e);
}
}
}
public abstract class BEvent: IEvent
{
public Type Type
{
get
{
return typeof(A);
}
}
public abstract void OnEvent(A a);
}
}