Example #1
0
        public ILayerHandler GetLayerHandlerInstance(string key)
        {
            if (LayerHandlers.ContainsKey(key))
            {
                return(GetLayerHandlerInstance(LayerHandlers[key]));
            }


            return(null);
        }
Example #2
0
        /// <summary>
        /// Manually registers a layer. Only needed externally.
        /// </summary>
        public bool RegisterLayer <T>() where T : ILayerHandler
        {
            var t = typeof(T);

            if (LayerHandlers.ContainsKey(t))
            {
                return(false);
            }
            var meta = t.GetCustomAttribute <LayerHandlerMetaAttribute>() as LayerHandlerMetaAttribute;

            LayerHandlers.Add(t, new LayerHandlerMeta(t, meta));
            return(true);
        }
Example #3
0
        public bool RegisterLayerHandler(LayerHandlerEntry entry, bool @default = true)
        {
            if (LayerHandlers.ContainsKey(entry.Key) || DefaultLayerHandlers.Contains(entry.Key))
            {
                return(false);
            }

            LayerHandlers.Add(entry.Key, entry);

            if (@default)
            {
                DefaultLayerHandlers.Add(entry.Key);
            }

            return(true);
        }
Example #4
0
 public Type GetLayerHandlerType(string key)
 {
     return(LayerHandlers.ContainsKey(key) ? LayerHandlers[key].Type : null);
 }
Example #5
0
        public bool Initialize()
        {
            if (Initialized)
            {
                return(true);
            }

            processMonitor        = new ActiveProcessMonitor();
            runningProcessMonitor = new RunningProcessMonitor();

            // Register all Application types in the assembly
            var profileTypes = from type in Assembly.GetExecutingAssembly().GetTypes()
                               where type.BaseType == typeof(Application) && type != typeof(GenericApplication)
                               let inst = (Application)Activator.CreateInstance(type)
                                          orderby inst.Config.Name
                                          select inst;

            foreach (var inst in profileTypes)
            {
                RegisterEvent(inst);
            }

            // Register all layer types that are in the Aurora.Settings.Layers namespace.
            // Do not register all that are inside the assembly since some are application-specific (e.g. minecraft health layer)
            var layerTypes = from type in Assembly.GetExecutingAssembly().GetTypes()
                             where type.GetInterfaces().Contains(typeof(ILayerHandler))
                             let name                       = type.Name.CamelCaseToSpaceCase()
                                                   let meta = type.GetCustomAttribute <LayerHandlerMetaAttribute>()
                                                              where !type.IsGenericType
                                                              where meta == null || !meta.Exclude
                                                              select(type, meta);

            foreach (var(type, meta) in layerTypes)
            {
                LayerHandlers.Add(type, new LayerHandlerMeta(type, meta));
            }

            LoadSettings();

            LoadPlugins();

            if (Directory.Exists(AdditionalProfilesPath))
            {
                List <string> additionals = new List <string>(Directory.EnumerateDirectories(AdditionalProfilesPath));
                foreach (var dir in additionals)
                {
                    if (File.Exists(Path.Combine(dir, "settings.json")))
                    {
                        string proccess_name = Path.GetFileName(dir);
                        RegisterEvent(new GenericApplication(proccess_name));
                    }
                }
            }

            foreach (var profile in Events)
            {
                profile.Value.Initialize();
            }

            this.InitUpdate();

            // Listen for profile keybind triggers
            Global.InputEvents.KeyDown += CheckProfileKeybinds;

            Initialized = true;
            return(Initialized);
        }