123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using ET;
- namespace GFGGame
- {
- public class DressUpMenuSuitDataManager
- {
- private static List<int> _suitIDList = new List<int>();
- //获得这件装备时套装的进度,用于展示
- private static Dictionary<int, int> _progressByItemIdDic = new Dictionary<int, int>();
- //套装当前的进度
- private static Dictionary<int, int> _progressBySuitIdDic = new Dictionary<int, int>();
- private static Dictionary<int, int> _suitGuideBoxBonusStatus = new Dictionary<int, int>();
- private static Dictionary<int, int> _suitSyntheticBoxBonusStatus = new Dictionary<int, int>();
- public static void InitData()
- {
- _suitIDList.Clear();
- _progressBySuitIdDic.Clear();
- _progressByItemIdDic.Clear();
- }
- public static void SetSuitInfo(List<SuitInfoProto> suitInfoList)
- {
- if (suitInfoList != null)
- {
- _suitGuideBoxBonusStatus.Clear();
- _suitSyntheticBoxBonusStatus.Clear();
- foreach (SuitInfoProto suitInfo in suitInfoList)
- {
- SuitFosterData suitFosterData = new SuitFosterData()
- {
- suitId = suitInfo.SuitId,
- maintainStep = suitInfo.MaintainStep,
- maintainBonusSteps = suitInfo.MaintainBonusSteps,
- makeNewState = suitInfo.MakeNewState
- };
- SuitFosterDataManager.Instance.InitServerData(suitFosterData);
- //图鉴
- _suitGuideBoxBonusStatus.Add(suitInfo.SuitId, suitInfo.GuideBoxBonusState);
- //合成
- _suitSyntheticBoxBonusStatus.Add(suitInfo.SuitId, suitInfo.SyntheticBoxBonusState);
- }
- EventAgent.DispatchEvent(ConstMessage.GET_SUIT_INFOS);
- }
- }
- public static void Add(int value)
- {
- if (!_suitIDList.Contains(value))
- {
- _suitIDList.Add(value);
- }
- }
- public static void Remove(int value)
- {
- if (_suitIDList.Contains(value))
- {
- _suitIDList.Remove(value);
- }
- }
- public static void GetTotalProgress(out int count, out int totalCount)
- {
- totalCount = SuitCfgManager.Instance.totalItemCount;
- count = 0;
- foreach (KeyValuePair<int, int> item in _progressBySuitIdDic)
- {
- count += item.Value;
- }
- }
- public static void GetSuitProgressByItemId(int itemID, out int suitId, out int count)
- {
- suitId = SuitCfgManager.Instance.GetItemSuitId(itemID);
- if (suitId > 0)
- {
- if (_progressByItemIdDic.ContainsKey(itemID))
- {
- count = _progressByItemIdDic[itemID];
- }
- else
- {
- count = 0;
- }
- }
- else
- {
- count = 0;
- }
- }
- public static void GetSuitProgressBySuitId(int suitId, out int count, out int totalCount)
- {
- if (suitId > 0)
- {
- if (_progressBySuitIdDic.ContainsKey(suitId))
- {
- count = _progressBySuitIdDic[suitId];
- }
- else
- {
- count = 0;
- }
- totalCount = SuitCfgManager.Instance.GetTotalCountOfOneSuit(suitId);
- }
- else
- {
- count = 0;
- totalCount = 1;
- }
- }
- public static float GetSuitProgressValueBySuitId(int suitId)
- {
- int count = 0;
- int totalCount = 1;
- GetSuitProgressBySuitId(suitId, out count, out totalCount);
- return (float)count / totalCount;
- }
- public static bool CheckHaveSuit(int suitId)
- {
- return _suitIDList.Contains(suitId);
- }
- public static void CheckItemInSuit(int itemId)
- {
- int suitId = SuitCfgManager.Instance.GetItemSuitId(itemId);
- if (suitId > 0)
- {
- SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId);
- int[] itemIds = SuitCfgManager.Instance.GetSuitItems(suitId);
- int totalCount = itemIds.Length;
- bool hasAll = true;
- int count = 0;
- for (int i = 0; i < totalCount; i++)
- {
- int tempItemId = itemIds[i];
- bool hasItem = DressUpMenuItemDataManager.CheckHasItem(tempItemId);
- if (!hasItem)
- {
- hasAll = false;
- }
- else
- {
- count++;
- }
- }
- _progressBySuitIdDic[suitId] = count;
- _progressByItemIdDic[itemId] = count;
- if (hasAll)
- {
- Add(suitId);
- }
- GetSuitItemController.AddItemId(itemId);
- }
- }
- //检测当前穿戴是否是一件完整套装,且只穿了一件套装,返回套装id
- public static int CheckCurDressIsSuit()
- {
- if (EquipDataCache.cacher.suitId > 0) return EquipDataCache.cacher.suitId;
- int[] equipDatas = EquipDataCache.cacher.equipDatas;
- int dressSuitId = 0;
- List<int> _equipDatas = new List<int>();
- for (int i = 0; i < equipDatas.Length; i++)
- {
- if (DressUpMenuItemDataManager.CheckIsSceneType(equipDatas[i])) continue;
- if (equipDatas[i] != ConstItemID.DEFULT_FA_XING && equipDatas[i] != ConstItemID.DEFULT_LIAN_YI_QUN && equipDatas[i] != ConstItemID.DEFULT_NEI_DA && equipDatas[i] != ConstItemID.DEFULT_XIA_ZHUANG)
- {
- int suitId = SuitCfgManager.Instance.GetItemSuitId(equipDatas[i]);
- if (suitId <= 0) return 0;//有任何不属于套装的部件且不是原始服装,则当前穿戴不属于套装
- if (dressSuitId != 0 && dressSuitId != suitId) return 0;//当前穿戴不同套装的部件,则当前穿戴不属于套装
- dressSuitId = suitId;
- _equipDatas.Add(equipDatas[i]);
- }
- }
- if (dressSuitId == 0) return dressSuitId;
- int[] itemIds = SuitCfgManager.Instance.GetSuitItems(dressSuitId);
- for (int i = 0; i < itemIds.Length; i++)
- {
- if (DressUpMenuItemDataManager.CheckIsSceneType(itemIds[i])) continue;
- if (_equipDatas.IndexOf(itemIds[i]) < 0) return 0;//套装部件穿戴不完整
- }
- return dressSuitId;
- }
- public static List<int> GetSuitIDList()
- {
- return (List<int>)_suitIDList.GetRange(0, _suitIDList.Count);
- }
- public static int GetSuitGuideBonusStatus(int suitId)
- {
- int status = ConstBonusStatus.CAN_NOT_GET;
- if (_suitGuideBoxBonusStatus.ContainsKey(suitId))
- {
- status = _suitGuideBoxBonusStatus[suitId];
- }
- if (status == ConstBonusStatus.CAN_NOT_GET)
- {
- if (CheckHaveSuit(suitId))
- {
- status = ConstBonusStatus.CAN_GET;
- }
- }
- return status;
- }
- public static void SetSuitGuideBoxBonusCompleted(int suitId)
- {
- _suitGuideBoxBonusStatus[suitId] = ConstBonusStatus.GOT;
- EventAgent.DispatchEvent(ConstMessage.SUIT_BOX_STATUS_CHANGED, suitId);
- }
- public static int GetSuitSyntheticBonusStatus(int suitId)
- {
- int status = ConstBonusStatus.CAN_NOT_GET;
- if (_suitSyntheticBoxBonusStatus.ContainsKey(suitId))
- {
- status = _suitSyntheticBoxBonusStatus[suitId];
- }
- if (status == ConstBonusStatus.CAN_NOT_GET)
- {
- if (CheckHaveSuit(suitId))
- {
- status = ConstBonusStatus.CAN_GET;
- }
- }
- return status;
- }
- public static void SetSuitSyntheticBoxBonusCompleted(int suitId)
- {
- _suitSyntheticBoxBonusStatus[suitId] = ConstBonusStatus.GOT;
- EventAgent.DispatchEvent(ConstMessage.SUIT_BOX_STATUS_CHANGED, suitId);
- }
- }
- }
|