using LitJson;
|
using System.Collections.Generic;
|
using System;
|
using UnityEngine;
|
|
namespace KTGMGemClient
|
{
|
public class GameUtils
|
{
|
private static int id { get; set; } = 0;
|
|
/// <summary>
|
/// 获取一个唯一id
|
/// </summary>
|
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<int> GetIntList(JsonData jsData)
|
{
|
List<int> tmp = new List<int>();
|
for (int i = 0; i < jsData.Count; i++)
|
{
|
tmp.Add(int.Parse(jsData[i].ToString()));
|
}
|
return tmp;
|
}
|
|
public static List<float> GetFloatList(JsonData jsData)
|
{
|
List<float> tmp = new List<float>();
|
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<string> GetStringList(JsonData jsData)
|
{
|
List<string> tmp = new List<string>();
|
|
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<reward> GetRewardList(JsonData jsData)
|
{
|
List<reward> tmp = new List<reward>();
|
|
for (int i = 0; i < jsData.Count; ++i)
|
{
|
reward rd = GetReward(jsData[i]);
|
tmp.Add(rd);
|
}
|
|
return tmp;
|
}
|
|
/// <summary>
|
/// 洗牌算法,费雪耶兹算法(Fisher-Yates)
|
/// </summary>
|
/// <param name="list"></param>
|
/// <typeparam name="T"></typeparam>
|
/// <returns></returns>
|
public static List<T> Shuffle<T>(List<T> 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;
|
}
|
}
|
}
|