123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- using System;
- using System.Collections.Generic;
- using FairyGUI;
- namespace GFGGame
- {
- public class ArenaDataManager : SingletonBase<ArenaDataManager>
- {
- public List<int> ThemeList = new List<int>();//本周主题列表
- public string Tag;//本周标签
- public int SeasonId = 1;// 赛季id
- public int Grade = 1;//本赛季段位
- public int Rank = 10000;//本赛季段位内排名
- public int HighestGrade = 1;//本赛季最高段位
- public int HighestRank = 10000; //本赛最高季段位内排名
- public List<FightRoleData> DressupList = new List<FightRoleData>();//我的搭配列表
- public List<ArenaTargetData> Targets = new List<ArenaTargetData>();//对手
- public ArenaTargetData SelfData = new ArenaTargetData();//自己的排行榜信息
- public List<ArenaTargetData> rankDatas = new List<ArenaTargetData>();//排行榜数据
- public List<ArenaHistoryData> historyDatas = new List<ArenaHistoryData>();//获取竞技场历史记录
- public int SelectThemeIndex = 0;//当前选中换装主题(ThemeList)的下标
- public int SelectTargetIndex = 0;//当前选中挑战对象的下标
- public int CurFightIndex = 0;//当前挑战的为第几场
- public void Clear()
- {
- DressupList.Clear();
- Targets.Clear();
- }
- /// <summary>
- /// 试图更新最高段位、排行数据
- /// </summary>
- public void TryUpdateHighest()
- {
- HighestGrade = HighestGrade >= Grade ? HighestGrade : Grade;
- HighestRank = HighestRank >= Rank ? HighestRank : Rank;
- }
- public void UpdateDanIcon(GLoader loader, int danLv)
- {
- }
- public List<int> GetRecommentItemList(int scoreType, string[] tags)
- {
- Dictionary<int, List<int>> itemListDic = new Dictionary<int, List<int>>();
- Dictionary<int, List<int>> itemDatasDic = DressUpMenuItemDataManager.ItemDatasBySubTypeDic;
- foreach (int subType in itemDatasDic.Keys)
- {
- if (itemDatasDic.Count == 0) continue;
- List<int> dressList = SortDressList(itemDatasDic[subType], scoreType, tags);
- int max = subType == (int)ConstDressUpItemType.TE_SHU ? 3 : 1;
- max = Math.Min(max, dressList.Count);
- itemListDic[subType] = dressList.GetRange(0, max);
- }
- if (itemListDic.ContainsKey(ConstDressUpItemType.LIAN_YI_QUN) && itemListDic.ContainsKey(ConstDressUpItemType.SHANG_YI) && itemListDic.ContainsKey(ConstDressUpItemType.XIA_ZHUANG))
- {
- bool hasTagLYQ = ItemDataManager.CheckItemTagsRight(itemListDic[ConstDressUpItemType.LIAN_YI_QUN][0], tags);
- bool hasTagSY = ItemDataManager.CheckItemTagsRight(itemListDic[ConstDressUpItemType.SHANG_YI][0], tags);
- bool hasTagXZ = ItemDataManager.CheckItemTagsRight(itemListDic[ConstDressUpItemType.XIA_ZHUANG][0], tags);
- if (hasTagLYQ && !hasTagSY && !hasTagXZ)
- {
- itemListDic.Remove(ConstDressUpItemType.SHANG_YI);
- itemListDic.Remove(ConstDressUpItemType.XIA_ZHUANG);
- }
- else if (!hasTagLYQ && (hasTagSY || hasTagXZ))
- {
- itemListDic.Remove(ConstDressUpItemType.LIAN_YI_QUN);
- }
- else
- {
- int scoreLYQ = ItemDataManager.GetItemAdditionScore(itemListDic[ConstDressUpItemType.LIAN_YI_QUN][0], scoreType, tags);
- int scoreSY = ItemDataManager.GetItemAdditionScore(itemListDic[ConstDressUpItemType.SHANG_YI][0], scoreType, tags);
- int scoreXZ = ItemDataManager.GetItemAdditionScore(itemListDic[ConstDressUpItemType.XIA_ZHUANG][0], scoreType, tags);
- if (scoreLYQ > scoreSY + scoreXZ)
- {
- itemListDic.Remove(ConstDressUpItemType.SHANG_YI);
- itemListDic.Remove(ConstDressUpItemType.XIA_ZHUANG);
- }
- else
- {
- itemListDic.Remove(ConstDressUpItemType.LIAN_YI_QUN);
- }
- }
- }
- List<int> itemList = new List<int>();
- foreach (int subType in itemListDic.Keys)
- {
- itemList.AddRange(itemListDic[subType]);
- }
- return itemList;
- }
- private List<int> SortDressList(List<int> dressList, int scoreType, string[] tags)
- {
- dressList.Sort((int a, int b) =>
- {
- ItemCfg cfgA = ItemCfgArray.Instance.GetCfg(a);
- ItemCfg cfgB = ItemCfgArray.Instance.GetCfg(b);
- if (ItemDataManager.CheckItemTagsRight(a, tags) && !ItemDataManager.CheckItemTagsRight(b, tags)) return -1;
- if (ItemDataManager.CheckItemTagsRight(b, tags) && !ItemDataManager.CheckItemTagsRight(a, tags)) return 1;
- int scoreA = ItemDataManager.GetItemAdditionScore(a, scoreType, tags);
- int scoreB = ItemDataManager.GetItemAdditionScore(b, scoreType, tags);
- return scoreB - scoreA;
- });
- return dressList;
- }
- }
- }
|