Ejemplo n.º 1
0
        static void InjectAttributeConfigVars()
        {
            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
            {
                foreach (var _class in assembly.GetTypes())
                {
                    if (!_class.IsClass)
                    {
                        continue;
                    }
                    foreach (var field in _class.GetFields(System.Reflection.BindingFlags.Instance |
                                                           System.Reflection.BindingFlags.Static |
                                                           System.Reflection.BindingFlags.NonPublic |
                                                           System.Reflection.BindingFlags.Public))
                    {
                        if (!field.IsDefined(typeof(ConfigVarAttribute), false))
                        {
                            continue;
                        }
                        if (!field.IsStatic)
                        {
                            GameDebug.LogError("Cannot use ConfigVar attribute on non-static fields");
                            continue;
                        }

                        if (field.FieldType != typeof(ConfigVar))
                        {
                            GameDebug.LogError("Cannot use ConfigVar attribute on fields not of type ConfigVar");
                            continue;
                        }

                        var attr = field.GetCustomAttributes(typeof(ConfigVarAttribute),
                                                             false)[0] as ConfigVarAttribute;
                        var name = attr.Name != null ? attr.Name : _class.Name.ToLower() + "." + field.Name.ToLower();
                        var cvar = field.GetValue(null) as ConfigVar;
                        if (cvar != null)
                        {
                            GameDebug.LogError("ConfigVars (" + name +
                                               ") should not be initialized from code; just marked with attribute");
                            continue;
                        }

                        cvar = new ConfigVar(name, attr.Description, attr.DefaultValue, attr.Flags);
                        cvar.ResetToDefault();
                        RegisterConfigVar(cvar);
                        field.SetValue(null, cvar);
                    }
                }
            }

            // Clear dirty flags as default values shouldn't count as dirtying
            DirtyFlags = Flags.None;
        }
Ejemplo n.º 2
0
        public static void RegisterConfigVar(ConfigVar cvar)
        {
            if (ConfigVars.ContainsKey(cvar.name))
            {
                GameDebug.LogError("Trying to register cvar " + cvar.name + " twice");
                return;
            }

            if (!validateNameRe.IsMatch(cvar.name))
            {
                GameDebug.LogError("Trying to register cvar with invalid name: " + cvar.name);
                return;
            }

            ConfigVars.Add(cvar.name, cvar);
        }