public static string Replace(this string template, ComponentData data, string contextName, EventData eventData) { var eventListener = data.EventListener(contextName, eventData); var lowerEventListener = data.GetContextNames().Length > 1 ? contextName.LowercaseFirst() + data.ComponentName() + GetEventTypeSuffix(eventData).AddListenerSuffix() : data.ComponentName().LowercaseFirst() + GetEventTypeSuffix(eventData).AddListenerSuffix(); return(template .Replace(data, contextName) .Replace("${EventListenerComponent}", eventListener.AddComponentSuffix()) .Replace("${Event}", data.Event(contextName, eventData)) .Replace("${EventListener}", eventListener) .Replace("${eventListener}", lowerEventListener) .Replace("${EventType}", GetEventTypeSuffix(eventData))); }
public static string Replace(this string template, ComponentData data, string contextName) { return(template .Replace(contextName) .Replace("${ComponentType}", data.GetTypeName()) .Replace("${ComponentName}", data.ComponentName()) .Replace("${componentName}", data.ComponentName().LowercaseFirst()) .Replace("${validComponentName}", data.ComponentNameValidLowercaseFirst()) .Replace("${prefixedComponentName}", data.PrefixedComponentName()) .Replace("${newMethodParameters}", GetMethodParameters(data.GetMemberData(), true)) .Replace("${methodParameters}", GetMethodParameters(data.GetMemberData(), false)) .Replace("${newMethodArgs}", GetMethodArgs(data.GetMemberData(), true)) .Replace("${methodArgs}", GetMethodArgs(data.GetMemberData(), false)) .Replace("${Index}", contextName + LOOKUP + "." + data.ComponentName())); }
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); }
CodeGenFile generateInterface(ComponentData data) { var template = data.GetMemberData().Length == 0 ? FLAG_TEMPLATE : STANDARD_TEMPLATE; return(new CodeGenFile( "Components" + Path.DirectorySeparatorChar + "Interfaces" + Path.DirectorySeparatorChar + "I" + data.ComponentName() + "Entity.cs", template.Replace(data, string.Empty), GetType().FullName )); }
CodeGenFile[] generate(string contextName, ComponentData data) { return(data.GetEventData() .Select(eventData => { var methodArgs = data.GetEventMethodArgs(eventData, ", " + (data.GetMemberData().Length == 0 ? data.PrefixedComponentName() : getMethodArgs(data.GetMemberData()))); var cachedAccess = data.GetMemberData().Length == 0 ? string.Empty : "var component = e." + data.ComponentName().LowercaseFirst() + ";"; if (eventData.eventType == EventType.Removed) { methodArgs = string.Empty; cachedAccess = string.Empty; } var template = eventData.eventTarget == EventTarget.Self ? SELF_TARGET_TEMPLATE : ANY_TARGET_TEMPLATE; var fileContent = template .Replace("${GroupEvent}", eventData.eventType.ToString()) .Replace("${filter}", getFilter(data, contextName, eventData)) .Replace("${cachedAccess}", cachedAccess) .Replace("${methodArgs}", methodArgs) .Replace(data, contextName, eventData); return new CodeGenFile( "Events" + Path.DirectorySeparatorChar + "Systems" + Path.DirectorySeparatorChar + data.Event(contextName, eventData) + "EventSystem.cs", fileContent, GetType().FullName ); }).ToArray()); }
public static string Event(this ComponentData data, string contextName, EventData eventData) { var optionalContextName = data.GetContextNames().Length > 1 ? contextName : string.Empty; return(optionalContextName + data.ComponentName() + GetEventTypeSuffix(eventData)); }
public static string PrefixedComponentName(this ComponentData data) { return(data.GetFlagPrefix().LowercaseFirst() + data.ComponentName()); }
public static string ComponentNameWithContext(this ComponentData data, string contextName) { return(contextName + data.ComponentName()); }