2020-05-14 02:34:26 +00:00
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
using Svelto.ECS;
|
|
|
|
|
|
|
|
|
|
namespace GamecraftModdingAPI.Events
|
|
|
|
|
{
|
2020-08-03 02:39:26 +00:00
|
|
|
|
[Obsolete]
|
2020-05-14 02:34:26 +00:00
|
|
|
|
public class EmitterBuilder
|
|
|
|
|
{
|
|
|
|
|
private string name;
|
|
|
|
|
|
|
|
|
|
private int? type;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Create a new event emitter builder.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public EmitterBuilder()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Create a new event emitter builder.
|
|
|
|
|
/// This is equivalent to new <code>EmitterBuilder().Name(name)</code>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="name">The emitter name.</param>
|
|
|
|
|
public EmitterBuilder(string name)
|
|
|
|
|
{
|
|
|
|
|
this.name = name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Create and return an event emitter builder.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>The builder.</returns>
|
|
|
|
|
public static EmitterBuilder Builder()
|
|
|
|
|
{
|
|
|
|
|
return new EmitterBuilder();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Create and return an event emitter builder.
|
|
|
|
|
/// This is equivalent to <code>Builder().Name(name)</code>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>The builder.</returns>
|
|
|
|
|
/// <param name="name">The emitter name.</param>
|
|
|
|
|
public static EmitterBuilder Builder(string name)
|
|
|
|
|
{
|
|
|
|
|
return new EmitterBuilder(name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Name the event emitter.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>The builder.</returns>
|
|
|
|
|
/// <param name="name">The event emitter name.</param>
|
|
|
|
|
public EmitterBuilder Name(string name)
|
|
|
|
|
{
|
|
|
|
|
this.name = name;
|
|
|
|
|
return this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Set the type of event to handle.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>The builder.</returns>
|
|
|
|
|
/// <param name="eventType">The event type.</param>
|
|
|
|
|
public EmitterBuilder Handle(EventType eventType)
|
|
|
|
|
{
|
|
|
|
|
return Handle((int)eventType);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Set the type of event to handle.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>The builder.</returns>
|
|
|
|
|
/// <param name="eventType">The event type.</param>
|
|
|
|
|
public EmitterBuilder Handle(int eventType)
|
|
|
|
|
{
|
|
|
|
|
this.type = eventType;
|
|
|
|
|
return this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Build the event emitter.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>The event emitter.</returns>
|
|
|
|
|
/// <param name="register">Automatically register the event emitter with EventManager.AddEventemitter().</param>
|
|
|
|
|
public IEventEmitterEngine Build(bool register = true)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(name))
|
|
|
|
|
{
|
|
|
|
|
throw new EventParameterMissingException("Event emitter name must be defined before Build() is called");
|
|
|
|
|
}
|
|
|
|
|
if (!type.HasValue)
|
|
|
|
|
{
|
|
|
|
|
throw new EventParameterMissingException("Event emitter event type must be defined before Build() is called");
|
|
|
|
|
}
|
|
|
|
|
SimpleEventEmitterEngine result = new SimpleEventEmitterEngine(type.Value, name);
|
|
|
|
|
if (register)
|
|
|
|
|
{
|
|
|
|
|
EventManager.AddEventEmitter(result);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|