using LitJson; using System.Collections.Generic; using System; using UnityEngine; namespace KTGMGemClient { public class GameUtils { public static int[] GetIntArray(JsonData jsData) { int[] tmp = new int[jsData.Count]; for (int i = 0; i < jsData.Count; i++) { tmp[i] = int.Parse(jsData[i].ToString()); } return tmp; } public static List GetIntList(JsonData jsData) { List tmp = new List(); for (int i = 0; i < jsData.Count; i++) { tmp.Add(int.Parse(jsData[i].ToString())); } return tmp; } public static List GetFloatList(JsonData jsData) { List tmp = new List(); for (int i = 0; i GetStringList(JsonData jsData) { List tmp = new List(); for (int i = 0; i < jsData.Count; i++) { tmp.Add(jsData[i].ToString()); } return tmp; } public static reward GetReward(JsonData jsData) { reward rd = new reward(); string[] strlist = jsData.ToString().Split(':'); switch (strlist[0]) { case "money": rd.type = Protobuf.CURRENCY.Money; rd.count = int.Parse(strlist[1]); break; case "gold": rd.type = Protobuf.CURRENCY.Gold; rd.count = int.Parse(strlist[1]); break; case "rmb": rd.type = Protobuf.CURRENCY.Rmb; rd.count = int.Parse(strlist[1]); break; case "gem": rd.type = Protobuf.CURRENCY.Gem; rd.id = int.Parse(strlist[1]); rd.count = int.Parse(strlist[2]); break; case "box": rd.type = Protobuf.CURRENCY.Box; rd.id = int.Parse(strlist[1]); rd.count = int.Parse(strlist[2]); break; } return rd; } public static List GetRewardList(JsonData jsData) { List tmp = new List(); for (int i = 0; i < jsData.Count; ++i) { reward rd = GetReward(jsData[i]); tmp.Add(rd); } return tmp; } /// /// 洗牌算法,费雪耶兹算法(Fisher-Yates) /// /// /// /// public static List Shuffle(List list) { System.Random rd = new System.Random(); for (int i = list.Count; i > 0; --i) { int random = rd.Next(0, i); T temp = list[i - 1]; list[i - 1] = list[random]; list[random] = temp; } return list; } } }