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()));
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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
                       ));
        }
Exemplo n.º 5
0
        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());
 }