author | StephaneLenclud |
Sat, 13 Aug 2016 23:26:54 +0200 | |
changeset 232 | 5a739e2e5255 |
parent 214 | 4961ede27e0a |
permissions | -rw-r--r-- |
Stephane@212 | 1 |
// |
Stephane@212 | 2 |
|
Stephane@212 | 3 |
|
Stephane@212 | 4 |
using System; |
Stephane@212 | 5 |
using System.Collections.Generic; |
Stephane@212 | 6 |
using System.ComponentModel; |
Stephane@212 | 7 |
using System.Linq; |
Stephane@212 | 8 |
using System.Reflection; |
Stephane@212 | 9 |
using System.Runtime.Serialization; |
Stephane@212 | 10 |
using SharpLib.Utils; |
Stephane@212 | 11 |
|
Stephane@212 | 12 |
namespace SharpLib.Ear |
Stephane@212 | 13 |
{ |
Stephane@212 | 14 |
[TypeConverter(typeof(TypeConverterJson<ManagerEventAction>))] |
Stephane@212 | 15 |
[DataContract] |
Stephane@212 | 16 |
public class ManagerEventAction |
Stephane@212 | 17 |
{ |
Stephane@212 | 18 |
public static ManagerEventAction Current = null; |
StephaneLenclud@231 | 19 |
//public IDictionary<string, Type> ActionTypes; |
StephaneLenclud@231 | 20 |
//public IDictionary<string, Type> EventTypes; |
StephaneLenclud@231 | 21 |
|
StephaneLenclud@231 | 22 |
/// <summary> |
StephaneLenclud@231 | 23 |
/// Our events instances. |
StephaneLenclud@231 | 24 |
/// </summary> |
Stephane@212 | 25 |
[DataMember] |
StephaneLenclud@231 | 26 |
public List<Event> Events; |
StephaneLenclud@231 | 27 |
|
StephaneLenclud@231 | 28 |
|
Stephane@212 | 29 |
|
Stephane@212 | 30 |
|
Stephane@212 | 31 |
public ManagerEventAction() |
Stephane@212 | 32 |
{ |
Stephane@212 | 33 |
Init(); |
Stephane@212 | 34 |
} |
Stephane@212 | 35 |
|
Stephane@212 | 36 |
/// <summary> |
StephaneLenclud@231 | 37 |
/// Executes after internalization took place. |
Stephane@212 | 38 |
/// </summary> |
Stephane@212 | 39 |
public void Init() |
Stephane@212 | 40 |
{ |
StephaneLenclud@231 | 41 |
if (Events == null) |
StephaneLenclud@231 | 42 |
{ |
StephaneLenclud@231 | 43 |
Events = new List<Event>(); |
StephaneLenclud@231 | 44 |
} |
StephaneLenclud@231 | 45 |
|
StephaneLenclud@231 | 46 |
} |
Stephane@212 | 47 |
|
StephaneLenclud@231 | 48 |
/// <summary> |
StephaneLenclud@231 | 49 |
/// |
StephaneLenclud@231 | 50 |
/// </summary> |
StephaneLenclud@231 | 51 |
/// <param name="aEventType"></param> |
StephaneLenclud@231 | 52 |
public void TriggerEvent<T>() where T: class |
StephaneLenclud@231 | 53 |
{ |
StephaneLenclud@231 | 54 |
//Only trigger enabled events matching the desired type |
StephaneLenclud@231 | 55 |
foreach (Event e in Events.Where(e => e.GetType() == typeof(T) && e.Enabled)) |
Stephane@212 | 56 |
{ |
StephaneLenclud@231 | 57 |
e.Trigger(); |
Stephane@212 | 58 |
} |
Stephane@212 | 59 |
} |
Stephane@212 | 60 |
|
Stephane@212 | 61 |
|
StephaneLenclud@214 | 62 |
/// <summary> |
StephaneLenclud@214 | 63 |
/// |
StephaneLenclud@214 | 64 |
/// </summary> |
StephaneLenclud@214 | 65 |
/// <param name="aAction"></param> |
StephaneLenclud@214 | 66 |
public void RemoveAction(Action aAction) |
StephaneLenclud@214 | 67 |
{ |
StephaneLenclud@231 | 68 |
foreach (Event e in Events) |
StephaneLenclud@214 | 69 |
{ |
StephaneLenclud@214 | 70 |
if (e.Actions.Remove(aAction)) |
StephaneLenclud@214 | 71 |
{ |
StephaneLenclud@214 | 72 |
//We removed our action, we are done here. |
StephaneLenclud@214 | 73 |
return; |
StephaneLenclud@214 | 74 |
} |
StephaneLenclud@214 | 75 |
} |
StephaneLenclud@214 | 76 |
} |
Stephane@212 | 77 |
} |
Stephane@212 | 78 |
} |