CodeGenFile generateInterface(ComponentData data)
        {
            var componentName = data.GetFullTypeName().ToComponentName(_ignoreNamespacesConfig.ignoreNamespaces);
            var memberData    = data.GetMemberData();
            var interfaceName = "I" + componentName.RemoveComponentSuffix();

            var template = memberData.Length == 0
                                     ? FLAG_INTERFACE_TEMPLATE
                                     : STANDARD_INTERFACE_TEMPLATE;

            var fileContent = template
                              .Replace("${InterfaceName}", interfaceName)
                              .Replace("${ComponentType}", data.GetFullTypeName())
                              .Replace("${ComponentName}", componentName)
                              .Replace("${componentName}", componentName.LowercaseFirst())
                              .Replace("${prefixedName}", data.GetCustomComponentPrefix().LowercaseFirst() + componentName)
                              .Replace("${memberArgs}", getMemberArgs(memberData));

            return(new CodeGenFile(
                       "Components" + Path.DirectorySeparatorChar +
                       "Interfaces" + Path.DirectorySeparatorChar +
                       interfaceName + ".cs",
                       fileContent,
                       GetType().FullName
                       ));
        }
        CodeGenFile generateExtension(string contextName, ComponentData data)
        {
            var componentName = data.GetFullTypeName().ToComponentName(_ignoreNamespacesConfig.ignoreNamespaces);
            var index         = contextName + ComponentsLookupGenerator.COMPONENTS_LOOKUP + "." + componentName;
            var memberData    = data.GetMemberData();
            var template      = memberData.Length == 0
                                      ? FLAG_COMPONENT_TEMPLATE
                                      : STANDARD_COMPONENT_TEMPLATE;

            var fileContent = template
                              .Replace("${ContextName}", contextName)
                              .Replace("${ComponentType}", data.GetFullTypeName())
                              .Replace("${ComponentName}", componentName)
                              .Replace("${componentName}", componentName.LowercaseFirst())
                              .Replace("${prefixedName}", data.GetUniquePrefix().LowercaseFirst() + componentName)
                              .Replace("${Index}", index)
                              .Replace("${memberArgs}", getMemberArgs(memberData))
                              .Replace("${memberAssignment}", getMemberAssignment(memberData));

            return(new CodeGenFile(
                       contextName + Path.DirectorySeparatorChar +
                       "Components" + Path.DirectorySeparatorChar +
                       contextName + componentName.AddComponentSuffix() + ".cs",
                       fileContent,
                       GetType().FullName
                       ));
        }
Beispiel #3
0
        CodeGenFile generateExtension(string contextName, ComponentData data)
        {
            var memberData    = data.GetMemberData();
            var componentName = data.GetFullTypeName().ToComponentName(_ignoreNamespacesConfig.ignoreNamespaces);
            var template      = memberData.Length == 0
                                      ? FLAG_COMPONENT_TEMPLATE
                                      : SA_COMPONENT_TEMPLATE;

            var fileContent = template
                              .Replace("${ContextName}", contextName)
                              .Replace("${ComponentType}", data.GetFullTypeName())
                              .Replace("${ComponentName}", componentName)
                              .Replace("${componentName}", componentName.LowercaseFirst())
                              .Replace("${prefixedComponentName}", data.GetCustomComponentPrefix().LowercaseFirst() + componentName)
                              .Replace("${memberArgs}", getMemberArgs(memberData))
                              .Replace("${methodArgs}", getMethodArgs(memberData));

            return(new CodeGenFile(
                       contextName + Path.DirectorySeparatorChar +
                       "Components" + Path.DirectorySeparatorChar +
                       contextName + componentName.AddComponentSuffix() + ".cs",
                       fileContent,
                       GetType().FullName
                       ));
        }
        CodeGenFile generateComponentMonoBehaviousClass(string contextName, ComponentData data)
        {
            MemberData[] memberData    = (MemberData[])data["component_memberInfos"];
            var          componentType = data.GetFullTypeName().ShortTypeName();

            return(new CodeGenFile(
                       contextName + Path.DirectorySeparatorChar + "ComponentsMonoBehaviours" + Path.DirectorySeparatorChar + contextName + componentType + "MonoBehaviour.cs",
                       COMPONENT_TEMPLATE
                       .Replace("${Context}", contextName)
                       .Replace("${ComponentType}", componentType)
                       .Replace("${memberArgs}", getMemberArgs(memberData))
                       .Replace("${memberAssignment}", getMemberAssignment(memberData)),
                       GetType().FullName
                       ));
        }
        CodeGenFile generateEntityInterfaceExtension(string contextName, ComponentData data)
        {
            var componentName = data.GetFullTypeName().ToComponentName(_ignoreNamespacesConfig.ignoreNamespaces);
            var interfaceName = "I" + componentName.RemoveComponentSuffix();

            var fileContent = ENTITY_INTERFACE_EXTENSION
                              .Replace("${InterfaceName}", "I" + componentName.RemoveComponentSuffix())
                              .Replace("${ContextName}", contextName);

            return(new CodeGenFile(
                       contextName + Path.DirectorySeparatorChar +
                       "Components" + Path.DirectorySeparatorChar +
                       contextName + componentName.AddComponentSuffix() + ".cs",
                       fileContent,
                       GetType().FullName
                       ));
        }
        CodeGenFile generateMatcher(string contextName, ComponentData data)
        {
            var componentName  = data.GetFullTypeName().ToComponentName(_ignoreNamespacesConfig.ignoreNamespaces);
            var index          = contextName + ComponentsLookupGenerator.COMPONENTS_LOOKUP + "." + componentName;
            var componentNames = contextName + ComponentsLookupGenerator.COMPONENTS_LOOKUP + ".componentNames";

            var fileContent = STANDARD_COMPONENT_TEMPLATE
                              .Replace("${ContextName}", contextName)
                              .Replace("${ComponentName}", componentName)
                              .Replace("${Index}", index)
                              .Replace("${ComponentNames}", componentNames);

            return(new CodeGenFile(
                       contextName + Path.DirectorySeparatorChar +
                       "Components" + Path.DirectorySeparatorChar +
                       contextName + componentName.AddComponentSuffix() + ".cs",
                       fileContent,
                       GetType().FullName
                       ));
        }
Beispiel #7
0
        CodeGenFile generateComponentClass(ComponentData data)
        {
            var fullComponentName = data.GetFullTypeName().RemoveDots();
            var contexts          = string.Join(", ", data.GetContextNames());
            var unique            = data.IsUnique() ? "[Entitas.CodeGeneration.Attributes.UniqueAttribute]" : string.Empty;

            if (!string.IsNullOrEmpty(contexts))
            {
                contexts = "[" + contexts + "]";
            }

            return(new CodeGenFile(
                       "Components" + Path.DirectorySeparatorChar + fullComponentName + ".cs",
                       COMPONENT_TEMPLATE
                       .Replace("${FullComponentName}", fullComponentName)
                       .Replace("${Type}", data.GetObjectType())
                       .Replace("${Contexts}", contexts)
                       .Replace("${Unique}", unique),
                       GetType().FullName
                       ));
        }