2021-08-27 15:12:48 +01:00
|
|
|
module eventy.signal;
|
|
|
|
|
|
|
|
import eventy.event : Event;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Signal
|
|
|
|
*
|
|
|
|
* Represents a signal handler that handles a given set of typeIDs
|
|
|
|
* which means that it contains an associated function to be run
|
|
|
|
* on handling of a given Event
|
|
|
|
*/
|
2022-01-16 12:32:00 +00:00
|
|
|
//alias EventHandler = void function(Event);
|
2021-08-27 15:12:48 +01:00
|
|
|
|
2022-01-16 12:32:00 +00:00
|
|
|
public abstract class Signal
|
2021-08-27 15:12:48 +01:00
|
|
|
{
|
2021-08-28 10:41:21 +01:00
|
|
|
/* TypeIDs this signal handler associates with */
|
2021-08-27 15:12:48 +01:00
|
|
|
private ulong[] typeIDs;
|
|
|
|
|
2021-08-28 10:41:21 +01:00
|
|
|
/* Signal handler */
|
2022-01-16 12:32:00 +00:00
|
|
|
//private EventHandler handler;
|
2021-08-28 10:41:21 +01:00
|
|
|
|
2022-01-16 12:32:00 +00:00
|
|
|
this(ulong[] typeIDs)
|
2021-08-28 10:41:21 +01:00
|
|
|
{
|
|
|
|
this.typeIDs = typeIDs;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns true if this signal handles the given typeID
|
|
|
|
* false otherwise
|
|
|
|
*/
|
|
|
|
public bool handles(ulong typeID)
|
|
|
|
{
|
|
|
|
/* FIXME: Implement */
|
2021-09-01 14:33:39 +01:00
|
|
|
foreach(ulong id; typeIDs)
|
|
|
|
{
|
|
|
|
if(id == typeID)
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
2021-08-28 10:41:21 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public void registerTypeID(ulong typeID)
|
2021-08-27 15:12:48 +01:00
|
|
|
{
|
|
|
|
|
|
|
|
}
|
2021-08-28 10:41:21 +01:00
|
|
|
|
|
|
|
public void deregisterTypeID(ulong typeID)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2022-01-16 12:32:00 +00:00
|
|
|
public abstract void handler(Event);
|
|
|
|
}
|