Beispiel #1
0
        public static void Sort(Variant data, List <Variant> keys = null, List <Variant> options = null)
        {
            bool flag = keys == null;

            if (flag)
            {
                data._arr.Sort();
            }
            else
            {
                data._arr.Sort((Variant left, Variant right) => GameTools.sortConparison(left, right, keys, options));
            }
        }
Beispiel #2
0
        private static int sortConparison(Variant left, Variant right, List <Variant> keys, List <Variant> opts)
        {
            int  num  = 0;
            bool flag = keys != null && keys.Count > 0;

            if (flag)
            {
                int  num2  = -1;
                bool flag2 = left.ContainsKey(keys[0]._str) && right.ContainsKey(keys[0]._str);
                if (flag2)
                {
                    bool flag3 = left[keys[0]].isStr && !int.TryParse(left[keys[0]]._str, out num2);
                    if (flag3)
                    {
                        num = left[keys[0]]._str.CompareTo(right[keys[0]]);
                    }
                    else
                    {
                        bool flag4 = left[keys[0]] > right[keys[0]];
                        if (flag4)
                        {
                            num = 1;
                        }
                        else
                        {
                            bool flag5 = left[keys[0]] == right[keys[0]];
                            if (flag5)
                            {
                                num = 0;
                            }
                            else
                            {
                                num = -1;
                            }
                        }
                    }
                }
                else
                {
                    bool flag6 = !left.ContainsKey(keys[0]._str) && !right.ContainsKey(keys[0]._str);
                    if (flag6)
                    {
                        num = 0;
                    }
                    bool flag7 = !left.ContainsKey(keys[0]._str);
                    if (flag7)
                    {
                        num = -1;
                    }
                    bool flag8 = !right.ContainsKey(keys[0]._str);
                    if (flag8)
                    {
                        num = 1;
                    }
                }
                bool flag9 = num == 0;
                if (flag9)
                {
                    List <Variant> opts2  = null;
                    bool           flag10 = opts != null && opts.Count > 1;
                    if (flag10)
                    {
                        opts2 = opts.GetRange(1, opts.Count - 1);
                    }
                    num = GameTools.sortConparison(left, right, keys.GetRange(1, keys.Count - 1), opts2);
                }
            }
            bool flag11 = opts != null && opts.Count > 0;

            if (flag11)
            {
                uint @uint = opts[0]._uint;
                if (@uint == 2u)
                {
                    num = -num;
                }
            }
            return(num);
        }