| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441 | using System.Collections;using System.Collections.Generic;using System;using UnityEngine;namespace GFGGame{    public enum DressFilterType    {        None,        Search,        Filter    }    public class DressUpMenuItemDataManager    {        public static string dressSearchTxt = "";        public static DressFilterType dressFilterType = DressFilterType.None;        public static List<int> selectRarityList = new List<int>();        public static List<int> selectScoreList = new List<int>();        public static List<string> selectTagList = new List<string>();        private static List<int> _itemDatas = new List<int>();        public static void InitData()        {            _itemDatas.Clear();        }        public static void Add(int value)        {            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(value);            if (itemCfg == null)            {                Debug.LogError("添加了一个不存在的物品" + value);            }            else            {                if (!_itemDatas.Contains(value))                {                    _itemDatas.Add(value);                    DressUpMenuSuitDataManager.CheckItemInSuit(value);                }            }        }        public static bool CheckHasItem(int itemID)        {            return _itemDatas.Contains(itemID);        }        public static void Remove(int value)        {            if (_itemDatas == null)            {                return;            }            if (_itemDatas.Contains(value))            {                _itemDatas.Remove(value);            }        }        public static List<int> getItemDatasByType(int type)        {            List<int> arrayList = new List<int>();            for (int i = 0; i < _itemDatas.Count; i++)            {                int itemID = (int)_itemDatas[i];                int subType = ItemUtilCS.GetItemSubType(itemID);                if (type == (int)ConstDressUpItemType.TE_SHU && subType > type)                {                    arrayList.Add(itemID);                }                else if (subType == type)                {                    arrayList.Add(itemID);                }            }            return arrayList;        }        public static List<int> SortItemListByHighScore(List<int> arrayList)        {            arrayList.Sort((int a, int b) =>            {                int scoreA = GetItemScore(a);                int scoreB = GetItemScore(b);                if (scoreB > scoreA)                {                    return 1;                }                else if (scoreB < scoreA)                {                    return -1;                }                return 0;            });            return arrayList;        }        public static List<int> SortItemListByLowScore(List<int> arrayList)        {            arrayList.Sort((int a, int b) =>            {                int scoreA = GetItemScore(a);                int scoreB = GetItemScore(b);                if (scoreB < scoreA)                {                    return 1;                }                else if (scoreB > scoreA)                {                    return -1;                }                return 0;            });            return arrayList;        }        private static List<int> SortItemListByScoreByType(List<int> arrayList)        {            arrayList.Sort((int a, int b) =>            {                int typeA = ItemUtilCS.GetItemSubType(a);                int typeB = ItemUtilCS.GetItemSubType(b);                int scoreA = GetItemScore(a);                int scoreB = GetItemScore(b);                if (typeB < typeA)                {                    return -1;                }                else if (typeB > typeA)                {                    return 1;                }                else if (scoreB > scoreA)                {                    return 1;                }                else if (scoreB < scoreA)                {                    return -1;                }                return 0;            });            return arrayList;        }        public static List<int> SortItemListByHighRarity(List<int> arrayList)        {            arrayList.Sort((int a, int b) =>            {                ItemCfg itemCfgA = ItemCfgArray.Instance.GetCfg(a);                ItemCfg itemCfgB = ItemCfgArray.Instance.GetCfg(b);                if (itemCfgB.rarity > itemCfgA.rarity)                {                    return 1;                }                else if (itemCfgB.rarity < itemCfgA.rarity)                {                    return -1;                }                return 0;            });            return arrayList;        }        public static List<int> SortItemListByLowRarity(List<int> arrayList)        {            arrayList.Sort((int a, int b) =>            {                ItemCfg itemCfgA = ItemCfgArray.Instance.GetCfg(a);                ItemCfg itemCfgB = ItemCfgArray.Instance.GetCfg(b);                if (itemCfgB.rarity < itemCfgA.rarity)                {                    return 1;                }                else if (itemCfgB.rarity > itemCfgA.rarity)                {                    return -1;                }                return 0;            });            return arrayList;        }        public static List<int> GetRecommendItemList(bool toSort = true)        {            List<int> recommendTypeList = new List<int>();            List<int> recommendList = new List<int>();            List<int> recommendSpecialList = new List<int>();            List<int> tempAllList = _itemDatas.GetRange(0, _itemDatas.Count);            if (toSort)            {                SortItemListByScoreByType(tempAllList);            }            foreach (int itemID in tempAllList)            {                int subType = ItemUtilCS.GetItemSubType(itemID);                if (!CheckIsSceneType(itemID))                {                    if (!recommendTypeList.Contains(subType))                    {                        if (subType < ConstDressUpItemType.TE_SHU)                        {                            recommendList.Add(itemID);                        }                        recommendTypeList.Add(subType);                    }                }            }            recommendSpecialList = DressUpMenuItemDataManager.getItemDatasByType(ConstDressUpItemType.TE_SHU);            recommendSpecialList = DressUpMenuItemDataManager.SortItemListByHighScore(recommendSpecialList);            List<int> specialSubList = new List<int>();            List<int> specialIdList = new List<int>();            foreach (int itemID in recommendSpecialList)            {                int subType = ItemUtilCS.GetItemSubType(itemID);                if (subType > ConstDressUpItemType.TE_SHU)                {                    if (specialSubList.Count >= 3) continue;                    if (specialSubList.IndexOf(subType) < 0)                    {                        specialSubList.Add(subType);                        specialIdList.Add(itemID);                    }                }            }            recommendList.AddRange(specialIdList);            return recommendList;        }        public static int GetRecommendCount()        {            List<int> recommendTypeList = GetRecommendItemList(false);            return recommendTypeList.Count;        }        public static bool CheckIsSceneType(int itemID)        {            int subType = ItemUtilCS.GetItemSubType(itemID);            DressUpMenuItemCfg1 typeCfg = DressUpMenuItemCfg1Array.Instance.GetCfg(12);            foreach (int temp in typeCfg.subMenusArr)            {                DressUpMenuItemCfg2 subTypeCfg = DressUpMenuItemCfg2Array.Instance.GetCfg(temp);                if (subType == subTypeCfg.type)                {                    return true;                }            }            return false;        }        public static int GetItemScore(int itemId)        {            return GetItemScore(itemId, InstanceZonesDataManager.currentScoreType);        }        public static int GetItemScore(int itemId, int scoreType)        {            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);            if (itemCfg == null) return 0;            int score = itemCfg.baseScore;            switch (scoreType)            {                case ConstDressUpScoreType.SCORE_FENG:                    score += itemCfg.score1;                    break;                case ConstDressUpScoreType.SCORE_HUA:                    score += itemCfg.score2;                    break;                case ConstDressUpScoreType.SCORE_XUE:                    score += itemCfg.score3;                    break;                case ConstDressUpScoreType.SCORE_YUE:                    score += itemCfg.score4;                    break;            }            return score;        }        public static List<int> DressSearch(List<int> list, bool isTaoZhuang)        {            List<int> searchList = new List<int>();            for (int i = 0; i < list.Count; i++)            {                bool isSearch = true;                string name = isTaoZhuang ? SuitCfgArray.Instance.GetCfg(list[i]).name : ItemCfgArray.Instance.GetCfg(list[i]).name;                for (int j = 0; j < dressSearchTxt.Length; j++)                {                    if (name.IndexOf(dressSearchTxt[j]) < 0)                    {                        isSearch = false;                        break;                    }                }                if (isSearch)                {                    searchList.Add(list[i]);                }            }            // if (searchList.Count == 0)            // {            //     PromptController.Instance.ShowFloatTextPrompt("搜索不到相关物品");            // }            return searchList;        }        public static List<int> DressFilter(List<int> list, bool isTaoZhuang)        {            List<int> filterList = new List<int>();            for (int i = 0; i < list.Count; i++)            {                ItemCfg cfg = ItemCfgArray.Instance.GetCfg(list[i]);                SuitCfg tzCfg = SuitCfgArray.Instance.GetCfg(list[i]);                bool isRarity = isTaoZhuang ? FilterRarity(tzCfg) : FilterRarity(cfg);                bool isScore = isTaoZhuang ? true : FilterScore(cfg);                bool isTag = isTaoZhuang ? true : FilterTag(cfg);                if (isRarity && isScore && isTag)                {                    filterList.Add(list[i]);                }            }            if (filterList.Count == 0)            {                PromptController.Instance.ShowFloatTextPrompt("无满足条件物品");            }            return filterList;        }        private static bool FilterRarity(ItemCfg cfg)        {            bool isRarity = false;            if (selectRarityList.Count > 0)            {                for (int j = 0; j < selectRarityList.Count; j++)                {                    if (cfg != null && cfg.rarity == selectRarityList[j])                    {                        isRarity = true;                        break;                    }                }            }            else            {                isRarity = true;            }            return isRarity;        }        private static bool FilterRarity(SuitCfg cfg)        {            bool isRarity = false;            if (selectRarityList.Count > 0)            {                for (int j = 0; j < selectRarityList.Count; j++)                {                    if (cfg != null && cfg.rarity == selectRarityList[j])                    {                        isRarity = true;                        break;                    }                }            }            else            {                isRarity = true;            }            return isRarity;        }        private static bool FilterScore(ItemCfg cfg)        {            bool isScore = false;            if (selectScoreList.Count > 0)            {                if (cfg != null)                {                    int mainScore;                    int mainScoreValue;                    ItemDataManager.GetMainScore(cfg.id, out mainScore, out mainScoreValue);                    for (int j = 0; j < selectScoreList.Count; j++)                    {                        if (mainScore == selectScoreList[j])                        {                            isScore = true;                            break;                        }                    }                }            }            else            {                isScore = true;            }            return isScore;        }        private static bool FilterTag(ItemCfg cfg)        {            bool isTag = false;            if (selectTagList.Count > 0)            {                if (cfg != null)                {                    for (int j = 0; j < selectTagList.Count; j++)                    {                        if (isTag == true)                        {                            break;                        }                        for (int k = 0; k < cfg.tagsArr.Length; k++)                        {                            if (cfg.tagsArr[k] == selectTagList[j])                            {                                isTag = true;                                break;                            }                        }                    }                }            }            else            {                isTag = true;            }            return isTag;        }    }}
 |