/// <summary> /// 比较 /// </summary> /// <param name="data"></param> /// <returns></returns> public static List <Hashtable> Comparison(List <Hashtable> maJiangList) { int sort = 1; List <Hashtable> listSingle = new List <Hashtable>(); List <Hashtable> listPairs = new List <Hashtable>(); foreach (var item in maJiangList) { Hashtable maJiang = new Hashtable(); maJiang["First"] = item["First"]; maJiang["Second"] = item["Second"]; if (Convert.ToInt32(item["First"]) == Convert.ToInt32(item["Second"])) { maJiang.Add("Pairs", true); listPairs.Add(maJiang); } else { Hashtable newcard = SingleCompute(maJiang); listSingle.Add(newcard); } } if (pc == null) { pc = Instantiate(MaJiangComparer.GetInstance()); } //对子排序 listPairs.Sort(pc); //listPairs.Reverse(); //单牌排序 listSingle.Sort(pc); //listSingle.Reverse(); List <Hashtable> resultList = new List <Hashtable>(); foreach (var item in listPairs) { resultList.Add(item); } foreach (var item in listSingle) { resultList.Add(item); } //添加编号 for (int i = 0; i < resultList.Count; i++) { //对子比较,当前的与上一副牌比 if (Convert.ToBoolean(resultList[i]["Pairs"]) && i > 0 && Convert.ToInt32(resultList[i]["First"]) != Convert.ToInt32(resultList[i - 1]["First"])) { sort++; resultList[i].Add("Sorting", sort); } else if (i > 0 && Convert.ToInt32(resultList[i]["Point"]) != Convert.ToInt32(resultList[i - 1]["Point"])) { //筒子点数大的加1 sort++; resultList[i].Add("Sorting", sort); } else if (i > 0) { //筒子相同点数,比最大 int value1 = 0, value2 = 0; if (Convert.ToInt32(resultList[i]["First"]) >= Convert.ToInt32(resultList[i]["Second"])) { value1 = Convert.ToInt32(resultList[i]["First"]); } else { value1 = Convert.ToInt32(resultList[i]["Second"]); } if (Convert.ToInt32(resultList[i - 1]["First"]) >= Convert.ToInt32(resultList[i - 1]["Second"])) { value2 = Convert.ToInt32(resultList[i - 1]["First"]); } else { value2 = Convert.ToInt32(resultList[i - 1]["Second"]); } if (value1 > value2) { sort++; resultList[i].Add("Sorting", sort); } else { resultList[i].Add("Sorting", sort); } } else { resultList[i].Add("Sorting", sort); } } //返回结果 return(listPairs.Concat(listSingle).ToList <Hashtable>()); }
void Awake() { instance = this; }