ItemApproachScanner.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using GFGGame;
  4. using System;
  5. using System.Linq;
  6. namespace GFGEditor
  7. {
  8. /// <summary>
  9. /// 物品扫描器:
  10. /// 1.扫描获取途径,并填入物品表的获取途径字段
  11. /// 2.扫描套装部件个数
  12. /// </summary>
  13. public class ItemApproachScanner
  14. {
  15. private delegate string GetApproachCall(int itemId);
  16. public static void startScan()
  17. {
  18. ItemCfg[] dataArray = ItemCfgArray.Instance.dataArray;
  19. GetApproachCall[] actions = new GetApproachCall[] { GetClothingShopApproach, GetLeaguePrayApproach, GetLeagueAnswerApproach, CheckStoreApproach, GetClothingSyntheticApproach, GetSuitGuideApproach, GetSuitSyntheticApproach, GetClothingDecomposeApproach, CheckClothingFosterApproach, CheckDailyTaskApproach, CheckWeeklyTaskApproach, GetZhaiXingApproach, GetStoryLevelApproach };
  20. Dictionary<SuitCfg, List<int>> suitDic = new Dictionary<SuitCfg, List<int>>();
  21. Dictionary<ItemCfg, List<int>> syntheticSuitDic = new Dictionary<ItemCfg, List<int>>();
  22. int suitPartTotalCount = 0;
  23. int clothingPartsCount = 0;
  24. int cardCount = 0;
  25. foreach (ItemCfg cfg in dataArray)
  26. {
  27. HandleItemAndSuitTable(cfg, suitDic);
  28. HandleItemApproch(cfg, actions);
  29. HandleItemSyntheticSuit(cfg, syntheticSuitDic);
  30. HandleItemAndDressUpTable(cfg, ref clothingPartsCount);
  31. HandleItemAndCardTable(cfg, ref cardCount);
  32. }
  33. var globalCfg = GlobalCfgArray.globalCfg;
  34. SQLiteHelper.Instance.OpenConnection();
  35. try
  36. {
  37. //物品
  38. foreach (ItemCfg cfg in dataArray)
  39. {
  40. var names = new string[] { nameof(cfg.subType), nameof(cfg.itemType), nameof(cfg.approach), nameof(cfg.isHide) };
  41. var values = new string[] { "" + cfg.subType, "" + cfg.itemType, "" + cfg.approach, "" + cfg.isHide };
  42. SQLiteHelper.Instance.UpdateValues(nameof(ItemCfgArray), names, values, nameof(cfg.id), cfg.id.ToString());
  43. }
  44. //套装
  45. foreach (var a in suitDic)
  46. {
  47. if (a.Key.isHide <= 0)
  48. {
  49. suitPartTotalCount += a.Value.Count;
  50. }
  51. var names = new string[] { nameof(a.Key.partsArr).Replace("Arr", "") };
  52. var values = new string[] { string.Join(";", a.Value) };
  53. SQLiteHelper.Instance.UpdateValues(nameof(SuitCfgArray), names, values, nameof(a.Key.id), a.Key.id.ToString());
  54. }
  55. globalCfg.suitPartTotalCount = suitPartTotalCount;
  56. globalCfg.ClothingPartsCount = clothingPartsCount;
  57. globalCfg.CardCount = cardCount;
  58. UpdateGlobalCfg(globalCfg);
  59. //材料对应的套装id
  60. foreach (var a in syntheticSuitDic)
  61. {
  62. var names = new string[] { nameof(a.Key.syntheticSuitArr).Replace("Arr", "") };
  63. var values = new string[] { string.Join(";", a.Value) };
  64. SQLiteHelper.Instance.UpdateValues(nameof(ItemCfgArray), names, values, nameof(a.Key.id), a.Key.id.ToString());
  65. }
  66. }
  67. catch (Exception e)
  68. {
  69. ET.Log.Error(e.ToString());
  70. }
  71. finally
  72. {
  73. SQLiteHelper.Instance.CloseConnection();
  74. }
  75. }
  76. private static void UpdateGlobalCfg(GlobalCfg globalCfg)
  77. {
  78. var names = new string[]
  79. { nameof(globalCfg.suitPartTotalCount), nameof(globalCfg.ClothingPartsCount), nameof(globalCfg.CardCount) };
  80. var values = new string[]
  81. { globalCfg.suitPartTotalCount.ToString(), globalCfg.ClothingPartsCount.ToString(), globalCfg.CardCount.ToString() };
  82. SQLiteHelper.Instance.UpdateValues(nameof(GlobalCfgArray), names, values, nameof(globalCfg.id), globalCfg.id.ToString());
  83. }
  84. private static void HandleItemSyntheticSuit(ItemCfg itemCfg, Dictionary<ItemCfg, List<int>> syntheticSuitDic)
  85. {
  86. if (itemCfg.syntheticMateriarsArr.Length <= 0)
  87. {
  88. return;
  89. }
  90. if (itemCfg.itemType == ConstItemType.DRESS_UP)
  91. {
  92. ItemCfg materialItemCfg;
  93. foreach (int[] materiars in itemCfg.syntheticMateriarsArr)
  94. {
  95. int materialId = materiars[0];
  96. materialItemCfg = ItemCfgArray.Instance.GetCfg(materialId);
  97. if (materialItemCfg != null)
  98. {
  99. syntheticSuitDic.TryGetValue(materialItemCfg, out var syntheticSuitList);
  100. if (syntheticSuitList == null)
  101. {
  102. syntheticSuitList = new List<int>();
  103. syntheticSuitDic[materialItemCfg] = syntheticSuitList;
  104. }
  105. syntheticSuitList.Add(itemCfg.id);
  106. }
  107. }
  108. }
  109. }
  110. private static void HandleItemAndSuitTable(ItemCfg itemCfg, Dictionary<SuitCfg, List<int>> suitDic)
  111. {
  112. if (itemCfg.suitId <= 0)
  113. {
  114. return;
  115. }
  116. var suitCfg = SuitCfgArray.Instance.GetCfg(itemCfg.suitId);
  117. if (suitCfg == null)
  118. {
  119. return;
  120. }
  121. if (itemCfg.itemType == ConstItemType.DRESS_UP)
  122. {
  123. suitDic.TryGetValue(suitCfg, out var partsList);
  124. if (partsList == null)
  125. {
  126. partsList = new List<int>();
  127. suitDic[suitCfg] = partsList;
  128. }
  129. partsList.Add(itemCfg.id);
  130. }
  131. itemCfg.isHide = suitCfg.isHide;
  132. }
  133. private static void HandleItemAndDressUpTable(ItemCfg itemCfg, ref int count)
  134. {
  135. if (itemCfg.isHide > 0 || itemCfg.mainScore == 0)
  136. {
  137. return;
  138. }
  139. if (itemCfg.itemType == ConstItemType.DRESS_UP)
  140. {
  141. // 服装
  142. bool isDressUp = Array.IndexOf(DressUpMenuItemDataManager.dressUpGuideSubType, itemCfg.subType) >= 0;
  143. if (isDressUp)
  144. {
  145. ++count;
  146. return;
  147. }
  148. // 饰品
  149. bool isAccessories = Array.IndexOf(DressUpMenuItemDataManager.dressUpGuideAccessoriesType, itemCfg.subType) >= 0;
  150. if (isAccessories)
  151. {
  152. ++count;
  153. return;
  154. }
  155. // 特殊
  156. bool isSpecial = itemCfg.subType > ConstDressUpItemType.TE_SHU;
  157. if (isSpecial)
  158. {
  159. ++count;
  160. return;
  161. }
  162. }
  163. }
  164. private static void HandleItemAndCardTable(ItemCfg itemCfg, ref int count)
  165. {
  166. if (itemCfg.isHide > 0)
  167. {
  168. return;
  169. }
  170. if (itemCfg.itemType == ConstItemType.CARD)
  171. {
  172. ++count;
  173. }
  174. }
  175. private static void HandleItemApproch(ItemCfg cfg, GetApproachCall[] actions)
  176. {
  177. if (cfg.id == 3000001 || cfg.id == 3000002 || cfg.id == 3000003)
  178. {
  179. ET.Log.Debug("");
  180. }
  181. List<string> approachs = new List<string>();
  182. foreach (GetApproachCall action in actions)
  183. {
  184. string tempApproach = action(cfg.id);
  185. if (tempApproach != null)
  186. {
  187. approachs.Add(tempApproach);
  188. }
  189. }
  190. if (approachs.Count > 0)
  191. {
  192. string approach = string.Join(";", approachs);
  193. cfg.approach = approach;
  194. if (approachs.Count > 5)
  195. {
  196. Debug.LogFormat("物品{0}的获取途径为 {1}", cfg.name, approach);
  197. }
  198. }
  199. else
  200. {
  201. if (cfg.id < 1000000 || cfg.id >= 2000000)
  202. {
  203. if ((!cfg.name.Contains("原始") && !cfg.name.Contains("默认")) || cfg.id >= 1000000)
  204. {
  205. //Debug.LogErrorFormat("物品 {0} {1} 没有获取途径", cfg.id, cfg.name);
  206. }
  207. }
  208. }
  209. }
  210. /// <summary>
  211. /// 尝试获取服装店产出途径
  212. /// </summary>
  213. /// <param name="itemId"></param>
  214. /// <returns></returns>
  215. private static string GetClothingShopApproach(int itemId)
  216. {
  217. List<ShopCfg> dataArray = ShopCfgArray.Instance.GetCfgsBymenu1Andmenu2(ConstStoreTabId.FU_ZHUANG_DIAN, ConstStoreSubId.FU_ZHUANG_DIAN);
  218. foreach (ShopCfg cfg in dataArray)
  219. {
  220. if (cfg.itemId == itemId)
  221. {
  222. return "FU_ZHUANG_DIAN=" + ConstStoreId.CLOTHING_STORE_ID; ;
  223. }
  224. }
  225. List<ShopCfg> shopCfgGallerys = ShopCfgArray.Instance.GetCfgsBymenu1Andmenu2(ConstStoreTabId.STORE_EXCHANGE, ConstStoreSubId.STORE_EXCHANGE_GALLERY);
  226. foreach (ShopCfg cfg in shopCfgGallerys)
  227. {
  228. if (cfg.itemId == itemId)
  229. {
  230. return "FU_ZHUANG_DIAN=" + ConstStoreId.GALLERY_STORE_ID;
  231. }
  232. }
  233. return null;
  234. }
  235. /// <summary>
  236. /// 尝试获取服装分解产出途径
  237. /// </summary>
  238. /// <param name="itemId"></param>
  239. /// <returns></returns>
  240. private static string GetClothingDecomposeApproach(int itemId)
  241. {
  242. DecomposeCfgArray manager = DecomposeCfgArray.Instance;
  243. DecomposeCfg[] dataArray = manager.dataArray;
  244. foreach (DecomposeCfg cfg in dataArray)
  245. {
  246. for (int i = 0; i < cfg.itemsArr.Length; i++)
  247. {
  248. if (cfg.itemsArr[i][0] == itemId)
  249. {
  250. return "FU_ZHUANG_DECOMPOSE";
  251. }
  252. }
  253. }
  254. return null;
  255. }
  256. /// <summary>
  257. /// 尝试获取摘星(抽奖)产出途径
  258. /// </summary>
  259. /// <param name="itemId"></param>
  260. /// <returns></returns>
  261. private static string GetZhaiXingApproach(int itemId)
  262. {
  263. LuckyBoxCfgArray manager = LuckyBoxCfgArray.Instance;
  264. LuckyBoxCfg[] dataArray = manager.dataArray;
  265. if (itemId == 10090)
  266. {
  267. Debug.Log("");
  268. }
  269. foreach (LuckyBoxCfg cfg in dataArray)
  270. {
  271. for (int i = 0; i < cfg.bonusArr.Length; i++)
  272. {
  273. if (itemId == cfg.bonusArr[i][0])
  274. {
  275. return "ZHAI_XING";
  276. }
  277. }
  278. int dropId = cfg.dropId;
  279. if (itemId == 10014)
  280. {
  281. if (dropId == 11000008)
  282. {
  283. ET.Log.Debug("");
  284. }
  285. ET.Log.Debug("");
  286. }
  287. int[] _dropIds = { dropId };
  288. bool approach = CheckItemInDropOut(itemId, _dropIds);
  289. if (approach)
  290. {
  291. return "ZHAI_XING";
  292. }
  293. // }
  294. }
  295. return null;
  296. }
  297. /// <summary>
  298. /// 尝试获取剧情关卡产出途径
  299. /// </summary>
  300. /// <param name="itemId"></param>
  301. /// <returns></returns>
  302. private static string GetStoryLevelApproach(int itemId)
  303. {
  304. List<string> approachs = new List<string>();
  305. StoryLevelCfgArray manager = StoryLevelCfgArray.Instance;
  306. StoryLevelCfg[] dataArray = manager.dataArray;
  307. foreach (StoryLevelCfg cfg in dataArray)
  308. {
  309. if (itemId == 3000041)
  310. {
  311. ET.Log.Debug("");
  312. }
  313. if (itemId == 3002001)
  314. {
  315. }
  316. bool result = CheckItemInBonus(itemId, cfg);
  317. if (result)
  318. {
  319. string approach = "JU_QING_GUAN_QIA=" + cfg.id;
  320. approachs.Add(approach);
  321. }
  322. }
  323. if (approachs.Count > 0)
  324. {
  325. return string.Join(";", approachs);
  326. }
  327. return null;
  328. }
  329. /// <summary>
  330. /// 尝试获取服装合成产出途径
  331. /// </summary>
  332. /// <param name="itemId"></param>
  333. /// <returns></returns>
  334. private static string GetClothingSyntheticApproach(int itemId)
  335. {
  336. var itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
  337. if (itemCfg == null)
  338. {
  339. return null;
  340. }
  341. if (itemCfg.itemType != ConstItemType.DRESS_UP)
  342. {
  343. return null;
  344. }
  345. if (itemCfg.suitId <= 0)
  346. {
  347. return null;
  348. }
  349. var suitCfg = SuitCfgArray.Instance.GetCfg(itemCfg.suitId);
  350. if (suitCfg == null)
  351. {
  352. return null;
  353. }
  354. if (suitCfg.syntheticType <= 0)
  355. {
  356. return null;
  357. }
  358. return "FU_ZHUANG_HE_CHENG=" + suitCfg.id;
  359. }
  360. private static string GetSuitGuideApproach(int itemId)
  361. {
  362. SuitCfgArray manager = SuitCfgArray.Instance;
  363. SuitCfg[] dataArray = manager.dataArray;
  364. foreach (SuitCfg cfg in dataArray)
  365. {
  366. bool result = CheckItemInBonus(itemId, cfg.guideBoxBonusArr);
  367. if (result)
  368. {
  369. return "TAO_ZHUANG_TU_JIAN";
  370. }
  371. }
  372. return null;
  373. }
  374. private static string GetSuitSyntheticApproach(int itemId)
  375. {
  376. var itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
  377. if (itemCfg == null)
  378. {
  379. return null;
  380. }
  381. if (itemCfg.itemType != ConstItemType.DRESS_UP)
  382. {
  383. return null;
  384. }
  385. if (itemCfg.suitId <= 0)
  386. {
  387. return null;
  388. }
  389. var suitCfg = SuitCfgArray.Instance.GetCfg(itemCfg.suitId);
  390. if (suitCfg == null)
  391. {
  392. return null;
  393. }
  394. if (suitCfg.syntheticType <= 0)
  395. {
  396. return null;
  397. }
  398. bool result = CheckItemInBonus(itemId, suitCfg.syntheticBoxBonusArr);
  399. if (result)
  400. {
  401. return "TAO_ZHUANG_HE_CHENG";
  402. }
  403. return null;
  404. }
  405. private static bool CheckItemInBonus(int itemId, StoryLevelCfg cfg)
  406. {
  407. if (cfg.fightID.Length > 0)
  408. {
  409. StoryFightCfgArray manager = StoryFightCfgArray.Instance;
  410. StoryFightCfg storyFightCfg = manager.GetCfg(cfg.fightID);
  411. List<int[]> a = new List<int[]>();
  412. // a.AddRange(cfg.bonusOnceArr);
  413. a.AddRange(storyFightCfg.bonusBaseArr);
  414. int[][] bonus = a.ToArray();
  415. bool result = CheckItemInBonus(itemId, bonus);
  416. if (storyFightCfg.id == "501")
  417. {
  418. ET.Log.Debug("");
  419. }
  420. if (result)
  421. {
  422. return true;
  423. }
  424. result = CheckItemInDropOut(itemId, storyFightCfg.bonusRandomArr);
  425. return result;
  426. }
  427. return false;
  428. }
  429. private static bool CheckItemInBonus(int itemId, int[][] bosnu)
  430. {
  431. List<ItemData> aList = ItemUtil.CreateItemDataList(bosnu);
  432. foreach (ItemData itemData in aList)
  433. {
  434. if (itemId == itemData.id)
  435. {
  436. return true;
  437. }
  438. }
  439. return false;
  440. }
  441. /// <summary>
  442. /// 检测掉落表是否产出该物品
  443. /// </summary>
  444. /// <param name="itemId"></param>
  445. /// <param name="dropIds"></param>
  446. /// <returns></returns>
  447. private static bool CheckItemInDropOut(int itemId, int[] dropIds)
  448. {
  449. List<ItemData> result = new List<ItemData>();
  450. foreach (int dropId in dropIds)
  451. {
  452. DropOutCfgArray manager = DropOutCfgArray.Instance;
  453. List<DropOutCfg> aList = manager.GetCfgsByid(dropId);
  454. foreach (DropOutCfg dropOutCfg in aList)
  455. {
  456. if (manager.GetCfgsByid(dropOutCfg.item).Count > 0)
  457. {
  458. int[] _dropIds = { dropOutCfg.item };
  459. if (CheckItemInDropOut(itemId, _dropIds))
  460. {
  461. return true;
  462. }
  463. }
  464. else
  465. {
  466. if (itemId == dropOutCfg.item)
  467. {
  468. return true;
  469. }
  470. }
  471. }
  472. }
  473. return false;
  474. }
  475. /// <summary>
  476. /// 检测商城-灵犀卡是否产出该物品
  477. /// </summary>
  478. /// <param name="itemId"></param>
  479. /// <returns></returns>
  480. private static string CheckStoreApproach(int itemId)
  481. {
  482. List<string> approachs = new List<string>();
  483. List<ShopCfg> goldShopCfgs = ShopCfgArray.Instance.GetCfgsBymenu1Andmenu2(ConstStoreTabId.STORE_MONTH_CARD, ConstStoreSubId.STORE_MONTH_GOLD_CARD);
  484. for (int i = 0; i < goldShopCfgs.Count; i++)
  485. {
  486. if (CheckIsHasItem(itemId, goldShopCfgs[i].itemId))
  487. {
  488. approachs.Add(ConstFunctionId.STORE + "=" + ConstStoreTabId.STORE_MONTH_CARD + "=" + ConstStoreSubId.STORE_MONTH_GOLD_CARD);
  489. break;
  490. }
  491. }
  492. List<ShopCfg> blackShopCfgs = ShopCfgArray.Instance.GetCfgsBymenu1Andmenu2(ConstStoreTabId.STORE_MONTH_CARD, ConstStoreSubId.STORE_MONTH_BLACK_CARD);
  493. for (int i = 0; i < blackShopCfgs.Count; i++)
  494. {
  495. if (CheckIsHasItem(itemId, blackShopCfgs[i].itemId))
  496. {
  497. approachs.Add(ConstFunctionId.STORE + "=" + ConstStoreTabId.STORE_MONTH_CARD + "=" + ConstStoreSubId.STORE_MONTH_BLACK_CARD);
  498. break;
  499. }
  500. }
  501. List<ShopCfg> itemShopCfgs = ShopCfgArray.Instance.GetCfgsBymenu1Andmenu2(ConstStoreTabId.STORE_GIFT_BAG, ConstStoreSubId.STORE_GIFT_BAG_TIME_LIMIT);
  502. for (int i = 0; i < itemShopCfgs.Count; i++)
  503. {
  504. if (CheckIsHasItem(itemId, itemShopCfgs[i].itemId))
  505. {
  506. approachs.Add(ConstFunctionId.STORE + "=" + ConstStoreTabId.STORE_GIFT_BAG + "=" + ConstStoreSubId.STORE_GIFT_BAG_TIME_LIMIT);
  507. break;
  508. }
  509. }
  510. List<ShopCfg> greatestShopCfgs = ShopCfgArray.Instance.GetCfgsBymenu1Andmenu2(ConstStoreTabId.STORE_GIFT_BAG, ConstStoreSubId.STORE_GIFT_BAG_GREATEST);
  511. for (int i = 0; i < greatestShopCfgs.Count; i++)
  512. {
  513. if (CheckIsHasItem(itemId, greatestShopCfgs[i].itemId))
  514. {
  515. approachs.Add(ConstFunctionId.STORE + "=" + ConstStoreTabId.STORE_GIFT_BAG + "=" + ConstStoreSubId.STORE_GIFT_BAG_GREATEST);
  516. break;
  517. }
  518. }
  519. List<ShopCfg> exchangetShopCfgs = ShopCfgArray.Instance.GetCfgsBymenu1Andmenu2(ConstStoreTabId.STORE_EXCHANGE, ConstStoreSubId.STORE_EXCHANGE_LEAGUE);
  520. for (int i = 0; i < exchangetShopCfgs.Count; i++)
  521. {
  522. if (CheckIsHasItem(itemId, exchangetShopCfgs[i].itemId))
  523. {
  524. approachs.Add(ConstFunctionId.STORE + "=" + ConstStoreTabId.STORE_EXCHANGE + "=" + ConstStoreSubId.STORE_EXCHANGE_LEAGUE);
  525. break;
  526. }
  527. }
  528. if (approachs.Count > 0)
  529. {
  530. return string.Join(";", approachs);
  531. }
  532. return null;
  533. }
  534. private static bool CheckIsHasItem(int itemId, int checkId)
  535. {
  536. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(checkId);
  537. if (itemCfg.itemType == ConstItemType.USEABLE)
  538. {
  539. for (int i = 0; i < itemCfg.itemsArr.Length; i++)
  540. {
  541. if (itemCfg.itemsArr[i][0] == itemId) return true;
  542. }
  543. }
  544. else if (checkId == itemId)
  545. {
  546. return true;
  547. }
  548. return false;
  549. }
  550. /// <summary>
  551. /// 检测服装升级是否产出该物品
  552. /// </summary>
  553. /// <param name="itemId"></param>
  554. /// <returns></returns>
  555. private static string CheckClothingFosterApproach(int itemId)
  556. {
  557. //培养
  558. SuitFosterCfgArray manager = SuitFosterCfgArray.Instance;
  559. SuitFosterCfg[] dataArray = manager.dataArray;
  560. for (int i = 0; i < dataArray.Length; i++)
  561. {
  562. for (int j = 0; j < dataArray[i].rewardsArr.Length; j++)
  563. {
  564. if (dataArray[i].rewardsArr[j][0] == itemId)
  565. {
  566. return ConstFunctionId.SUIT_FOSTER;
  567. }
  568. }
  569. }
  570. //换新
  571. SuitFosterListCfgArray manager1 = SuitFosterListCfgArray.Instance;
  572. SuitFosterListCfg[] dataArray1 = manager1.dataArray;
  573. for (int i = 0; i < dataArray1.Length; i++)
  574. {
  575. for (int j = 0; j < dataArray1[i].renewRewardsArr.Length; j++)
  576. {
  577. if (dataArray1[i].renewRewardsArr[j][0] == itemId)
  578. {
  579. return ConstFunctionId.SUIT_FOSTER;
  580. }
  581. }
  582. }
  583. return null;
  584. }
  585. /// <summary>
  586. /// 检测每日任务是否产出该物品
  587. /// </summary>
  588. /// <param name="itemId"></param>
  589. /// <returns></returns>
  590. private static string CheckDailyTaskApproach(int itemId)
  591. {
  592. TaskActiveRewardCfgArray manager = TaskActiveRewardCfgArray.Instance;
  593. List<TaskActiveRewardCfg> dataArray = manager.GetCfgsByfuncType(TaskFuncType.Daily);
  594. for (int i = 0; i < dataArray.Count; i++)
  595. {
  596. for (int j = 0; j < dataArray[i].rewardsArr.Length; j++)
  597. {
  598. if (dataArray[i].rewardsArr[j][0] == itemId)
  599. {
  600. return ConstFunctionId.DAILY_TASK;
  601. }
  602. }
  603. }
  604. return null;
  605. }
  606. /// <summary>
  607. /// 检测每周任务是否产出该物品
  608. /// </summary>
  609. /// <param name="itemId"></param>
  610. /// <returns></returns>
  611. private static string CheckWeeklyTaskApproach(int itemId)
  612. {
  613. TaskActiveRewardCfgArray manager = TaskActiveRewardCfgArray.Instance;
  614. List<TaskActiveRewardCfg> dataArray = manager.GetCfgsByfuncType(TaskFuncType.Weekly);
  615. for (int i = 0; i < dataArray.Count; i++)
  616. {
  617. for (int j = 0; j < dataArray[i].rewardsArr.Length; j++)
  618. {
  619. if (dataArray[i].rewardsArr[j][0] == itemId)
  620. {
  621. return ConstFunctionId.WEEKLY_TASK;
  622. }
  623. }
  624. }
  625. return null;
  626. }
  627. /// <summary>
  628. /// 检测雅集福利是否产出该物品
  629. /// </summary>
  630. /// <param name="itemId"></param>
  631. /// <returns></returns>
  632. private static string GetLeaguePrayApproach(int itemId)
  633. {
  634. LeaguePrayCfg[] prayCfgs = LeaguePrayCfgArray.Instance.dataArray;
  635. for (int i = 0; i < prayCfgs.Length; i++)
  636. {
  637. for (int j = 0; j < prayCfgs[i].bonusArr.Length; j++)
  638. {
  639. if (prayCfgs[i].bonusArr[j][0] == itemId)
  640. {
  641. return ConstFunctionId.LEAGUE_PRAY;
  642. }
  643. }
  644. for (int j = 0; j < prayCfgs[i].bonusOnceArr.Length; j++)
  645. {
  646. if (prayCfgs[i].bonusOnceArr[j][0] == itemId)
  647. {
  648. return ConstFunctionId.LEAGUE_PRAY;
  649. }
  650. }
  651. }
  652. return null;
  653. }
  654. /// <summary>
  655. /// 检测雅集答题是否产出该物品
  656. /// </summary>
  657. /// <param name="itemId"></param>
  658. /// <returns></returns>
  659. private static string GetLeagueAnswerApproach(int itemId)
  660. {
  661. LeagueQuestionCfg[] questionCfgs = LeagueQuestionCfgArray.Instance.dataArray;
  662. for (int i = 0; i < questionCfgs.Length; i++)
  663. {
  664. for (int j = 0; j < questionCfgs[i].bonusArr.Length; j++)
  665. {
  666. if (questionCfgs[i].bonusArr[j][0] == itemId)
  667. {
  668. return ConstFunctionId.LEAGUE_ANSWER;
  669. }
  670. }
  671. }
  672. LeagueQuestionBonusCfg[] questionBonusCfgs = LeagueQuestionBonusCfgArray.Instance.dataArray;
  673. for (int i = 0; i < questionBonusCfgs.Length; i++)
  674. {
  675. for (int j = 0; j < questionBonusCfgs[i].bonusArr.Length; j++)
  676. {
  677. if (questionBonusCfgs[i].bonusArr[j][0] == itemId)
  678. {
  679. return ConstFunctionId.LEAGUE_ANSWER;
  680. }
  681. }
  682. }
  683. return null;
  684. }
  685. }
  686. }