| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- using System;
- using System.Collections.Generic;
- using cfg.GfgCfg;
- using ET;
- namespace GFGGame
- {
- public class SuitCfgArray : SingletonBaseET<SuitCfgArray>
- {
- /// <summary>
- /// 获取物品所属套装id
- /// </summary>
- /// <param name="itemId"></param>
- /// <returns></returns>
- public int GetSuitIdOfItem(int itemId)
- {
- var itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId);
- if (itemCfg != null)
- {
- return itemCfg.SuitId;
- }
- return 0;
- }
- /// <summary>
- /// 获取指定套装中部件的总数
- /// </summary>
- /// <param name="suitId"></param>
- /// <returns></returns>
- public int GetTotalCountOfOneSuit(int suitId)
- {
- var suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
- if (suitCfg != null)
- {
- return suitCfg.Parts.Count;
- }
- return 0;
- }
- /// <summary>
- /// 获取指定套装中部件的id数组
- /// </summary>
- /// <param name="suitId"></param>
- /// <returns></returns>
- 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<int> parts = new List<int>();
- 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);
- }
- /// <summary>
- /// 获取一个套装的所有非动作部件
- /// </summary>
- /// <param name="suitId"></param>
- /// <returns></returns>
- public List<int> GetOneSuitAllNotActionParts(int suitId)
- {
- List<int> notActionParts = new List<int>();
- 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;
- }
- /// <summary>
- /// 获取一个动作的所有动作部件
- /// </summary>
- /// <param name="actionId"></param>
- /// <returns></returns>
- public List<int> GetOneSuitAllActionParts(int actionId)
- {
- List<int> actionParts = new List<int>();
- 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;
- }
- }
- }
|