RedDotDataManager.cs 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Assets.Game.HotUpdate.Data;
  4. using cfg.GfgCfg;
  5. using ET;
  6. using Hutool;
  7. namespace GFGGame
  8. {
  9. public class RedDotDataManager : SingletonBase<RedDotDataManager>
  10. {
  11. /// <summary>
  12. /// 公告
  13. /// 是否有未读公告
  14. /// </summary>
  15. /// <returns></returns>
  16. public bool GetNoticeRed()
  17. {
  18. List<NoticeInfo> noticeInfos = NoticeDataManager.Instance.NoticeInfos;
  19. for (int i = 0; i < noticeInfos.Count; i++)
  20. {
  21. if (noticeInfos[i].readStatus == false) return true;
  22. }
  23. List<AdCfg> showActivity = NoticeDataManager.Instance.UpdateShowActivity();
  24. for (int i = 0; i < showActivity.Count; i++)
  25. {
  26. if (NoticeDataManager.Instance.GetRedDotState(showActivity[i].JumpId, showActivity[i].ActivityId))
  27. {
  28. return true;
  29. }
  30. }
  31. return false;
  32. }
  33. /// <summary>
  34. /// 任务
  35. /// 是否有任务奖励、任务宝箱奖励可领
  36. /// </summary>
  37. /// <returns></returns>
  38. public bool GetTaskRed()
  39. {
  40. //判断活跃奖励是否有可以领取
  41. var hadGetRewardNum = DailyTaskDataManager.Instance.GetHadGetRewardNum(0);
  42. if (hadGetRewardNum)
  43. {
  44. return true;
  45. }
  46. if (TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.Daily))
  47. {
  48. return true;
  49. }
  50. if (TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.Weekly))
  51. {
  52. return true;
  53. }
  54. if (TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.Achievement))
  55. {
  56. return true;
  57. }
  58. return false;
  59. //判断是否有通行证奖励可领取
  60. //return BattlePassTaskDataManager.Instance.GetHadCanGetReward();
  61. }
  62. //七日活动红点
  63. public bool GetActivityDay7Red()
  64. {
  65. //任务奖励
  66. var maxDay = ActivityDay7DataManager.Instance.GetActivityDay7MaxPassDay();
  67. for (var day = maxDay; day > 0; day--)
  68. {
  69. if (ActivityDay7DataManager.Instance.CheckActivityDay7TaskRewrdCanGetByDay(day))
  70. {
  71. return true;
  72. }
  73. }
  74. //活跃奖励
  75. var activity7DaysCfgs = CommonDataManager.Tables.TblActivity7DaysCfg.DataList;
  76. foreach (var cfg in activity7DaysCfgs)
  77. {
  78. if (ActivityDay7DataManager.Instance.CheckActivityDay7RewardCanGet(cfg.Id))
  79. {
  80. return true;
  81. }
  82. }
  83. return false;
  84. }
  85. /// <summary>
  86. /// 有邮件未读或未领奖励
  87. /// </summary>
  88. /// <returns></returns>
  89. public bool GetMailRed()
  90. {
  91. if (MailDataManager.Instance.UnreadCount > 0) return true;
  92. return false;
  93. }
  94. /// <summary>
  95. /// 套装收集奖励可领
  96. /// </summary>
  97. /// <returns></returns>
  98. public bool GetFieldGuideRed()
  99. {
  100. List<int> _suitIds = SuitUtil.GetSuitIdList(false, true, 0, 3); //全部已获得套装按照收集度高排序
  101. for (int i = 0; i < _suitIds.Count; i++)
  102. {
  103. int status = DressUpMenuSuitDataManager.GetSuitGuideBonusStatus(_suitIds[i]);
  104. if (status == ConstBonusStatus.CAN_GET)
  105. {
  106. return true;
  107. }
  108. }
  109. return false;
  110. }
  111. /// <summary>
  112. /// 套装收集种类界面奖励可领
  113. /// </summary>
  114. /// <returns></returns>
  115. public bool GetSuitGuideRed(int typeIndex)
  116. {
  117. List<int> _suitIds = SuitUtil.GetSuitIdList(false, true, typeIndex, 3); //全部已获得套装按照收集度高排序
  118. for (int i = 0; i < _suitIds.Count; i++)
  119. {
  120. int status = DressUpMenuSuitDataManager.GetSuitGuideBonusStatus(_suitIds[i]);
  121. if (status == ConstBonusStatus.CAN_GET)
  122. {
  123. return true;
  124. }
  125. }
  126. return false;
  127. }
  128. /// <summary>
  129. /// 判断所有章节是否有奖励可领
  130. /// </summary>
  131. /// <returns></returns>
  132. public bool GetChapterRed()
  133. {
  134. for (int i = 0; i < CommonDataManager.Tables.TblStoryChapterCfg.DataList.Count; i++)
  135. {
  136. for (int j = 0; j < 3; j++)
  137. {
  138. int state = MainStoryDataManager.GetChapterBonusStatus(
  139. CommonDataManager.Tables.TblStoryChapterCfg.DataList[i].Id, j);
  140. if (state == ConstBonusStatus.CAN_GET)
  141. {
  142. return true;
  143. }
  144. }
  145. }
  146. return false;
  147. }
  148. /// <summary>
  149. /// 根据章节Id判断是否有奖励可领
  150. /// </summary>
  151. /// <returns></returns>
  152. public bool GetChapterRed(int chapterId)
  153. {
  154. for (int i = 0; i < 3; i++)
  155. {
  156. int state = MainStoryDataManager.GetChapterBonusStatus(chapterId, i);
  157. if (state == ConstBonusStatus.CAN_GET)
  158. {
  159. return true;
  160. }
  161. }
  162. return false;
  163. }
  164. /// <summary>
  165. /// 好友红点
  166. /// </summary>
  167. /// <returns></returns>
  168. public bool GetFriendRed()
  169. {
  170. return GetFriendApplyRed() || GetFriendGiftRed();
  171. }
  172. /// <summary>
  173. /// 是否有好友申请
  174. /// </summary>
  175. /// <returns></returns>
  176. public bool GetFriendApplyRed()
  177. {
  178. return FriendDataManager.Instance.ApplyDatas.Count > 0;
  179. }
  180. /// <summary>
  181. /// 是否有好友可领体力
  182. /// </summary>
  183. /// <returns></returns>
  184. public bool GetFriendGiftRed()
  185. {
  186. if (FriendDataManager.Instance.Count >= FriendDataManager.Instance.maxGetPowerCount) return false;
  187. List<long> friendInfos = FriendDataManager.Instance.FriendDatas;
  188. for (int i = 0; i < friendInfos.Count; i++)
  189. {
  190. FriendInfoData friendInfo = FriendDataManager.Instance.GetFriendDataById(friendInfos[i]);
  191. if (friendInfo.takeGiftState == ConstBonusStatus.CAN_GET)
  192. {
  193. return true;
  194. }
  195. }
  196. return false;
  197. }
  198. /// <summary>
  199. /// 商城-礼包红点
  200. /// </summary>
  201. /// <returns></returns>
  202. public bool GetRechargeGiftFreeRed()
  203. {
  204. // List<GiftBagCfg> _giftCfgs = ShopDataManager.Instance.GetGiftBagCfgs();
  205. // for (int i = 0; i < _giftCfgs.Count; i++)
  206. // {
  207. // GiftBagCfg cfg = _giftCfgs[i];
  208. // bool isUnLock = ShopDataManager.Instance.GetShopGoodsStateById(cfg.id);
  209. // int buyNum = ShopDataManager.Instance.GetGoodsBuyNumById(cfg.id);
  210. // bool canBuy = cfg.maxBuyNum == 0 || buyNum < cfg.maxBuyNum ? true : false;
  211. // if (isUnLock && canBuy && cfg.price == 0) return true;
  212. // }
  213. return false;
  214. }
  215. /// <summary>
  216. /// 田野调查红点
  217. /// </summary>
  218. /// <returns></returns>
  219. public bool GetFieldRed()
  220. {
  221. List<FieldTaskCfg> _cfgs = FieldDataManager.Instance.GetTaskCfgs();
  222. for (int i = 0; i < _cfgs.Count; i++)
  223. {
  224. int state = FieldDataManager.Instance.GetTaskState(_cfgs[i].Id);
  225. if (state == ConstBonusStatus.CAN_GET) return true;
  226. }
  227. return false;
  228. }
  229. /// <summary>
  230. /// 工作室红点
  231. /// </summary>
  232. /// <returns></returns>
  233. public bool GetStudioFilingRed(bool checkCurChapter = true)
  234. {
  235. List<StudioCfg> studioCfgs =
  236. CommonDataManager.Tables.TblStudioCfg.DataList.Where(a => a.FunId == typeof(StudioFilingView).Name)
  237. .ToList();
  238. for (int i = 0; i < studioCfgs.Count; i++)
  239. {
  240. if (!checkCurChapter && studioCfgs[i].Id == StudioDataManager.Instance.filingChapterId) continue;
  241. if (StudioDataManager.Instance.GetFilingRewardState(studioCfgs[i].Id)) return true;
  242. }
  243. return false;
  244. }
  245. /// <summary>
  246. /// 寻奇访胜
  247. /// </summary>
  248. /// <returns></returns>
  249. public bool GetTravelRed()
  250. {
  251. if (TravelDataManager.Instance.TravelData == null) return false;
  252. return TravelDataManager.Instance.TravelData.Status == (int)TravelGuideType.TravelComplete;
  253. }
  254. /// <summary>
  255. /// 千山万水-图鉴红点
  256. /// </summary>
  257. /// <returns></returns>
  258. public bool GetTravelGuideRed()
  259. {
  260. if (TravelDataManager.Instance.ListTravelAreaRewardState == null ||
  261. TravelDataManager.Instance.ListTravelAreaRewardState.Count == 0) return false;
  262. for (int i = 0; i < TravelDataManager.Instance.ListTravelAreaRewardState.Count; i++)
  263. {
  264. if (TravelDataManager.Instance.ListTravelAreaRewardState[i] == ConstBonusStatus.CAN_GET)
  265. {
  266. return true;
  267. }
  268. }
  269. return false;
  270. }
  271. /// <summary>
  272. /// 千山万水-图鉴区域红点
  273. /// </summary>
  274. /// <param name="areaId"></param>
  275. /// <returns></returns>
  276. public bool GetTravelGuideAreaRed(int areaId)
  277. {
  278. if (TravelDataManager.Instance.ListTravelAreaRewardState == null ||
  279. TravelDataManager.Instance.ListTravelAreaRewardState.Count == 0) return false;
  280. return TravelDataManager.Instance.GetGuideRewardStateByAreaId(areaId) == ConstBonusStatus.CAN_GET;
  281. }
  282. /// <summary>
  283. /// 头像-获得新头像红点
  284. /// </summary>
  285. /// <returns></returns>
  286. public bool GetHeadRed()
  287. {
  288. return RoleInfoManager.Instance.newHeadDatas.Count > 0;
  289. }
  290. /// <summary>
  291. /// 头像-获得新头像框红点
  292. /// </summary>
  293. /// <returns></returns>
  294. public bool GetHeadBorderRed()
  295. {
  296. return RoleInfoManager.Instance.newHeadBorderDatas.Count > 0;
  297. }
  298. /// <summary>
  299. /// 词牌
  300. /// </summary>
  301. /// <returns></returns>
  302. public bool GetCardRed()
  303. {
  304. if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(nameof(CardDetailView), false)) return false;
  305. List<CardData> cardDatas = CardDataManager.GetCardListByRoleType(0);
  306. for (int i = 0; i < cardDatas.Count; i++)
  307. {
  308. if (GetCardRed(cardDatas[i].id)) return true;
  309. }
  310. return false;
  311. }
  312. /// <summary>
  313. /// 词牌
  314. /// </summary>
  315. /// <returns></returns>
  316. public bool GetCardRed(int cardId)
  317. {
  318. // GetCardUpStarRed(cardId) || GetCardUpLvRed(cardId) ||
  319. return GetCardStarReward(cardId) || GetCardSkillsRed(cardId) || CheckCardCanSynthetic(cardId);
  320. }
  321. /// <summary>
  322. /// 词牌-升级红点
  323. /// </summary>
  324. /// <param name="cardId"></param>
  325. /// <returns></returns>
  326. public bool GetCardUpLvRed(int cardId)
  327. {
  328. CardData cardData = CardDataManager.GetCardDataById(cardId);
  329. int maxLv = CommonDataManager.Tables.TblRoleLevelCfg.GetOrDefault(RoleDataManager.lvl).CardLeverLimit;
  330. if (cardData.lv >= maxLv) return false;
  331. if (cardData.lv == CommonDataManager.Tables.TblCardRarityCfg.GetOrDefault(cardData.itemCfg.Rarity)
  332. .MaxCardLvl) return false;
  333. int curExp = cardData.exp;
  334. int needExp = CommonDataManager.Tables.TblCardLvlCfg.Get(cardData.itemCfg.Rarity, cardData.lv).NeedExp;
  335. int cardUpLvGoldsNeed = 0;
  336. var materials = CommonDataManager.Tables.TblGlobalCfg.UpgradeCardItems;
  337. for (int i = 0; i < materials.Count; i++)
  338. {
  339. var cardUpLvGolds = CommonDataManager.Tables.TblItemCfg.GetOrDefault(materials[i]).CardUpLvGolds[i];
  340. for (int j = 0; j < ItemDataManager.GetItemNum(materials[i]); j++)
  341. {
  342. cardUpLvGoldsNeed += cardUpLvGolds.Count;
  343. curExp += CommonDataManager.Tables.TblItemCfg.GetOrDefault(materials[i]).CardUpLvExp;
  344. if (curExp >= needExp && ItemDataManager.GetItemNum(cardUpLvGolds.ItemId) >= cardUpLvGoldsNeed)
  345. return true;
  346. }
  347. }
  348. return false;
  349. }
  350. /// <summary>
  351. /// 词牌-升星红点
  352. /// </summary>
  353. /// <param name="cardId"></param>
  354. /// <returns></returns>
  355. public bool GetCardUpStarRed(int cardId)
  356. {
  357. CardData cardData = CardDataManager.GetCardDataById(cardId);
  358. List<CardStarCfg> starCfgs = CommonDataManager.Tables.TblCardStarCfg.DataList.Where(a => a.CardId == cardId)
  359. .ToList();
  360. if (cardData.star >= starCfgs.Count) return false;
  361. CardStarCfg starCfg = CommonDataManager.Tables.TblCardStarCfg.Get(cardId, cardData.star);
  362. if (ItemDataManager.GetItemNum(starCfg.CostID) < starCfg.CostNum) return false;
  363. if (cardData.lv < starCfg.NeedLv) return false;
  364. if (CardDataManager.GetUpStarEnoughMaterial(cardId) == false) return false;
  365. return true;
  366. }
  367. /// <summary>
  368. /// 词牌-词牌技能升级
  369. /// </summary>
  370. /// <param name="cardId"></param>
  371. /// <returns></returns>
  372. public bool GetCardSkillsRed(int cardId)
  373. {
  374. List<PassivitySkillCfg> skillCfgs = CommonDataManager.Tables.TblPassivitySkillCfg.DataList
  375. .Where(a => a.CardId == cardId).ToList();
  376. for (int i = 0; i < skillCfgs.Count; i++)
  377. {
  378. if (GetCardSkillRed(skillCfgs[i].SkillId)) return true;
  379. }
  380. return false;
  381. }
  382. /// <summary>
  383. /// 词牌-词牌技能升级
  384. /// </summary>
  385. /// <param name="skillId"></param>
  386. /// <returns></returns>
  387. public bool GetCardSkillRed(int skillId)
  388. {
  389. PassivitySkillCfg skillCfg = CommonDataManager.Tables.TblPassivitySkillCfg.GetOrDefault(skillId);
  390. int skillLv = SkillDataManager.Instance.GetCardSkillLv(skillCfg.CardId, skillId);
  391. PassivitySkillLvlCfg skillLvlCfg =
  392. CommonDataManager.Tables.TblPassivitySkillLvlCfg.Get(skillLv, skillId);
  393. PassivitySkillLvlCfg nextSkillLvlCfg =
  394. CommonDataManager.Tables.TblPassivitySkillLvlCfg.Get(skillLv + 1, skillId);
  395. if (nextSkillLvlCfg == null || skillLvlCfg.Materiars.Count == 0) return false;
  396. long itemHas = ItemDataManager.GetItemNum(skillLvlCfg.Materiars[0].ItemId);
  397. int itemNeed = skillLvlCfg.Materiars[0].Count;
  398. long costHas = ItemDataManager.GetItemNum(skillLvlCfg.CostID);
  399. int costNeed = skillLvlCfg.CostNum;
  400. return itemHas >= itemNeed && costHas >= costNeed;
  401. }
  402. //词牌-词牌升星奖励状态
  403. public bool GetCardStarReward(int cardId)
  404. {
  405. CardData cardData = CardDataManager.GetCardDataById(cardId);
  406. List<CardStarCfg> cardStarCfgs = CommonDataManager.Tables.TblCardStarCfg.DataList
  407. .Where(a => a.CardId == cardId).ToList();
  408. for (int i = 0; i < cardStarCfgs.Count; i++)
  409. {
  410. if (cardStarCfgs[i].Rewards.Count > 0 &&
  411. cardData.starRewardsState.ContainsKey(cardStarCfgs[i].StarLvl) &&
  412. cardData.starRewardsState[cardStarCfgs[i].StarLvl] == ConstBonusStatus.CAN_GET) return true;
  413. }
  414. return false;
  415. }
  416. /// <summary>
  417. /// 服装养护红点
  418. /// </summary>
  419. /// <returns></returns>
  420. public bool GetClothingFosterRed()
  421. {
  422. List<int> _suitIds = SuitUtil.GetClothingFosterSuitIdList(true, true, 0);
  423. for (int i = 0; i < _suitIds.Count; i++)
  424. {
  425. if (GetClothingFosterRed(_suitIds[i]) || GetClothingRenewRed(_suitIds[i])) return true;
  426. }
  427. return false;
  428. }
  429. /// <summary>
  430. /// 服装养护红点
  431. /// </summary>
  432. /// <param name="suitId"></param>
  433. /// <returns></returns>
  434. public bool GetClothingFosterRed(int suitId)
  435. {
  436. int index = SuitFosterDataManager.Instance.GetSuitFosterData(suitId).maintainStep;
  437. List<SuitFosterCfg> fosterCfgs = CommonDataManager.Tables.TblSuitFosterCfg.DataList
  438. .Where(a => a.SuitId == suitId).ToList();
  439. if (index >= fosterCfgs.Count)
  440. {
  441. return false;
  442. }
  443. if (!DressUpMenuSuitDataManager.CheckHaveSuit(suitId)) return false;
  444. SuitFosterCfg fosterCfg = fosterCfgs[index];
  445. if (fosterCfg.Materials.Count == 0) return false;
  446. CardData cardData = new CardData();
  447. List<ItemCfg> itemCfgs =
  448. CommonDataManager.Tables.TblItemCfg.DataList.Where(a => a.SuitId == suitId).ToList();
  449. for (int i = 0; i < itemCfgs.Count; i++)
  450. {
  451. if (itemCfgs[i].ItemType == ConstItemType.CARD)
  452. {
  453. cardData = CardDataManager.GetCardDataById(itemCfgs[i].Id);
  454. break;
  455. }
  456. }
  457. if (cardData != null && fosterCfg.CardStar > 0 && cardData.star < fosterCfg.CardStar)
  458. {
  459. return false;
  460. }
  461. long itemHas = ItemDataManager.GetItemNum(fosterCfg.Materials[0].ItemId);
  462. int itemNeed = fosterCfg.Materials[0].Count;
  463. long costHas = ItemDataManager.GetItemNum(fosterCfg.CostId);
  464. int costNeed = fosterCfg.CostNum;
  465. return itemHas >= itemNeed && costHas >= costNeed;
  466. }
  467. /// <summary>
  468. /// 服装换新红点
  469. /// </summary>
  470. /// <param name="suitId"></param>
  471. /// <returns></returns>
  472. public bool GetClothingRenewRed(int suitId)
  473. {
  474. SuitFosterData suitFosterData = SuitFosterDataManager.Instance.GetSuitFosterData(suitId);
  475. if (suitFosterData.makeNewState > 0) return false;
  476. List<SuitFosterCfg> fosterCfgs = CommonDataManager.Tables.TblSuitFosterCfg.DataList
  477. .Where(a => a.SuitId == suitId).ToList();
  478. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  479. SuitRenewCfg renewCfg = CommonDataManager.Tables.TblSuitRenewCfg.GetOrDefault(suitCfg.Rarity);
  480. if (suitFosterData.maintainStep >= fosterCfgs.Count
  481. && ItemDataManager.GetItemNum(renewCfg.CostId) >= renewCfg.CostNum
  482. && ItemDataManager.GetItemNum(renewCfg.Materials[0].ItemId) >= renewCfg.Materials[0].Count)
  483. {
  484. return true;
  485. }
  486. return false;
  487. }
  488. /// <summary>
  489. /// 服装合成红点
  490. /// </summary>
  491. /// <returns></returns>
  492. public bool GetClothingSyntheticRed()
  493. {
  494. return GetClothingSyntheticTabRed(1) || GetClothingSyntheticTabRed(2) || GetClothingSyntheticTabRed(3);
  495. }
  496. /// <summary>
  497. /// 服装合成页签红点
  498. /// </summary>
  499. /// <param name="tab"></param>
  500. /// <returns></returns>
  501. public bool GetClothingSyntheticTabRed(int tab)
  502. {
  503. List<SuitCfg> suitCfgs = CommonDataManager.Tables.TblSuitCfg.DataList.Where(a => a.SyntheticType == tab)
  504. .ToList();
  505. for (int i = 0; i < suitCfgs.Count; i++)
  506. {
  507. if (GetClothingSyntheticBonusRed(suitCfgs[i].Id) || GetClothingSyntheticRewardRed(suitCfgs[i].Id))
  508. return true;
  509. bool isLevelPass = InstanceZonesDataManager.CheckLevelPass(suitCfgs[i].SyntheticStoryLevelId);
  510. if (!isLevelPass) continue;
  511. if (GetClothingSyntheticRed(suitCfgs[i].Id)) return true;
  512. }
  513. return false;
  514. }
  515. /// <summary>
  516. /// 服装合成红点
  517. /// </summary>
  518. /// <param name="suitId"></param>
  519. /// <returns></returns>
  520. public bool GetClothingSyntheticRed(int suitId)
  521. {
  522. int status = DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId);
  523. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  524. if (suitCfg == null) return false;
  525. for (int i = 0; i < suitCfg.Parts.Count; i++)
  526. {
  527. if (CheckCanSynthetic(suitCfg.Parts[i])) return true;
  528. }
  529. return false;
  530. }
  531. /// <summary>
  532. /// 服装合成奖励红点
  533. /// </summary>
  534. /// <param name="suitId"></param>
  535. /// <returns></returns>
  536. public bool GetClothingSyntheticBonusRed(int suitId)
  537. {
  538. bool isLock = false;
  539. int status = DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId);
  540. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  541. if (suitCfg.SyntheticStoryLevelId > 0)
  542. {
  543. bool isLevelPass = InstanceZonesDataManager.CheckLevelPass(suitCfg.SyntheticStoryLevelId);
  544. if (!isLevelPass)
  545. {
  546. isLock = true;
  547. }
  548. }
  549. if (suitCfg.SyntheticPreSuitId > 0)
  550. {
  551. bool hasPreSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitCfg.SyntheticPreSuitId);
  552. if (!hasPreSuit)
  553. {
  554. isLock = true;
  555. }
  556. }
  557. return status == ConstBonusStatus.CAN_GET && !isLock;
  558. }
  559. /// <summary>
  560. /// 套装合成奖励2红点
  561. /// </summary>
  562. /// <param name="suitId"></param>
  563. /// <returns></returns>
  564. public bool GetClothingSyntheticRewardRed(int suitId)
  565. {
  566. bool isLock = false;
  567. int status = DressUpMenuSuitDataManager.GetSuitSyntheticRewardStatus(suitId);
  568. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  569. if (suitCfg.SyntheticStoryLevelId > 0)
  570. {
  571. bool isLevelPass = InstanceZonesDataManager.CheckLevelPass(suitCfg.SyntheticStoryLevelId);
  572. if (!isLevelPass)
  573. {
  574. isLock = true;
  575. }
  576. }
  577. if (suitCfg.SyntheticPreSuitId > 0)
  578. {
  579. bool hasPreSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitCfg.SyntheticPreSuitId);
  580. if (!hasPreSuit)
  581. {
  582. isLock = true;
  583. }
  584. }
  585. return status == ConstBonusStatus.CAN_GET && !isLock;
  586. }
  587. /// <summary>
  588. /// 合成-服装部件红点
  589. /// </summary>
  590. /// <param name="itemId"></param>
  591. /// <param name="showTips"></param>
  592. /// <returns></returns>
  593. public bool CheckCanSynthetic(int itemId)
  594. {
  595. //合成材料判断
  596. if (ItemDataManager.GetItemNum(itemId) > 0) return false;
  597. ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId);
  598. if (itemCfg == null || ItemDataManager.GetItemNum(itemCfg.SyntheticCostID) < itemCfg.SyntheticCostNum)
  599. {
  600. return false;
  601. }
  602. List<ItemData> materiarsOfSelectedItem =
  603. ItemUtil.CreateItemDataList(itemCfg.SyntheticMateriars.ToGfgGameItemParam());
  604. for (int i = 0; i < materiarsOfSelectedItem.Count; i++)
  605. {
  606. ItemData itemData = materiarsOfSelectedItem[i];
  607. long numSynthetic = ItemDataManager.GetItemNum(itemData.id);
  608. if (numSynthetic < itemData.num)
  609. {
  610. return false;
  611. }
  612. }
  613. return true;
  614. }
  615. /// <summary>
  616. /// 卡牌合成红点
  617. /// </summary>
  618. /// <param name="itemId"></param>
  619. /// <param name="showTips"></param>
  620. /// <returns></returns>
  621. public int count = 0;
  622. public bool CheckCardCanSynthetic(int itemId)
  623. {
  624. GetCardTimers(itemId).Coroutine();
  625. ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId);
  626. if (count >= itemCfg.SyntheticTimes)
  627. {
  628. return false;
  629. }
  630. if (itemCfg == null || ItemDataManager.GetItemNum(itemCfg.SyntheticCostID) < itemCfg.SyntheticCostNum ||
  631. itemCfg.SyntheticTimes <= 0)
  632. {
  633. return false;
  634. }
  635. List<ItemData> materiarsOfSelectedItem =
  636. ItemUtil.CreateItemDataList(itemCfg.SyntheticMateriars.ToGfgGameItemParam());
  637. for (int i = 0; i < materiarsOfSelectedItem.Count; i++)
  638. {
  639. ItemData itemData = materiarsOfSelectedItem[i];
  640. long numSynthetic = ItemDataManager.GetItemNum(itemData.id);
  641. if (numSynthetic < itemData.num)
  642. {
  643. return false;
  644. }
  645. }
  646. return true;
  647. }
  648. public async ETTask<bool> GetCardTimers(int itemId)
  649. {
  650. //合成材料判断
  651. var response = await ClothingSyntheticSProxy.GetCardSyntheticCount(itemId);
  652. count = response;
  653. return true;
  654. }
  655. /// <summary>
  656. /// 商城
  657. /// </summary>
  658. /// <returns></returns>
  659. public bool GetShopRed()
  660. {
  661. return GetChargeAddUpRewardRed() || GetGiftBagRewardRed() || GetGoldCardRewardRed() ||
  662. GetBlackCardRewardRed() || GetBlackCardClothingRed() || GetStoreBrocadeWeavRewardRed() ||
  663. GetGiftBagRebateRed() || GetGrowthFundRewardRed() ||
  664. ActivityAfuGiftDataManager.Instance.GetSummerGiftRewardAllState();
  665. }
  666. //商店-充值-会员中心
  667. public bool GetChargeAddUpRewardRed()
  668. {
  669. List<VipCfg> vipCfgs = CommonDataManager.Tables.TblVipCfg.DataList;
  670. // VipCfg[] vipCfgs = VipCfgArray.Instance.dataArray;
  671. for (int i = 1; i < vipCfgs.Count; i++)
  672. {
  673. bool isGet = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.VipGetStatus),
  674. vipCfgs[i].Id);
  675. if (!isGet && RoleDataManager.vipLv >= vipCfgs[i].Id) return true;
  676. }
  677. return GameGlobal.myNumericComponent.GetAsInt(NumericType.VipWeekGetStatus) == 0 &&
  678. RoleDataManager.vipLv > 0;
  679. }
  680. //商店-礼包-活动礼包
  681. public bool GetGiftBagRewardRed()
  682. {
  683. List<ShopCfg> shopCfgs = CommonDataManager.Tables.TblShopCfg.DataList.Where(a =>
  684. a.Menu1 == ConstStoreTabId.STORE_GIFT_BAG && a.Menu2 == ConstStoreSubId.STORE_GIFT_BAG_ACTIVITY)
  685. .ToList();
  686. shopCfgs = ShopDataManager.Instance.RemoveNotOpenCfg(shopCfgs);
  687. for (int i = 0; i < shopCfgs.Count; i++)
  688. {
  689. if (shopCfgs[i].Price == 0 &&
  690. ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgs[i].Id) < shopCfgs[i].MaxBuyNum) return true;
  691. }
  692. return false;
  693. }
  694. //商店-礼包-返利商城
  695. public bool GetGiftBagRebateRed()
  696. {
  697. List<ShopCfg> shopCfgs = CommonDataManager.Tables.TblShopCfg.DataList.Where(a =>
  698. a.Menu1 == ConstStoreTabId.STORE_GIFT_BAG && a.Menu2 == ConstStoreSubId.STORE_GIFT_BAG_REBATE).ToList();
  699. foreach (var info in shopCfgs)
  700. {
  701. var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(info.ItemId);
  702. if (weekGiftBoxState)
  703. return true;
  704. }
  705. return false;
  706. }
  707. /// <summary>
  708. /// 商城-月卡-成长基金
  709. /// </summary>
  710. /// <returns></returns>
  711. public bool GetGrowthFundBuy()
  712. {
  713. ShopCfg shopCfg =
  714. CommonDataManager.Tables.TblShopCfg.GetOrDefault(CommonDataManager.Tables.TblActivityOpenCfg
  715. .GetOrDefault(3002).Params1[0]);
  716. var remainBuyNum = shopCfg.MaxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.Id);
  717. if (remainBuyNum == 0)
  718. {
  719. //已售完
  720. return true;
  721. }
  722. else
  723. {
  724. //未售完
  725. return false;
  726. }
  727. }
  728. public bool GetGrowthFundRewardRed()
  729. {
  730. if (ShopDataManager.Instance.GrowthFundRewardList.Count ==
  731. CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count)
  732. {
  733. return false;
  734. }
  735. if (!GetGrowthFundBuy())
  736. {
  737. return false;
  738. }
  739. for (int i = 0; i < CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count - 1; i++)
  740. {
  741. if (RoleDataManager.lvl < CommonDataManager.Tables.TblGrowthFundCfg.DataList[i].Level)
  742. {
  743. //可领取数量和已领取数量比较
  744. if (i != ShopDataManager.Instance.GrowthFundRewardList.Count)
  745. {
  746. return true;
  747. }
  748. }
  749. }
  750. if (RoleDataManager.lvl >= CommonDataManager.Tables.TblGrowthFundCfg
  751. .DataList[CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count - 1].Level)
  752. {
  753. return true;
  754. }
  755. return false;
  756. }
  757. /// <summary>
  758. /// 商城-月卡-红包卡
  759. /// </summary>
  760. /// <returns></returns>
  761. public bool GetGoldCardRewardRed()
  762. {
  763. return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.Gold) &&
  764. GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardGoldReward) <= 0;
  765. }
  766. /// <summary>
  767. /// 商城-月卡-福气卡
  768. /// </summary>
  769. /// <returns></returns>
  770. public bool GetBlackCardRewardRed()
  771. {
  772. return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.BlackGold) &&
  773. GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardBlackGoldReward) <= 0;
  774. }
  775. /// <summary>
  776. /// 商城-月卡-福气卡-单品奖励
  777. /// </summary>
  778. /// <returns></returns>
  779. public bool GetBlackCardClothingRed()
  780. {
  781. int _year = TimeUtil.GetCurYear();
  782. int _month = TimeUtil.GetCurMonth();
  783. MonthlyCardClothesCfg clothesCfg = CommonDataManager.Tables.TblMonthlyCardClothesCfg.Get(_year, _month);
  784. return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.BlackGold) &&
  785. !MathUtil.isBitSet(
  786. GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardExclusiveClothesMouth), _month);
  787. }
  788. /// <summary>
  789. /// 商城-月卡-锦罗织造
  790. /// </summary>
  791. /// <returns></returns>
  792. public bool GetStoreBrocadeWeavRewardRed()
  793. {
  794. return TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.BattlePass)
  795. || BattlePassTaskDataManager.Instance.CheckStoreBrocadeWeavRed();
  796. }
  797. /// <summary>
  798. /// 联盟
  799. /// </summary>
  800. /// <returns></returns>
  801. public bool GetLeagueRed()
  802. {
  803. return GetLeagueMemberJoinRed() || LeagueDataManager.Instance.Type == LeagueJoinType.UnJoin ||
  804. GetLeagueGiftBoxRed() || GetLeaguePrayRed() || GetLeagueTeaPartyRed();
  805. }
  806. /// <summary>
  807. /// 联盟-成员申请
  808. /// </summary>
  809. /// <returns></returns>
  810. public bool GetLeagueMemberJoinRed()
  811. {
  812. LeagueHotelCfg hotelCfg =
  813. CommonDataManager.Tables.TblLeagueHotelCfg.GetOrDefault(LeagueDataManager.Instance.HotelLevel);
  814. int myPos = LeagueDataManager.Instance.GetMyPos();
  815. return LeagueDataManager.Instance.Type == LeagueJoinType.Join &&
  816. (myPos == LeaguePos.Owner || myPos == LeaguePos.SubOwner) &&
  817. LeagueDataManager.Instance.ListApplyDatas.Count > 0 &&
  818. LeagueDataManager.Instance.LeagueData.Num < hotelCfg.Limit;
  819. }
  820. /// <summary>
  821. /// 联盟-雅集福利
  822. /// </summary>
  823. /// <returns></returns>
  824. public bool GetLeagueGiftBoxRed()
  825. {
  826. if (LeagueDataManager.Instance.Type == LeagueJoinType.UnJoin) return false;
  827. List<LeagueGiftGetData> _getDatas = LeagueDataManager.Instance.GetGiftGetDatas();
  828. for (int i = 0; i < _getDatas.Count; i++)
  829. {
  830. if (!_getDatas[i].IsGet) return true;
  831. }
  832. return false;
  833. }
  834. /// <summary>
  835. /// 联盟-雅集祈福
  836. /// </summary>
  837. /// <returns></returns>
  838. public bool GetLeaguePrayRed()
  839. {
  840. return LeagueDataManager.Instance.GetPrayTimesByType(LeaguePrayType.First) == 0;
  841. }
  842. /// <summary>
  843. /// 联盟-茶话会
  844. /// </summary>
  845. /// <returns></returns>
  846. public bool GetLeagueTeaPartyRed()
  847. {
  848. return LeagueDataManager.Instance.CheckTeaPartyRewardCanGet();
  849. }
  850. /// <summary>
  851. /// 限时抽奖活动奖励
  852. /// </summary>
  853. /// <returns></returns>
  854. public bool GetActLuckyBoxRewardRed(int _typeId)
  855. {
  856. int _activityId = ActivityDataManager.Instance.actLuckyBoxId;
  857. var _allPlayTimes = ActivityDataManager.Instance.allPlayTimes;
  858. var _bonusState = ActivityDataManager.Instance.luckyBoxActBonusState;
  859. if (_typeId == ConstLimitTimeActivityType.ActLimitTsy)
  860. {
  861. _activityId = ActivityDataManager.Instance.actLimitTsyId;
  862. _allPlayTimes = ActivityDataManager.Instance.allTsyPlayTimes;
  863. _bonusState = ActivityDataManager.Instance.luckyActTsyBonusState;
  864. }
  865. else if (_typeId == ConstLimitTimeActivityType.ActLimitStlyc)
  866. {
  867. _activityId = ActivityDataManager.Instance.actLimitStlycId;
  868. _allPlayTimes = ActivityDataManager.Instance.allLimitStlycTimes;
  869. _bonusState = ActivityDataManager.Instance.limitStlycActBonusState;
  870. }
  871. if (_activityId <= 0) return false;
  872. List<ActivityLuckybonusCfg> _bonueCfgs =
  873. CommonDataManager.Tables.TblIActivityLuckybonusCfg.DataList.Where(a => a.Id == _activityId).ToList();
  874. for (int i = 0; i < _bonueCfgs.Count; i++)
  875. {
  876. int key = _bonueCfgs[i].Num;
  877. int state = _bonusState.ContainsKey(key) ? _bonusState[key] : 0;
  878. bool canGet = state < ConstBonusStatus.GOT && _allPlayTimes >= _bonueCfgs[i].Num;
  879. if (canGet) return true;
  880. }
  881. return false;
  882. }
  883. /// <summary>
  884. /// 限时抽奖活动任务奖励
  885. /// </summary>
  886. /// <returns></returns>
  887. public bool GetActLuckyBoxTaskdRed()
  888. {
  889. if (ActivityDataManager.Instance.actLuckyBoxId <= 0) return false;
  890. List<TaskCfg> _bonueCfgs = TaskDataManager.Instance.GetTaskCfgs(TaskFuncType.LuckyBoxActivity);
  891. for (int i = 0; i < _bonueCfgs.Count; i++)
  892. {
  893. int state = TaskDataManager.Instance.GetTaskStateById(_bonueCfgs[i].Id);
  894. if (state == ConstBonusStatus.CAN_GET) return true;
  895. }
  896. return false;
  897. }
  898. /// <summary>
  899. /// 限时抽奖剧情奖励
  900. /// </summary>
  901. /// <returns></returns>
  902. public bool GetActLuckyBoxStudioFilingRed()
  903. {
  904. if (ActivityDataManager.Instance.actLuckyBoxId <= 0) return false;
  905. var filingChapterId = StudioDataManager.Instance.GetLuckyBoxActivityID();
  906. StudioDataManager.Instance.filingChapterId = filingChapterId;
  907. var studioCfg = CommonDataManager.Tables.TblStudioCfg.GetOrDefault(filingChapterId);
  908. RoleLimitData limitData = RoleLimitDataManager.GetLimitData(studioCfg.Limit);
  909. if (StudioDataManager.Instance.GetStudioFilingRewardRed() ||
  910. limitData.TotalPlayMax - limitData.PlayTimes > 0)
  911. return true;
  912. return false;
  913. }
  914. /// <summary>
  915. /// 开服活动(神都宸游)
  916. /// </summary>
  917. /// <returns></returns>
  918. public bool GetOpenServerRed()
  919. {
  920. if (GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitStlyc) || GetGiftBagRewardRed() ||
  921. GetMeiRiTeHuiRed() || GetOpenServerStoryRed())
  922. return true;
  923. return false;
  924. }
  925. /// <summary>
  926. /// 摘星-每日特惠
  927. /// </summary>
  928. /// <returns></returns>
  929. public bool GetMeiRiTeHuiRed()
  930. {
  931. var activityInfoByTypeList =
  932. ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3);
  933. var list = activityInfoByTypeList
  934. .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
  935. if (list.Count == 0)
  936. {
  937. return false;
  938. }
  939. bool isSoldOut = true;
  940. foreach (var activityInfo in list)
  941. {
  942. ActivityOpenCfg activityOpenCfg =
  943. CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityInfo.ActivityId);
  944. var paramsArr = activityOpenCfg.Params1;
  945. foreach (var shopCfgId in paramsArr)
  946. {
  947. var shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault(shopCfgId);
  948. var remainBuyNum = shopCfg.MaxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgId);
  949. //只要有一个商品还能购买,就不是售罄
  950. if (remainBuyNum > 0)
  951. {
  952. isSoldOut = false;
  953. break;
  954. }
  955. }
  956. }
  957. if (isSoldOut)
  958. {
  959. return false;
  960. }
  961. return !LimitedTimeGiftBoxDataManager.Instance.IsOpenMeiRiTeHui;
  962. }
  963. /// <summary>
  964. /// 开服活动-剧情
  965. /// </summary>
  966. /// <returns></returns>
  967. public bool GetOpenServerStoryRed()
  968. {
  969. var activityId =
  970. ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitStlyc);
  971. if (activityId != 0)
  972. {
  973. var activityCfg = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityId);
  974. Dictionary<int, List<StoryLevelCfg>> storyLevelCfgs = new Dictionary<int, List<StoryLevelCfg>>();
  975. for (int i = 0; i < 4; i++)
  976. {
  977. ActivityStoryCfg activityStoryCfg =
  978. CommonDataManager.Tables.TblActivityStoryCfg.GetOrDefault(activityCfg.Params4[i]);
  979. var storyLevelCfg =
  980. CommonDataManager.Tables.TblStoryLevelCfg.DataList.Where(a =>
  981. a.Type == activityStoryCfg.Type && a.SubType == activityStoryCfg.SubType &&
  982. a.ChapterId == activityCfg.Params4[i]).ToList();
  983. storyLevelCfgs.Add(i, storyLevelCfg);
  984. if ((i == 0 && !InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i][0].Id)) || (i > 0 &&
  985. InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i - 1][0].Id) &&
  986. !InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i][0].Id) &&
  987. ItemDataManager.ItemCollect.ContainsKey(activityStoryCfg.NeedItems[0].ItemId) &&
  988. ItemDataManager.ItemCollect[activityStoryCfg.NeedItems[0].ItemId] >=
  989. activityStoryCfg.NeedItems[0].Count))
  990. {
  991. return true;
  992. }
  993. }
  994. }
  995. return false;
  996. }
  997. /// <summary>
  998. /// 背包中存在礼包就一直给主界面 背包 红点
  999. /// </summary>
  1000. /// <returns></returns>
  1001. public bool GetMainBagGiftRed()
  1002. {
  1003. return ItemDataManager.BagIsExistGiftBag();
  1004. }
  1005. // /// <summary>
  1006. // /// 背包内 是礼包物品就一直给红点
  1007. // /// </summary>
  1008. // /// <returns></returns>
  1009. // public bool GetBagGiftRed(int itemId)
  1010. // {
  1011. // ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
  1012. // if (itemCfg.itemType == ConstItemType.USEABLE)
  1013. // {
  1014. // if (itemCfg.subType == ConstItemSubType.USEABLE_GIFT_BAG_SELECTABLE ||
  1015. // itemCfg.subType == ConstItemSubType.USEABLE_GIFT_BAG_RANDOM)
  1016. // {
  1017. // return true;
  1018. // }
  1019. // }
  1020. //
  1021. // return false;
  1022. // }
  1023. /// <summary>
  1024. /// 福利大厅
  1025. /// </summary>
  1026. /// <returns></returns>
  1027. public bool GetDailyWelfareRed()
  1028. {
  1029. return GetLimiteChargeRewardRed() || GetSevenDayLoginRed() || DailySignRed() || DailySupplyRed() ||
  1030. GetLimiteChargeRewardRed(501);
  1031. }
  1032. /// <summary>
  1033. ///福利大厅-限时累充可领奖励红点
  1034. /// </summary>
  1035. /// <returns></returns>
  1036. public bool GetLimiteChargeRewardRed()
  1037. {
  1038. List<ActivityInfo> _limitChargeInfo =
  1039. ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLC);
  1040. for (int i = 0; i < _limitChargeInfo.Count; i++)
  1041. {
  1042. if (GetLimiteChargeRewardRed(_limitChargeInfo[i].ActivityId)) return true;
  1043. }
  1044. return false;
  1045. }
  1046. public bool GetLimiteChargeRewardRed(int activityId)
  1047. {
  1048. ActivityInfo _activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(activityId);
  1049. if (_activityInfo == null) return false;
  1050. List<ActivityRechargeCfg> _rechargeCfgs =
  1051. CommonDataManager.Tables.TblActivityRechargeCfg.DataList.Where(a => a.ActivityId == activityId)
  1052. .ToList();
  1053. for (int i = 0; i < _rechargeCfgs.Count; i++)
  1054. {
  1055. if (_activityInfo.CountValue >= _rechargeCfgs[i].Value &&
  1056. _activityInfo.GetRewards.IndexOf(_rechargeCfgs[i].Id) < 0)
  1057. {
  1058. return true;
  1059. }
  1060. }
  1061. return false;
  1062. }
  1063. /// <summary>
  1064. /// 福利大厅-七天登录
  1065. /// </summary>
  1066. /// <returns></returns>
  1067. public bool GetSevenDayLoginRed()
  1068. {
  1069. return ActivityDataManager.Instance.CanGetSevenDayBonus();
  1070. }
  1071. /// <summary>
  1072. /// 福利大厅-每日签到
  1073. /// </summary>
  1074. /// <returns></returns>
  1075. public bool DailySignRed()
  1076. {
  1077. int _signCount = MathUtil.CountOnes2(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignDay));
  1078. List<DailySignCfg> signCfgs =
  1079. CommonDataManager.Tables.TblDailySignCfg.DataList.Where(a => a.Month == TimeUtil.GetCurMonth())
  1080. .ToList();
  1081. for (int i = 0; i < signCfgs.Count; i++)
  1082. {
  1083. bool isGot = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignReward),
  1084. signCfgs[i].Day);
  1085. if (_signCount >= signCfgs[i].Day && !isGot) return true;
  1086. }
  1087. return !MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignDay),
  1088. TimeUtil.GetCurDay());
  1089. }
  1090. /// <summary>
  1091. /// 每日签到-是否签到
  1092. /// </summary>
  1093. /// <returns></returns>
  1094. public bool DailySignGot()
  1095. {
  1096. return !MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignDay),
  1097. TimeUtil.GetCurDay());
  1098. }
  1099. /// <summary>
  1100. /// 福利大厅-每日补给
  1101. /// </summary>
  1102. /// <returns></returns>
  1103. public bool DailySupplyRed()
  1104. {
  1105. for (int i = 0; i < CommonDataManager.Tables.TblDailySupplyCfg.DataList.Count; i++)
  1106. {
  1107. DailySupplyCfg supplyCfg = CommonDataManager.Tables.TblDailySupplyCfg.DataList[i];
  1108. if (DailySupplyRed(supplyCfg)) return true;
  1109. }
  1110. return false;
  1111. }
  1112. /// <summary>
  1113. /// 福利大厅-每日补给
  1114. /// </summary>
  1115. /// <returns></returns>
  1116. public bool DailySupplyRed(DailySupplyCfg supplyCfg)
  1117. {
  1118. long openTime = TimeUtil.GetCurDayTime(TimeUtil.GetDateTime(supplyCfg.OpenTime).ToString("HH:mm:ss"));
  1119. long endTime = TimeUtil.GetCurDayTime(TimeUtil.GetDateTime(supplyCfg.EndTime).ToString("HH:mm:ss"));
  1120. bool isGet = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.DailySupplyReward),
  1121. supplyCfg.Id);
  1122. long curTime = TimeHelper.ServerNow();
  1123. if (!isGet && curTime > openTime && curTime < endTime)
  1124. {
  1125. return true;
  1126. }
  1127. return false;
  1128. }
  1129. /// <summary>
  1130. /// 常驻礼包是否有需要领取的金币
  1131. /// </summary>
  1132. /// <returns></returns>
  1133. public bool GetGoldRed()
  1134. {
  1135. var shopCfgList = CommonDataManager.Tables.TblShopCfg.DataList
  1136. .Where(a => a.Menu1 == ConstStoreTabId.ENDURING_GIFT_BOX &&
  1137. a.Menu2 == ConstStoreSubId.ENDURING_GIFT_BOX_GOLD)
  1138. .OrderBy(a => a.RefreshType).ToList();
  1139. foreach (var shopCfg in shopCfgList)
  1140. {
  1141. var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(shopCfg.ItemId);
  1142. if (weekGiftBoxState)
  1143. {
  1144. return true;
  1145. }
  1146. }
  1147. return false;
  1148. }
  1149. /// <summary>
  1150. /// 常驻礼包是否有需要领取的体力
  1151. /// </summary>
  1152. /// <returns></returns>
  1153. public bool GetPowerRed()
  1154. {
  1155. var shopCfgList = CommonDataManager.Tables.TblShopCfg.DataList
  1156. .Where(a => a.Menu1 == ConstStoreTabId.ENDURING_GIFT_BOX &&
  1157. a.Menu2 == ConstStoreSubId.ENDURING_GIFT_BOX_POWER)
  1158. .OrderBy(a => a.RefreshType).ToList();
  1159. foreach (var shopCfg in shopCfgList)
  1160. {
  1161. var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(shopCfg.ItemId);
  1162. if (weekGiftBoxState)
  1163. {
  1164. return true;
  1165. }
  1166. }
  1167. return false;
  1168. }
  1169. public bool GetActivityWanShiLiRed()
  1170. {
  1171. return ActivityWanShiLiDataManager.Instance.CanGetReward();
  1172. }
  1173. public bool GetActivityYuanXiaoRed()
  1174. {
  1175. return ActivityGetYuanXiaoDataManager.Instance.HaveNewLevelCanPlay()
  1176. || ActivityGetYuanXiaoDataManager.Instance.ShowTaskRedDots(TaskFuncType.YuanXiaoActivity);
  1177. }
  1178. public bool GetActivityFYJYRed()
  1179. {
  1180. return ActivityFYJYDataManager.Instance.CheckRed();
  1181. }
  1182. /// <summary>
  1183. /// 摘星免费抽奖
  1184. /// </summary>
  1185. /// <returns></returns>
  1186. public bool GetLuckyBoxFreeTimes()
  1187. {
  1188. if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(LuckyBoxView).Name, false))
  1189. return false;
  1190. long freeTime = LuckyBoxDataManager.Instance.GetFreeTime(LuckyBoxDataManager.BOX_ID_2);
  1191. if (freeTime > 0)
  1192. {
  1193. if (freeTime - TimeHelper.ServerNow() < 0)
  1194. return true;
  1195. }
  1196. freeTime = LuckyBoxDataManager.Instance.GetFreeTime(LuckyBoxDataManager.BOX_ID_3);
  1197. if (freeTime > 0)
  1198. {
  1199. if (freeTime - TimeHelper.ServerNow() < 0)
  1200. return true;
  1201. }
  1202. return false;
  1203. }
  1204. public bool CheckActivityLuckyBoxCanChallenge(int limit, int activityID)
  1205. {
  1206. int chapterID = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityID).Params3[0];
  1207. ActivityFightCfg chapterCfg = CommonDataManager.Tables.TblActivityFightCfg.GetOrDefault(chapterID);
  1208. var list = CommonDataManager.Tables.TblStoryLevelCfg.DataList.Where(a =>
  1209. a.Type == chapterCfg.Type && a.SubType == chapterCfg.SubType &&
  1210. a.ChapterId == chapterCfg.Id).ToList();
  1211. RoleLimitData limitData = RoleLimitDataManager.GetLimitData(limit);
  1212. int times = limitData.TotalPlayMax - limitData.PlayTimes;
  1213. bool canChallenge = ((times > 0) && (!InstanceZonesDataManager.CheckLevelPass(list[list.Count - 1].Id)));
  1214. return canChallenge;
  1215. }
  1216. public bool GetActivityLuckyBoxRed(int activityID)
  1217. {
  1218. int chapterID = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityID).Params3[0];
  1219. return GetMeiRiTeHuiRed()
  1220. || GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitLuckyBox)
  1221. || GetActLuckyBoxTaskdRed() || CheckActivityLuckyBoxCanChallenge(300, chapterID) ||
  1222. GetGiftBagRewardRed();
  1223. }
  1224. }
  1225. }