ItemUtil.cs 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. using ET;
  2. using FairyGUI;
  3. using System;
  4. using System.Collections;
  5. using System.Collections.Generic;
  6. using UI.CommonGame;
  7. using UnityEngine;
  8. namespace GFGGame
  9. {
  10. public class ItemUtil
  11. {
  12. /// <param name="showTips">是否弹购买成功飘字,默认是</param>
  13. /// <param name="openSource">是否打开来源界面。默认否</param>
  14. /// <param name="showTxtBuyTips">是否显示购买提示</param>
  15. public static void ExchangeItemById(int itemId, long num, bool showTips = true, Action onSuccess = null, bool openSource = false, int maxCount = 9990, bool showTxtBuyTips = false, string prefix = "")
  16. {
  17. if (itemId == ConstItemID.GOLD)
  18. {
  19. AddGold(num, onSuccess);
  20. }
  21. else if (itemId == ConstItemID.POWER)
  22. {
  23. AddPower();
  24. }
  25. else
  26. {
  27. BuyItemConteoller.Show(itemId, num, ConstBuyType.TYPE_ITEM, 0, onSuccess, showTips, openSource, maxCount);
  28. BuyItemConteoller.showTxtBuyTips = showTxtBuyTips;
  29. }
  30. }
  31. public static void AddPower(string prefix = "", Action onSuccess = null)
  32. {
  33. int maxLimit = ItemExchangeCfgArray.Instance.GetCfg(ConstItemID.POWER).maxLimit;
  34. int lastBuyCount = maxLimit - ItemDataManager.GetItemExchangeTimes(ConstItemID.POWER);
  35. string showTxt = string.Format("每5分钟回复1点体力\n今日剩余购买{0}/{1}次", lastBuyCount, maxLimit);
  36. BuyConfirmController.Show(ConstItemID.POWER, 1, () =>
  37. {
  38. if (onSuccess != null)
  39. {
  40. onSuccess();
  41. }
  42. }, showTxt);
  43. }
  44. public static void AddGold(long value = 0, Action onSuccess = null)
  45. {
  46. BuyConfirmController.Show(ConstItemID.GOLD, 1, () =>
  47. {
  48. if (onSuccess != null)
  49. {
  50. onSuccess();
  51. }
  52. });
  53. }
  54. public static void AddDiamondPurple()
  55. {
  56. ViewManager.Show(ViewName.RECHARGE_STORE_VIEW);
  57. }
  58. //红钻(鲛绡)
  59. public static void AddDiamondRed(int value = 0, Action onSuccess = null)
  60. {
  61. ItemExchangeCfg currencyRatioCfg = ItemExchangeCfgArray.Instance.GetCfg(ConstItemID.DIAMOND_RED);// GetCurrencyRatioCfgById(ConstItemID.DIAMOND_RED);
  62. BuyItemConteoller.Show(currencyRatioCfg.id, value > 0 ? value : 1, ConstBuyType.TYPE_ITEM, 0, onSuccess, true, true);
  63. BuyItemConteoller.showTxtBuyTips = true;
  64. }
  65. public static string GetItemName(int itemId)
  66. {
  67. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
  68. return itemCfg.name;
  69. }
  70. public static string GetSuitName(int suitId)
  71. {
  72. SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId);
  73. return suitCfg.name;
  74. }
  75. public static int GetItemRarity(int itemId)
  76. {
  77. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
  78. return itemCfg.rarity;
  79. }
  80. public static List<ItemData> CreateItemDataList(List<ItemInfoProto> items)
  81. {
  82. List<ItemData> itemList = new List<ItemData>();
  83. for (int i = 0; i < items.Count; i++)
  84. {
  85. ItemData itemData = createItemData(items[i].ConfigId, items[i].Count);
  86. itemList.Add(itemData);
  87. }
  88. return itemList;
  89. }
  90. public static List<ItemData> CreateItemDataList(int[][] bonus, bool isOnceBonus = false)
  91. {
  92. List<ItemData> itemList = new List<ItemData>();
  93. foreach (int[] item in bonus)
  94. {
  95. ItemData itemData = createItemData(item);
  96. itemList.Add(itemData);
  97. itemData.isOnceBonus = isOnceBonus;
  98. }
  99. return itemList;
  100. }
  101. public static List<ItemData> CreateItemDataList(int[][] bonus, int num)
  102. {
  103. List<ItemData> itemList = new List<ItemData>();
  104. foreach (int[] item in bonus)
  105. {
  106. int count = 0;
  107. if (item.Length > 1)
  108. {
  109. count = item[1];
  110. }
  111. else
  112. {
  113. count = 1;
  114. }
  115. ItemData itemData = createItemData(item[0], count * num);
  116. itemList.Add(itemData);
  117. }
  118. return itemList;
  119. }
  120. public static List<ItemData> CreateItemDataList(int itemId, long count)
  121. {
  122. List<ItemData> itemList = new List<ItemData>();
  123. ItemData itemData = createItemData(itemId, count);
  124. itemList.Add(itemData);
  125. return itemList;
  126. }
  127. public static ItemData createItemData(int[] bonus)
  128. {
  129. int itemID = bonus[0];
  130. int itemNum = 1;
  131. if (bonus.Length > 1)
  132. {
  133. itemNum = bonus[1];
  134. }
  135. return createItemData(itemID, itemNum);
  136. }
  137. public static ItemData createItemData(int itemId, long count)
  138. {
  139. ItemData itemData = ItemDataPool.GetItemData(itemId);
  140. itemData.num = count;
  141. return itemData;
  142. }
  143. public static Boolean CheckItemEnough(int itemId, int num)
  144. {
  145. long hasNum = ItemDataManager.GetItemNum(itemId);
  146. return hasNum >= num;
  147. }
  148. public static bool CheckMenuType1(int needItemId, int needSuitId, int typeId)
  149. {
  150. DressUpMenuItemCfg1 cfg1 = DressUpMenuItemCfg1Array.Instance.GetCfg(typeId);
  151. if (needItemId > 0)
  152. {
  153. int subType = ItemUtilCS.GetItemSubType(needItemId);
  154. if (subType == cfg1.type)
  155. {
  156. return true;
  157. }
  158. else if (cfg1.subMenusArr.Length > 0)
  159. {
  160. foreach (int id2 in cfg1.subMenusArr)
  161. {
  162. DressUpMenuItemCfg2 cfg2 = DressUpMenuItemCfg2Array.Instance.GetCfg(id2);
  163. if (cfg2.type == subType)
  164. {
  165. return true;
  166. }
  167. }
  168. }
  169. }
  170. else if (needSuitId > 0 && cfg1.type == ConstDressUpItemType.TAO_ZHUANG)
  171. {
  172. return true;
  173. }
  174. return false;
  175. }
  176. public static void SortItemIdsByOwned(int[] array)
  177. {
  178. Array.Sort(array, (int a, int b) =>
  179. {
  180. bool ownedA = ItemDataManager.GetItemNum(a) > 0;
  181. bool ownedB = ItemDataManager.GetItemNum(b) > 0;
  182. if (!ownedB && ownedA)
  183. {
  184. return 1;
  185. }
  186. else if (ownedB && !ownedA)
  187. {
  188. return -1;
  189. }
  190. return 0;
  191. });
  192. }
  193. public static string GetItemResExt(int itemType, int type, bool isIcon = false)
  194. {
  195. if (itemType == ConstItemType.DRESS_UP && type == ConstDressUpItemType.BEI_JING && !isIcon)
  196. {
  197. return "jpg";
  198. }
  199. return "png";
  200. }
  201. public static void UpdateItemNumAndNeedNum(GObject obj, int itemId, int needNum, bool ChangeColor = false)
  202. {
  203. UI_ComCostCurrencyWithHas com = UI_ComCostCurrencyWithHas.Proxy(obj);
  204. long hasNum = ItemDataManager.GetItemNum(itemId);
  205. string needStrColor = ChangeColor ? "#B99F7B" : "#FDEED4";
  206. string strHasNum = StringUtil.GetColorText(hasNum.ToString(), hasNum < needNum ? "#C5645A" : needStrColor); hasNum.ToString();
  207. // com.m_txtNeed.text = needNum.ToString();
  208. com.m_txtCount.text = string.Format("{0}{1}{2}", strHasNum, StringUtil.GetColorText("/", needStrColor), StringUtil.GetColorText(needNum.ToString(), needStrColor));
  209. ItemCfg cfg1 = ItemCfgArray.Instance.GetCfg(itemId);
  210. com.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(cfg1.res);
  211. }
  212. public static void UpdateItemNeedNum(GObject obj, int itemId, int needNum, bool checkNum = true, string color = "#716B59")
  213. {
  214. UI_ComCostCurrency com = UI_ComCostCurrency.Proxy(obj);
  215. com.m_c1.selectedIndex = needNum == 0 ? 0 : 1;
  216. long hasNum = ItemDataManager.GetItemNum(itemId);
  217. string strNeedNum = !checkNum ? StringUtil.GetColorText(needNum.ToString(), color) : StringUtil.GetColorText(needNum.ToString(), hasNum < needNum ? "#D0A09B" : color); needNum.ToString();
  218. com.m_txtNeed.text = strNeedNum;
  219. ItemCfg cfg = ItemCfgArray.Instance.GetCfg(itemId);
  220. com.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(cfg.res);
  221. UI_ComCostCurrency.ProxyEnd();
  222. }
  223. // public static void UpdateItemNeedNum1(GObject obj, int itemId, int needNum)
  224. // {
  225. // UI_ComCostCurrency com = UI_ComCostCurrency.Proxy(obj);
  226. // long hasNum = ItemDataManager.GetItemNum(itemId);
  227. // // string strNeedNum = StringUtil.GetColorText(needNum.ToString(), hasNum < needNum ? "#D0A09B" : "#FBF6ED"); needNum.ToString();
  228. // com.m_txtNeed.text = needNum.ToString();
  229. // ItemCfg cfg = ItemCfgArray.Instance.GetCfg(itemId);
  230. // com.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(cfg.res);
  231. // UI_ComCostCurrency.ProxyEnd();
  232. // }
  233. public static void UpdateTag(GObject obj, string tag)
  234. {
  235. UI_ComTag item = UI_ComTag.Proxy(obj);
  236. int tagType = TagCfgArray.Instance.GetCfg(tag).type;
  237. item.m_txtTag.text = tag;
  238. item.m_loaTag.url = ResPathUtil.GetCommonGameResPath("fzd_bqbq_" + tagType);
  239. UI_ComTag.ProxyEnd();
  240. }
  241. }
  242. }