public void Add(string name, Assembly assembly) { this.assemblies[name] = assembly; this.disposerEvents = new Dictionary <Type, IObjectEvent>(); foreach (Assembly ass in this.assemblies.Values) { Type[] types = ass.GetTypes(); foreach (Type type in types) { object[] attrs = type.GetCustomAttributes(typeof(ObjectEventAttribute), false); if (attrs.Length == 0) { continue; } object obj = Activator.CreateInstance(type); IObjectEvent objectEvent = obj as IObjectEvent; if (objectEvent == null) { Log.Error($"组件事件没有继承IObjectEvent: {type.Name}"); continue; } this.disposerEvents[objectEvent.Type()] = objectEvent; } } this.Load(); }
public static IGeneratorObjectEvent Convert(IObjectEvent eventObject) { IGeneratorObjectEvent Result; Result = new GeneratorObjectEvent(eventObject); GeneratorObjectEventMap.Add(eventObject, Result); return(Result); }
public void Add(string name, Type[] types) { if (types == null || types.Length == 0) { return; } for (int i = 0; i < types.Length; i++) { Type type = types[i]; //if (GameSetup.instance.useILRuntime) //{ // if (type.BaseType != null && (type.BaseType == typeof(Attribute) || type.BaseType.Name == "Attribute")) // continue; // if (type.Name == "Void") // continue; // if (type.IsValueType) // continue; // if (type == typeof(System.Object)) // continue; //} object[] attrs = type.GetCustomAttributes(typeof(ObjectEventAttribute), false); if (attrs == null || attrs.Length == 0) { continue; } ObjectEventAttribute objectEventAttribute = attrs[0] as ObjectEventAttribute; if (objectEventAttribute == null) { continue; } object obj = Activator.CreateInstance(type); IObjectEvent objectEvent = obj as IObjectEvent; if (objectEvent == null) { UnityEngine.Debug.LogError(string.Format("组件事件没有继承IObjectEvent: {0}", type.Name)); continue; } this.disposerEvents[objectEvent.Type()] = objectEvent; } }
private void ConnectQueryEvent(IDomain domain, ref bool IsConnected) { if (QueryEvent != null && (QueryObject == null || QueryObjectEvent == null)) { IObject Object = null; IObjectEvent ObjectEvent = null; QueryEvent.Connect(domain, ref Object, ref ObjectEvent); QueryObject = Object; QueryObjectEvent = ObjectEvent; QueryObjectEvent.SetIsProvidingCustomPageName(QueryEvent.EventSource, true); IsConnected = true; SetIsReachable(); } }
public bool Connect(IDomain domain, ref IObject obj, ref IObjectEvent objectEvent) { bool IsConnected = false; if (obj == null) { foreach (IObject Item in domain.Objects) { if (Item.Name == ObjectSource.Name) { obj = Item; break; } } if (obj == null) { throw new ParsingException(135, ObjectSource.Source, $"Unknown object '{ObjectSource.Name}'."); } obj.SetIsUsed(); IsConnected = true; } if (objectEvent == null) { foreach (IObjectEvent Event in obj.Events) { if (Event.NameSource.Name == ObjectEventSource.Name) { objectEvent = Event; break; } } if (objectEvent == null) { throw new ParsingException(136, ObjectEventSource.Source, $"Unknown event '{ObjectEventSource.Name}'."); } objectEvent.SetIsUsed(); IsConnected = true; } return(IsConnected); }
private void ConnectBefore(IDomain domain, IComponentEvent beforeEvent) { if (beforeEvent != null) { IObject Object = null; IObjectEvent ObjectEvent = null; beforeEvent.Connect(domain, ref Object, ref ObjectEvent); BeforeObject = Object; BeforeObjectEvent = ObjectEvent; } else { BeforeObject = null; BeforeObjectEvent = null; } }
private void ConnectAfter(IDomain domain, IComponentEvent afterEvent) { if (afterEvent != null) { IObject Object = null; IObjectEvent ObjectEvent = null; afterEvent.Connect(domain, ref Object, ref ObjectEvent); AfterObject = Object; AfterObjectEvent = ObjectEvent; } else { AfterObject = null; AfterObjectEvent = null; } }
public void Add(DLLType dllType, Assembly assembly) { this.assemblies[dllType] = assembly; this.disposerEvents.Clear(); Type[] types = DllHelper.GetMonoTypes(); foreach (Type type in types) { object[] attrs = type.GetCustomAttributes(typeof(ObjectSystemAttribute), false); if (attrs.Length == 0) { continue; } object obj = Activator.CreateInstance(type); IObjectEvent objectEvent = obj as IObjectEvent; if (objectEvent == null) { Log.Error($"组件事件没有继承IObjectEvent: {type.Name}"); continue; } this.disposerEvents[objectEvent.Type()] = objectEvent; } allEvents.Clear(); foreach (Type type in types) { object[] attrs = type.GetCustomAttributes(typeof(EventAttribute), false); foreach (object attr in attrs) { EventAttribute aEventAttribute = (EventAttribute)attr; object obj = Activator.CreateInstance(type); if (!this.allEvents.ContainsKey((EventIdType)aEventAttribute.Type)) { this.allEvents.Add((EventIdType)aEventAttribute.Type, new List <object>()); } this.allEvents[(EventIdType)aEventAttribute.Type].Add(obj); } } this.Load(); }
public ObjectEvents() { Type[] types = DllHelper.GetHotfixTypes(); foreach (Type type in types) { object[] attrs = type.GetCustomAttributes(typeof(ObjectEventAttribute), false); if (attrs.Length == 0) { continue; } object obj = Activator.CreateInstance(type); IObjectEvent objectEvent = obj as IObjectEvent; if (objectEvent == null) { Log.Error($"组件事件没有继承IObjectEvent: {type.Name}"); continue; } this.disposerEvents[objectEvent.Type()] = objectEvent; } }
private List <IObjectEvent> ParseEvents(IParsingSourceStream sourceStream, ref string line) { List <IObjectEvent> ObjectEventList = new List <IObjectEvent>(); if (line != "events") { sourceStream.ReadLine(); string HeaderLine = sourceStream.Line; if (HeaderLine != "events") { throw new ParsingException(105, sourceStream, "'events' expected."); } } while (!sourceStream.EndOfStream) { sourceStream.ReadLine(); line = sourceStream.Line.Trim(); if (string.IsNullOrEmpty(line)) { break; } foreach (IObjectEvent ObjectEvent in ObjectEventList) { if (ObjectEvent.NameSource.Name == line) { throw new ParsingException(106, sourceStream, $"Event name '{line}' specified more than once."); } } IObjectEvent NewEvent = ParseEvent(sourceStream, line); ObjectEventList.Add(NewEvent); } return(ObjectEventList); }
public GeneratorObjectEvent(IObjectEvent eventObject) { NameSource = eventObject.NameSource; CSharpName = eventObject.CSharpName; IsProvidingCustomPageName = eventObject.IsProvidingCustomPageName.HasValue && eventObject.IsProvidingCustomPageName.Value; }