using LitJson;
using System.Collections.Generic;
namespace KTGMGemClient
{
public class GameUtils
{
private static int id { get; set; } = 1;
///
/// 获取一个唯一id
///
public static int GetId()
{
return id++;
}
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 < jsData.Count; i++)
{
tmp.Add(float.Parse(jsData[i].ToString()));
}
return tmp;
}
public static string GetString(string s)
{
if (string.IsNullOrEmpty(s))
{
return "0";
}
else
{
return s;
}
}
public static List 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;
case "coin":
//rd.type = Protobuf.CURRENCY.Coin;
rd.count = int.Parse(strlist[1]);
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;
}
}
}