using System.Collections.Generic; using UnityEngine; using System; using cfg.GfgCfg; using ET; namespace GFGGame { public class SuitUtil { public static int GetSuitScore(int suitID) { int score = 0; SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitID); var items = suitCfg.Parts; 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 = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitID); var items = suitCfg.Tags; foreach (var info in items) { score += Convert.ToInt32(info.Val); } 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 = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(a); SuitCfg suitCfgB = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(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 = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(a); SuitCfg suitCfgB = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(b); if (suitCfgA == null) { Debug.LogWarning($"suitCfgA is null. suitCfgId:{a} "); return 1; } if (suitCfgB == null) { Debug.LogWarning($"suitCfgB is null. suitCfgId:{b}"); 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 SortSuitListByLowRarity(List arrayList) { arrayList.Sort((int a, int b) => { SuitCfg suitCfgA = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(a); SuitCfg suitCfgB = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(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 = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(a); SuitCfg suitCfgB = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(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 = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(a); SuitCfg suitCfgB = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(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 = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(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); } } var dataArray = CommonDataManager.Tables.TblSuitFosterListCfg.DataList; 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() { var dataArray = CommonDataManager.Tables.TblSuitFosterListCfg.DataList; 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 = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(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) { var dataArray = CommonDataManager.Tables.TblSuitGuideMenuCfg.DataList; foreach (SuitGuideMenuCfg suitCfg in dataArray) { if (suitCfg.SuitIds.Count > 0) { foreach (string value in suitCfg.SuitIds) { if (value.Length > 0) { int suitId = int.Parse(value); CheckToAdd(suitId); } } } } } else { SuitGuideMenuCfg menuCfg = CommonDataManager.Tables.TblSuitGuideMenuCfg.GetOrDefault(typeId); if (menuCfg.SuitIds.Count > 0) { foreach (string value in menuCfg.SuitIds) { 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 = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId); List itemDatas = ItemUtil.CreateItemDataList(suitCfg.GuideBoxBonus.ToGfgGameItemParam()); 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 = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId); List itemDatas = ItemUtil.CreateItemDataList(suitCfg.SyntheticBoxBonus.ToGfgGameItemParam()); 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 = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId); return suitCfg.Name; } } }