private CodeGenFile[] Generate(string contextName, ComponentData data) { return(data.GetEventData() .Select( eventData => { var memberData = data.GetMemberData(); if (memberData.Length == 0) { memberData = new[] { new MemberData(typeof(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()); }
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()); }
private 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.ComponentNameValidUppercaseFirst() + ";"; 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()); }
private ComponentData[] CreateDataForEvents(ComponentData data) { return(data.GetContextNames() .SelectMany( contextName => data.GetEventData() .Select( eventData => { var dataForEvent = new ComponentData(data); dataForEvent.IsEvent(false); dataForEvent.IsUnique(false); dataForEvent.ShouldGenerateComponent(false); dataForEvent.RemoveCleanupData(); var eventComponentName = data.EventComponentName(eventData); var eventTypeSuffix = eventData.GetEventTypeSuffix(); var optionalContextName = dataForEvent.GetContextNames().Length > 1 ? contextName : string.Empty; var listenerComponentName = optionalContextName + eventComponentName + eventTypeSuffix.AddListenerSuffix(); dataForEvent.SetTypeName(listenerComponentName.AddComponentSuffix()); dataForEvent.SetMemberData( new[] { new MemberData( "System.Collections.Generic.List<I" + listenerComponentName + ">", "value") }); dataForEvent.SetContextNames( new[] { contextName }); return dataForEvent; }) .ToArray()) .ToArray()); }