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) { score += ItemDataManager.GetItemAdditionScore(itemId, InstanceZonesDataManager.currentScoreType, InstanceZonesDataManager.currentFightTags); } } 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 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 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; } 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; 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 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) { SuitCfg[] dataArray = SuitCfgArray.Instance.dataArray; foreach (SuitCfg suitCfg in dataArray) { CheckToAdd(suitCfg.id); } } 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 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(ViewName.BONUS_BOX_DETAIL_VIEW, 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(ViewName.BONUS_BOX_DETAIL_VIEW, new object[] { itemDatas, new GetBoxBonusStatusCall(GetStatus), new GetBoxBonusCall(GetBonus) }); } public static string GetSuitName(int suitId) { SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId); return suitCfg.name; } } }