コード例 #1
0
        private static void Register(CCommand cmd)
        {
            if (ccwrapperMap.ContainsKey(cmd.Name))
            {
                // duplicate name
                Debug.LogWarning($"duplicate cvar or ccmd name: {cmd.Name}");
                return;
            }
            var wrapper = new CCWrapper()
            {
                type = CCWrapper.WrappedType.CCmd,
                cmd  = cmd,
            };

            ccwrapperMap[wrapper.Name] = wrapper;
            ccwrapperList.Add(wrapper);
        }
コード例 #2
0
 static void Init()
 {
     foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
     {
         foreach (var _class in assembly.GetTypes())
         {
             if (!_class.IsClass)
             {
                 continue;
             }
             foreach (var field in _class.GetFields(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public))
             {
                 if (!field.IsDefined(typeof(CVarAttribute), false))
                 {
                     continue;
                 }
                 if (field.FieldType == typeof(int) || field.FieldType == typeof(float))
                 {
                     var attr = field.GetCustomAttribute <CVarAttribute>(false);
                     var name = attr.Name != null ? attr.Name : _class.Name.ToLower() + "." + field.Name.ToLower();
                     var cvar = new CVariable(name, field, attr.Description);
                     Register(cvar);
                 }
             }
             foreach (var method in _class.GetMethods(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public))
             {
                 if (!method.IsDefined(typeof(CCmdAttribute), false))
                 {
                     continue;
                 }
                 var attr = method.GetCustomAttribute <CCmdAttribute>(false);
                 var cmd  = new CCommand(attr.Name, method, attr.Description);
                 Register(cmd);
             }
         }
     }
     ccwrapperList.Sort((a, b) => {
         return(a.Name.CompareTo(b.Name));
     });
 }