private string GetFilter(ComponentData data, string contextName, EventData eventData) { var filter = string.Empty; if (data.GetMemberData().Length == 0) { switch (eventData.eventType) { case EventType.Added: filter = "entity." + data.PrefixedComponentName(); break; case EventType.Removed: filter = "!entity." + data.PrefixedComponentName(); break; } } else { switch (eventData.eventType) { case EventType.Added: filter = "entity.has" + data.ComponentName(); break; case EventType.Removed: filter = "!entity.has" + data.ComponentName(); break; } } if (eventData.eventTarget == EventTarget.Self) { filter += " && entity.has" + data.EventListener(contextName, eventData); } return filter; }
private CodeGenFile[] Generate(string contextName, ComponentData data) { return(data.GetEventData() .Select( eventData => { var memberData = data.GetMemberData(); if (memberData.Length == 0) { memberData = new[] { new MemberData("bool", data.PrefixedComponentName()) }; } var fileContent = TEMPLATE .Replace( "${methodParameters}", data.GetEventMethodArgs(eventData, ", " + memberData.GetMethodParameters(false))) .Replace(data, contextName, eventData); return new CodeGenFile( "Events" + Path.DirectorySeparatorChar + "Interfaces" + Path.DirectorySeparatorChar + "I" + data.EventListener(contextName, eventData) + ".cs", fileContent, GetType().FullName); }) .ToArray()); }
public static string Replace(this string template, ComponentData data, string contextName, EventData eventData) { var eventListener = data.EventListener(contextName, eventData); return(template .Replace(data, contextName) .Replace("${EventComponentName}", data.EventComponentName(eventData)) .Replace("${EventListenerComponent}", eventListener.AddComponentSuffix()) .Replace("${Event}", data.Event(contextName, eventData)) .Replace("${EventListener}", eventListener) .Replace("${eventListener}", eventListener.UppercaseFirst()) .Replace("${EventType}", GetEventTypeSuffix(eventData))); }
private CodeGenFile[] Generate(string contextName, ComponentData data) { return(data.GetEventData() .Select( eventData => new CodeGenFile( "Events" + Path.DirectorySeparatorChar + "Components" + Path.DirectorySeparatorChar + data.EventListener(contextName, eventData).AddComponentSuffix() + ".cs", TEMPLATE.Replace(data, contextName, eventData), GetType().FullName)) .ToArray()); }