using System; using System.Collections; using System.Collections.Generic; using ET; namespace GFGGame { public class DressUpMenuSuitDataManager { private static List _suitIDList = new List(); private static List _travelSuitIDList = new List();//拥有的游历套装列表 public static List TravelSuitIDList { get { return _travelSuitIDList; } } //获得这件装备时套装的进度,用于展示 private static Dictionary _progressByItemIdDic = new Dictionary(); //套装当前的进度 private static Dictionary _progressBySuitIdDic = new Dictionary(); private static Dictionary _suitGuideBoxBonusStatus = new Dictionary(); private static Dictionary _suitSyntheticBoxBonusStatus = new Dictionary(); public static void InitData() { _suitIDList.Clear(); _travelSuitIDList.Clear(); _progressBySuitIdDic.Clear(); _progressByItemIdDic.Clear(); } public static void SetSuitInfo(List 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); TravelSuitCfg travelSuitCfg = TravelSuitCfgArray.Instance.GetCfgBysuitId(value); if (travelSuitCfg != null) { _travelSuitIDList.Add(travelSuitCfg.id); } } } public static void Remove(int value) { if (_suitIDList.Contains(value)) { _suitIDList.Remove(value); TravelSuitCfg travelSuitCfg = TravelSuitCfgArray.Instance.GetCfgBysuitId(value); if (travelSuitCfg != null && _travelSuitIDList.Contains(travelSuitCfg.id)) { _travelSuitIDList.Remove(travelSuitCfg.id); } } } public static void GetTotalProgress(out int count, out int totalCount) { totalCount = SuitCfgManager.Instance.totalItemCount; count = 0; foreach (KeyValuePair 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; // var equipDatas = EquipDataCache.cacher.equipDatas; // int dressSuitId = 0; // List _equipDatas = new List(); // for (int i = 0; i < equipDatas.Count; 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 GetSuitIDList() { return (List)_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); } } }