using System.Collections.Generic; using UnityEngine; using System; namespace GFGGame { public class SuitUtil { public static int GetSuitScore(int suitID) { int score = 0; SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitID); int[] items = suitCfg.partsArr; foreach (int itemId in items) { //int itemType = ItemUtilCS.GetItemSubType(itemId); //if (itemType != ConstDressUpItemType.FEN_WEI && itemType != ConstDressUpItemType.BEI_JING //&& itemType != ConstDressUpItemType.HUAN_JING && itemType != ConstDressUpItemType.QIAN_JING && itemType != ConstDressUpItemType.BEI_SHI) if (!DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(itemId)) { score += ItemDataManager.GetItemAdditionScore(itemId, InstanceZonesDataManager.currentScoreType, InstanceZonesDataManager.currentFightTags); } } return score; } public static int GetTeaPartySuitScore(int suitID) { int score = 0; SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitID); var items = suitCfg.tagsArr; foreach (var info in items) { score += Convert.ToInt32(info[1]); } return score; } public static List SortSuitListByHighScore(List arrayList) { arrayList.Sort((int a, int b) => { int scoreA = GetSuitScore(a); int scoreB = GetSuitScore(b); if (scoreB > scoreA) { return 1; } else if (scoreB < scoreA) { return -1; } return 0; }); return arrayList; } public static List SortTeaPartySuitByHighScore(List arrayList) { arrayList.Sort((int a, int b) => { int scoreA = GetTeaPartySuitScore(a); int scoreB = GetTeaPartySuitScore(b); if (scoreB > scoreA) { return 1; } else if (scoreB < scoreA) { return -1; } return 0; }); return arrayList; } public static List SortSuitListByLowScore(List arrayList) { arrayList.Sort((int a, int b) => { int scoreA = GetSuitScore(a); int scoreB = GetSuitScore(b); if (scoreB < scoreA) { return 1; } else if (scoreB > scoreA) { return -1; } return 0; }); return arrayList; } public static List SortTeaPartySuitByLowScore(List arrayList) { arrayList.Sort((int a, int b) => { int scoreA = GetTeaPartySuitScore(a); int scoreB = GetTeaPartySuitScore(b); if (scoreB < scoreA) { return 1; } else if (scoreB > scoreA) { return -1; } return 0; }); return arrayList; } public static List SortSuitListByDefaultPriority(List arrayList) { arrayList.Sort((int a, int b) => { SuitCfg suitCfgA = SuitCfgArray.Instance.GetCfg(a); SuitCfg suitCfgB = SuitCfgArray.Instance.GetCfg(b); int statusA = DressUpMenuSuitDataManager.GetSuitGuideBonusStatus(suitCfgA.id); int statusB = DressUpMenuSuitDataManager.GetSuitGuideBonusStatus(suitCfgB.id); if (statusB == ConstBonusStatus.CAN_GET && statusA != ConstBonusStatus.CAN_GET) { return 1; } else if (statusB != ConstBonusStatus.CAN_GET && statusA == ConstBonusStatus.CAN_GET) { return -1; } bool haveA = DressUpMenuSuitDataManager.CheckHaveSuit(a); bool haveB = DressUpMenuSuitDataManager.CheckHaveSuit(b); if (haveB && !haveA) { return 1; } else if (!haveB && haveA) { return -1; } else if (suitCfgB.sortPriority > suitCfgA.sortPriority) { return 1; } else if (suitCfgB.sortPriority < suitCfgA.sortPriority) { return -1; } if (suitCfgB.rarity > suitCfgA.rarity) { return 1; } else if (suitCfgB.rarity < suitCfgA.rarity) { return -1; } return string.Compare(suitCfgA.res, suitCfgB.res); }); return arrayList; } public static List SortSuitListByHighRarity(List arrayList) { arrayList.Sort((int a, int b) => { SuitCfg suitCfgA = SuitCfgArray.Instance.GetCfg(a); SuitCfg suitCfgB = SuitCfgArray.Instance.GetCfg(b); if (suitCfgB.rarity > suitCfgA.rarity) { return 1; } else if (suitCfgB.rarity < suitCfgA.rarity) { return -1; } return string.Compare(suitCfgA.res, suitCfgB.res); }); return arrayList; } public static List SortSuitListByLowRarity(List arrayList) { arrayList.Sort((int a, int b) => { SuitCfg suitCfgA = SuitCfgArray.Instance.GetCfg(a); SuitCfg suitCfgB = SuitCfgArray.Instance.GetCfg(b); if (suitCfgB.rarity < suitCfgA.rarity) { return 1; } else if (suitCfgB.rarity > suitCfgA.rarity) { return -1; } return string.Compare(suitCfgA.res, suitCfgB.res); }); return arrayList; } public static List SortSuitListByHighProgress(List arrayList) { arrayList.Sort((int a, int b) => { SuitCfg suitCfgA = SuitCfgArray.Instance.GetCfg(a); SuitCfg suitCfgB = SuitCfgArray.Instance.GetCfg(b); float progressA = DressUpMenuSuitDataManager.GetSuitProgressValueBySuitId(a); float progressB = DressUpMenuSuitDataManager.GetSuitProgressValueBySuitId(b); if (progressB > progressA) { return 1; } else if (progressB < progressA) { return -1; } return string.Compare(suitCfgA.res, suitCfgB.res); }); return arrayList; } public static List SortSuitListByLowProgress(List arrayList) { arrayList.Sort((int a, int b) => { SuitCfg suitCfgA = SuitCfgArray.Instance.GetCfg(a); SuitCfg suitCfgB = SuitCfgArray.Instance.GetCfg(b); float progressA = DressUpMenuSuitDataManager.GetSuitProgressValueBySuitId(a); float progressB = DressUpMenuSuitDataManager.GetSuitProgressValueBySuitId(b); if (progressB < progressA) { return 1; } else if (progressB > progressA) { return -1; } return string.Compare(suitCfgA.res, suitCfgB.res); }); return arrayList; } public static List GetClothingFosterSuitIdList(bool notGet, bool haveGot, int sortIndex) { List result = new List(); void CheckToAdd(int targetId) { if (result.IndexOf(targetId) >= 0) return; SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(targetId); if (suitCfg == null || suitCfg.isHide > 0) return; if (notGet && haveGot) { result.Add(targetId); } else if (notGet && !DressUpMenuSuitDataManager.CheckHaveSuit(targetId)) { result.Add(targetId); } else if (haveGot && DressUpMenuSuitDataManager.CheckHaveSuit(targetId)) { result.Add(targetId); } } SuitFosterListCfg[] dataArray = SuitFosterListCfgArray.Instance.dataArray; foreach (SuitFosterListCfg suitCfg in dataArray) { CheckToAdd(suitCfg.suitId); } //{"默认排序", "稀有度高", "稀有度低", "收集度高", "收集度低"} switch (sortIndex) { case 0: SortSuitListByDefaultPriority(result); break; case 1: SortSuitListByHighRarity(result); break; case 2: SortSuitListByLowRarity(result); break; case 3: SortSuitListByHighProgress(result); break; case 4: SortSuitListByLowProgress(result); break; } return result; } //判断服装升级引导是否开启 public static bool GetClothingFosterHasSuitId() { SuitFosterListCfg[] dataArray = SuitFosterListCfgArray.Instance.dataArray; foreach (SuitFosterListCfg suitCfg in dataArray) { if (DressUpMenuSuitDataManager.CheckHaveSuit(suitCfg.suitId)) return true; } return false; } public static List GetSuitIdList(bool notGet, bool haveGot, int typeId, int sortIndex) { List result = new List(); void CheckToAdd(int targetId) { SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(targetId); if (suitCfg == null || suitCfg.isHide > 0) { return; } if (notGet && haveGot) { result.Add(targetId); } else if (notGet && !DressUpMenuSuitDataManager.CheckHaveSuit(targetId)) { result.Add(targetId); } else if (haveGot && DressUpMenuSuitDataManager.CheckHaveSuit(targetId)) { result.Add(targetId); } } if (typeId == 0) { SuitGuideMenuCfg[] dataArray = SuitGuideMenuCfgArray.Instance.dataArray; foreach (SuitGuideMenuCfg suitCfg in dataArray) { if (suitCfg.suitIds.Length > 0) { string[] values = suitCfg.suitIds.Split(';'); foreach (string value in values) { if (value.Length > 0) { int suitId = int.Parse(value); CheckToAdd(suitId); } } } } } else { SuitGuideMenuCfg menuCfg = SuitGuideMenuCfgArray.Instance.GetCfg(typeId); if (menuCfg.suitIds.Length > 0) { string[] values = menuCfg.suitIds.Split(';'); foreach (string value in values) { if (value.Length > 0) { int suitId = int.Parse(value); CheckToAdd(suitId); } } } } //{"默认排序", "稀有度高", "稀有度低", "收集度高", "收集度低"} switch (sortIndex) { case 0: SortSuitListByDefaultPriority(result); break; case 1: SortSuitListByHighRarity(result); break; case 2: SortSuitListByLowRarity(result); break; case 3: SortSuitListByHighProgress(result); break; case 4: SortSuitListByLowProgress(result); break; } return result; } public static int GetHaveSuitCount(List list) { int count = 0; for (int i = 0; i < list.Count; i++) { if (DressUpMenuSuitDataManager.CheckHaveSuit(list[i])) { ++count; } } return count; } public static void ShowSuitGuideBonus(int suitId) { SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId); List itemDatas = ItemUtil.CreateItemDataList(suitCfg.guideBoxBonusArr); int GetStatus() { return DressUpMenuSuitDataManager.GetSuitGuideBonusStatus(suitId); } void GetBonus() { SuitSProxy.GetSuitGuideBoxBonus(suitId).Coroutine(); } ViewManager.Show(new object[] { itemDatas, new GetBoxBonusStatusCall(GetStatus), new GetBoxBonusCall(GetBonus) }); } public static void ShowSuitSyntheticBonus(int suitId) { SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId); List itemDatas = ItemUtil.CreateItemDataList(suitCfg.syntheticBoxBonusArr); int GetStatus() { return DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId); } void GetBonus() { SuitSProxy.GetSuitSyntheticBoxBonus(suitId).Coroutine(); } ViewManager.Show(new object[] { itemDatas, new GetBoxBonusStatusCall(GetStatus), new GetBoxBonusCall(GetBonus) }); } public static string GetSuitName(int suitId) { SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId); return suitCfg.name; } } }