using System; using System.Collections.Generic; using cfg.GfgCfg; using ET; namespace GFGGame { public class SuitCfgArray : SingletonBaseET { /// /// 获取物品所属套装id /// /// /// public int GetSuitIdOfItem(int itemId) { var itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId); if (itemCfg != null) { return itemCfg.SuitId; } return 0; } /// /// 获取指定套装中部件的总数 /// /// /// public int GetTotalCountOfOneSuit(int suitId) { var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId); if (suitCfg != null) { return suitCfg.Parts.Count; } return 0; } /// /// 获取指定套装中部件的id数组 /// /// /// public int[] GetSuitItems(int suitId, bool excludeSceneType = false) { SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId); if (suitCfg == null) { ET.Log.Error(suitId + " SuitCfgArray配置不存在"); } if (excludeSceneType) { List parts = new List(); for (int i = 0; i < suitCfg.Parts.Count; i++) { if (!DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(suitCfg.Parts[i])) { parts.Add(suitCfg.Parts[i]); } } return parts.ToArray(); } return suitCfg.Parts.ToArray(); } //指定套装动作是否包含某物品 public bool CheckActionContainsItem(int itemId, int actionId) { var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(actionId); if (Array.IndexOf(suitCfg.Parts.ToArray(), itemId) < 0) { return false; } if (!CheckItemReaplaceableOnAction(itemId, actionId)) { return true; } return false; } //指定套装动作状态下某物品是否可以单换 public bool CheckItemReaplaceableOnAction(int itemId, int actionId) { if (DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(itemId)) { return true; } var itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId); if (CheckItemNotInAction(itemId)) { return true; } if (Array.IndexOf(CommonDataManager.Tables.TblGlobalCfg.ItemSubTypesReplaceableInAction.ToArray(), itemCfg.SubType) >= 0) { return true; } var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(actionId); if (Array.IndexOf(suitCfg.SubTypesReplaceable.ToArray(), itemCfg.SubType) >= 0) { return true; } return false; } //物品是否不属于动作包含的部件类型 public bool CheckItemNotInAction(int itemId) { if (DressUpMenuItemCfg1Array.Instance.CheckIsSceneType(itemId)) { return true; } var itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId); if (Array.IndexOf(CommonDataManager.Tables.TblGlobalCfg.ItemSubTypesReplaceableByAction.ToArray(), itemCfg.SubType) >= 0) { return true; } var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(itemCfg.SuitId); if (suitCfg != null) { if (Array.IndexOf(suitCfg.PartsSpecial.ToArray(), itemId) >= 0) { return true; } } return false; } //检查套装是否有动作 public bool CheckSuitHasAction(int suitId) { var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId); return suitCfg != null && !string.IsNullOrEmpty(suitCfg.AniRes); } /// /// 获取一个套装的所有非动作部件 /// /// /// public List GetOneSuitAllNotActionParts(int suitId) { List notActionParts = new List(); var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId); for (int i = 0; i < suitCfg.Parts.Count; i++) { if (CheckItemNotInAction(suitCfg.Parts[i])) { notActionParts.Add(suitCfg.Parts[i]); } } return notActionParts; } /// /// 获取一个动作的所有动作部件 /// /// /// public List GetOneSuitAllActionParts(int actionId) { List actionParts = new List(); var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(actionId); for (int i = 0; i < suitCfg.Parts.Count; i++) { if (!CheckItemNotInAction(suitCfg.Parts[i])) { actionParts.Add(suitCfg.Parts[i]); } } return actionParts; } } }