示例#1
0
        public static string Replace(this string template, Contexts contexts, MainEntity ent, string contextName,
                                     EventInfo eventInfo)
        {
            var eventListener = ent.EventListener(contexts, contextName, eventInfo);

            return(template
                   .Replace(contexts, ent, contextName)
                   .Replace("${EventListenerComponent}", eventListener.AddComponentSuffix())
                   .Replace("${Event}", ent.Event(contexts, contextName, eventInfo))
                   .Replace("${EventListener}", eventListener)
                   .Replace("${eventListener}", eventListener.LowercaseFirst(  ))
                   .Replace("${EventType}", ent.GetEventTypeSuffix(eventInfo)));
        }
示例#2
0
        private void CreateFileEnt(MainEntity ent, EventInfo eventInfo, string contextName)
        {
            var methodArgs = ent.GetEventMethodArgs(eventInfo, ", " + (!ent.hasPublicFieldsComp
                                ? ent.PrefixedComponentName(_contexts)
                                : GetMethodArgs(ent.publicFieldsComp.Values.ToArray( ))));

            var filePath = "Events" + Path.DirectorySeparatorChar + "Systems" + Path.DirectorySeparatorChar +
                           ent.Event(_contexts, contextName, eventInfo) + "EventSystem.cs";

            var template = eventInfo.EventTarget == EventTarget.Self
                                ? TEMPLATE_SELF
                                : TEMPLATE_ANY;

            var cachedAccess = !ent.hasPublicFieldsComp
                                ? string.Empty
                                : "var component = e." + ent.ComponentName(_contexts).LowercaseFirst( ) + ";";

            if (eventInfo.EventType == EventType.Removed)
            {
                methodArgs   = string.Empty;
                cachedAccess = string.Empty;
            }

            var contents = template
                           .Replace("${GroupEvent}", eventInfo.EventType.ToString( ))
                           .Replace("${filter}", GetFilter(ent, contextName, eventInfo))
                           .Replace("${cachedAccess}", cachedAccess)
                           .Replace("${methodArgs}", methodArgs)
                           .Replace(_contexts, ent, contextName, eventInfo);

            var generatedBy = GetType( ).FullName;

            var fileEnt = _contexts.main.CreateEntity( );

            fileEnt.AddGeneratedFileComp(filePath, contents.WrapInNamespace(_contexts), generatedBy);
        }
示例#3
0
 public static string EventListener(this MainEntity ent, Contexts contexts, string contextName, EventInfo eventInfo)
 {
     return(ent.Event(contexts, contextName, eventInfo) + "Listener");
 }