コード例 #1
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static string GetString(Container.Item item)
 {
     if (item.Is <string>())
     {
         return(item.GetValue <string>());
     }
     if (item.Is <int>())
     {
         return(item.GetValue <int>().ToString());
     }
     if (item.Is <float>())
     {
         return(item.GetValue <float>().ToString());
     }
     if (item.Is <bool>())
     {
         return(item.GetValue <bool>().ToString());
     }
     if (item.Is <KeyCode>())
     {
         return(item.GetValue <KeyCode>().ToString());
     }
     if (item.IsArray)
     {
         var s = new List <string>();
         foreach (var i in (item as Container.ItemArray).items)
         {
             s.Add(GetString(i));
         }
         return(System.String.Join(",", s));
     }
     return(ZeroValueOf <string>());
 }
コード例 #2
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static bool GetArrayEnumOfType <T>(Container.Item item, out T[] array) where T : struct
 {
     if (item.IsArray)
     {
         var arraySrc = (item as Container.ItemArray);
         var arrayRes = new List <T>();
         for (int i = 0; i < arraySrc.items.Length; i++)
         {
             T res;
             if (GetEnumOfType <T>(arraySrc.items[i], out res))
             {
                 arrayRes.Add(res);
             }
         }
         array = arrayRes.ToArray();
         return(true);
     }
     else
     {
         T res;
         if (GetEnumOfType <T>(item, out res))
         {
             array = new T[1] {
                 res
             };
             return(true);
         }
     }
     array = new T[0];
     return(false);
 }
コード例 #3
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static bool GetEnumOfType <T>(Container.Item item, out T res) where T : struct
 {
     if (item.Is <string>())
     {
         if (System.Enum.TryParse <T>(item.GetValue <string>(), out res))
         {
             return(true);
         }
     }
     res = (T)(object)0;
     return(false);
 }
コード例 #4
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static KeyCode[] GetArrayKeyCode(Container.Item item)
 {
     if (item.IsArray)
     {
         var arraySrc = (item as Container.ItemArray);
         var arrayRes = new KeyCode[arraySrc.items.Length];
         for (int i = 0; i < arraySrc.items.Length; i++)
         {
             arrayRes[i] = GetKeyCode(arraySrc.items[i]);
         }
         return(arrayRes);
     }
     return(ZeroValueOf <KeyCode[]>());
 }
コード例 #5
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static bool[] GetArrayBool(Container.Item item)
 {
     if (item.IsArray)
     {
         var arraySrc = (item as Container.ItemArray);
         var arrayRes = new bool[arraySrc.items.Length];
         for (int i = 0; i < arraySrc.items.Length; i++)
         {
             arrayRes[i] = GetBool(arraySrc.items[i]);
         }
         return(arrayRes);
     }
     return(ZeroValueOf <bool[]>());
 }
コード例 #6
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static float[] GetArrayFloat(Container.Item item)
 {
     if (item.IsArray)
     {
         var arraySrc = (item as Container.ItemArray);
         var arrayRes = new float[arraySrc.items.Length];
         for (int i = 0; i < arraySrc.items.Length; i++)
         {
             arrayRes[i] = GetFloat(arraySrc.items[i]);
         }
         return(arrayRes);
     }
     return(ZeroValueOf <float[]>());
 }
コード例 #7
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static string[] GetArrayString(Container.Item item)
 {
     if (item.IsArray)
     {
         var arraySrc = (item as Container.ItemArray);
         var arrayRes = new string[arraySrc.items.Length];
         for (int i = 0; i < arraySrc.items.Length; i++)
         {
             arrayRes[i] = GetString(arraySrc.items[i]);
         }
         return(arrayRes);
     }
     return(ZeroValueOf <string[]>());
 }
コード例 #8
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
        static Color GetColor(Container.Item item)
        {
            Color color = ZeroValueOf <Color>();

            if (item.Is <string>())
            {
                string c_ = "#" + item.GetValue <string>();
                if (ColorUtility.TryParseHtmlString(c_, out color))
                {
                    return(color);
                }
            }
            return(color);
        }
コード例 #9
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static T GetValueOf <T>(Container.Item item)
 {
     if (typeof(T) == typeof(int))
     {
         return((T)System.Convert.ChangeType(GetInt(item), typeof(T)));
     }
     else if (typeof(T) == typeof(float))
     {
         return((T)System.Convert.ChangeType(GetFloat(item), typeof(T)));
     }
     else if (typeof(T) == typeof(string))
     {
         return((T)System.Convert.ChangeType(GetString(item), typeof(T)));
     }
     else if (typeof(T) == typeof(Color))
     {
         return((T)System.Convert.ChangeType(GetColor(item), typeof(T)));
     }
     else if (typeof(T) == typeof(bool))
     {
         return((T)System.Convert.ChangeType(GetBool(item), typeof(T)));
     }
     else if (typeof(T) == typeof(KeyCode))
     {
         return((T)System.Convert.ChangeType(GetKeyCode(item), typeof(T)));
     }
     else if (typeof(T) == typeof(int[]))
     {
         return((T)System.Convert.ChangeType(GetArrayInt(item), typeof(T)));
     }
     else if (typeof(T) == typeof(float[]))
     {
         return((T)System.Convert.ChangeType(GetArrayFloat(item), typeof(T)));
     }
     else if (typeof(T) == typeof(string[]))
     {
         return((T)System.Convert.ChangeType(GetArrayString(item), typeof(T)));
     }
     else if (typeof(T) == typeof(bool[]))
     {
         return((T)System.Convert.ChangeType(GetArrayBool(item), typeof(T)));
     }
     else if (typeof(T) == typeof(KeyCode[]))
     {
         return((T)System.Convert.ChangeType(GetArrayKeyCode(item), typeof(T)));
     }
     return((T)System.Convert.ChangeType(GetString(item), typeof(T)));
 }
コード例 #10
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static KeyCode GetKeyCode(Container.Item item)
 {
     if (item.Is <KeyCode>())
     {
         return(item.GetValue <KeyCode>());
     }
     if (item.Is <string>())
     {
         KeyCode _keyCode;
         if (System.Enum.TryParse(item.GetValue <string>(), out _keyCode))
         {
             return(_keyCode);
         }
     }
     return(ZeroValueOf <KeyCode>());
 }
コード例 #11
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static T[] GetArrayOf <T>(Container.Item item)
 {
     if (item.IsArray)
     {
         var arraySrc = (item as Container.ItemArray);
         var arrayRes = new T[arraySrc.items.Length];
         for (int i = 0; i < arraySrc.items.Length; i++)
         {
             arrayRes[i] = GetValueOf <T>(arraySrc.items[i]);
         }
         return(arrayRes);
     }
     return(new T[1] {
         GetValueOf <T>(item)
     });
 }
コード例 #12
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static float GetFloat(Container.Item item)
 {
     if (item.Is <float>())
     {
         return(item.GetValue <float>());
     }
     if (item.Is <int>())
     {
         return((float)item.GetValue <int>());
     }
     if (item.Is <string>())
     {
         float _float;
         if (float.TryParse(item.GetValue <string>(), out _float))
         {
             return(_float);
         }
     }
     return(ZeroValueOf <float>());
 }
コード例 #13
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static int GetInt(Container.Item item)
 {
     if (item.Is <int>())
     {
         return(item.GetValue <int>());
     }
     if (item.Is <float>())
     {
         return(Mathf.RoundToInt(item.GetValue <float>()));
     }
     if (item.Is <string>())
     {
         int _int;
         if (int.TryParse(item.GetValue <string>(), out _int))
         {
             return(_int);
         }
     }
     return(ZeroValueOf <int>());
 }
コード例 #14
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
 static bool GetBool(Container.Item item)
 {
     if (item.Is <bool>())
     {
         return(item.GetValue <bool>());
     }
     if (item.Is <string>())
     {
         bool _bool;
         if (TryParseBool(item.GetValue <string>(), out _bool))
         {
             return(_bool);
         }
     }
     if (item.Is <int>())
     {
         return(TryParseBool(item.GetValue <int>()));
     }
     if (item.Is <float>())
     {
         return(TryParseBool(item.GetValue <float>()));
     }
     return(ZeroValueOf <bool>());
 }
コード例 #15
0
ファイル: CFG.cs プロジェクト: ismslv/Unity_CFG
        static T GetRandomFromArrayOf <T>(Container.Item item)
        {
            var array = GetArrayOf <T>(item);

            return(array[Random.Range(0, array.Length)]);
        }