RedDotDataManager.cs 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372
  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.GetGroup1ByFunId(typeof(StudioFilingView).Name);
  237. for (int i = 0; i < studioCfgs.Count; i++)
  238. {
  239. if (!checkCurChapter && studioCfgs[i].Id == StudioDataManager.Instance.filingChapterId) continue;
  240. if (StudioDataManager.Instance.GetFilingRewardState(studioCfgs[i].Id)) return true;
  241. }
  242. return false;
  243. }
  244. /// <summary>
  245. /// 寻奇访胜
  246. /// </summary>
  247. /// <returns></returns>
  248. public bool GetTravelRed()
  249. {
  250. if (TravelDataManager.Instance.TravelData == null) return false;
  251. return TravelDataManager.Instance.TravelData.Status == (int)TravelGuideType.TravelComplete;
  252. }
  253. /// <summary>
  254. /// 千山万水-图鉴红点
  255. /// </summary>
  256. /// <returns></returns>
  257. public bool GetTravelGuideRed()
  258. {
  259. if (TravelDataManager.Instance.ListTravelAreaRewardState == null ||
  260. TravelDataManager.Instance.ListTravelAreaRewardState.Count == 0) return false;
  261. for (int i = 0; i < TravelDataManager.Instance.ListTravelAreaRewardState.Count; i++)
  262. {
  263. if (TravelDataManager.Instance.ListTravelAreaRewardState[i] == ConstBonusStatus.CAN_GET)
  264. {
  265. return true;
  266. }
  267. }
  268. return false;
  269. }
  270. /// <summary>
  271. /// 千山万水-图鉴区域红点
  272. /// </summary>
  273. /// <param name="areaId"></param>
  274. /// <returns></returns>
  275. public bool GetTravelGuideAreaRed(int areaId)
  276. {
  277. if (TravelDataManager.Instance.ListTravelAreaRewardState == null ||
  278. TravelDataManager.Instance.ListTravelAreaRewardState.Count == 0) return false;
  279. return TravelDataManager.Instance.GetGuideRewardStateByAreaId(areaId) == ConstBonusStatus.CAN_GET;
  280. }
  281. /// <summary>
  282. /// 头像-获得新头像红点
  283. /// </summary>
  284. /// <returns></returns>
  285. public bool GetHeadRed()
  286. {
  287. return RoleInfoManager.Instance.newHeadDatas.Count > 0;
  288. }
  289. /// <summary>
  290. /// 头像-获得新头像框红点
  291. /// </summary>
  292. /// <returns></returns>
  293. public bool GetHeadBorderRed()
  294. {
  295. return RoleInfoManager.Instance.newHeadBorderDatas.Count > 0;
  296. }
  297. /// <summary>
  298. /// 词牌
  299. /// </summary>
  300. /// <returns></returns>
  301. public bool GetCardRed()
  302. {
  303. if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(nameof(CardDetailView), false)) return false;
  304. List<CardData> cardDatas = CardDataManager.GetCardListByRoleType(0);
  305. for (int i = 0; i < cardDatas.Count; i++)
  306. {
  307. if (GetCardRed(cardDatas[i].id)) return true;
  308. }
  309. return false;
  310. }
  311. /// <summary>
  312. /// 词牌
  313. /// </summary>
  314. /// <returns></returns>
  315. public bool GetCardRed(int cardId)
  316. {
  317. // GetCardUpStarRed(cardId) || GetCardUpLvRed(cardId) ||
  318. return GetCardStarReward(cardId) || GetCardSkillsRed(cardId) || CheckCardCanSynthetic(cardId);
  319. }
  320. /// <summary>
  321. /// 词牌-升级红点
  322. /// </summary>
  323. /// <param name="cardId"></param>
  324. /// <returns></returns>
  325. public bool GetCardUpLvRed(int cardId)
  326. {
  327. CardData cardData = CardDataManager.GetCardDataById(cardId);
  328. int maxLv = CommonDataManager.Tables.TblRoleLevelCfg.GetOrDefault(RoleDataManager.lvl).CardLeverLimit;
  329. if (cardData.lv >= maxLv) return false;
  330. if (cardData.lv == CommonDataManager.Tables.TblCardRarityCfg.GetOrDefault(cardData.itemCfg.Rarity)
  331. .MaxCardLvl) return false;
  332. int curExp = cardData.exp;
  333. int needExp = CommonDataManager.Tables.TblCardLvlCfg.Get(cardData.itemCfg.Rarity, cardData.lv).NeedExp;
  334. int cardUpLvGoldsNeed = 0;
  335. var materials = CommonDataManager.Tables.TblGlobalCfg.UpgradeCardItems;
  336. for (int i = 0; i < materials.Count; i++)
  337. {
  338. var cardUpLvGolds = CommonDataManager.Tables.TblItemCfg.GetOrDefault(materials[i]).CardUpLvGolds[i];
  339. for (int j = 0; j < ItemDataManager.GetItemNum(materials[i]); j++)
  340. {
  341. cardUpLvGoldsNeed += cardUpLvGolds.Count;
  342. curExp += CommonDataManager.Tables.TblItemCfg.GetOrDefault(materials[i]).CardUpLvExp;
  343. if (curExp >= needExp && ItemDataManager.GetItemNum(cardUpLvGolds.ItemId) >= cardUpLvGoldsNeed)
  344. return true;
  345. }
  346. }
  347. return false;
  348. }
  349. /// <summary>
  350. /// 词牌-升星红点
  351. /// </summary>
  352. /// <param name="cardId"></param>
  353. /// <returns></returns>
  354. public bool GetCardUpStarRed(int cardId)
  355. {
  356. CardData cardData = CardDataManager.GetCardDataById(cardId);
  357. List<CardStarCfg> starCfgs = CommonDataManager.Tables.TblCardStarCfg.GetGroup1ByCardId(cardId);
  358. if (cardData.star >= starCfgs.Count) return false;
  359. CardStarCfg starCfg = CommonDataManager.Tables.TblCardStarCfg.Get(cardId, cardData.star);
  360. if (ItemDataManager.GetItemNum(starCfg.CostID) < starCfg.CostNum) return false;
  361. if (cardData.lv < starCfg.NeedLv) return false;
  362. if (CardDataManager.GetUpStarEnoughMaterial(cardId) == false) return false;
  363. return true;
  364. }
  365. /// <summary>
  366. /// 词牌-词牌技能升级
  367. /// </summary>
  368. /// <param name="cardId"></param>
  369. /// <returns></returns>
  370. public bool GetCardSkillsRed(int cardId)
  371. {
  372. List<PassivitySkillCfg> skillCfgs = CommonDataManager.Tables.TblPassivitySkillCfg.GetGroup1ByCardId(cardId);
  373. for (int i = 0; i < skillCfgs.Count; i++)
  374. {
  375. if (GetCardSkillRed(skillCfgs[i].SkillId)) return true;
  376. }
  377. return false;
  378. }
  379. /// <summary>
  380. /// 词牌-词牌技能升级
  381. /// </summary>
  382. /// <param name="skillId"></param>
  383. /// <returns></returns>
  384. public bool GetCardSkillRed(int skillId)
  385. {
  386. PassivitySkillCfg skillCfg = CommonDataManager.Tables.TblPassivitySkillCfg.GetOrDefault(skillId);
  387. int skillLv = SkillDataManager.Instance.GetCardSkillLv(skillCfg.CardId, skillId);
  388. PassivitySkillLvlCfg skillLvlCfg =
  389. CommonDataManager.Tables.TblPassivitySkillLvlCfg.Get(skillLv, skillId);
  390. PassivitySkillLvlCfg nextSkillLvlCfg =
  391. CommonDataManager.Tables.TblPassivitySkillLvlCfg.Get(skillLv + 1, skillId);
  392. if (nextSkillLvlCfg == null || skillLvlCfg.Materiars.Count == 0) return false;
  393. long itemHas = ItemDataManager.GetItemNum(skillLvlCfg.Materiars[0][0]);
  394. int itemNeed = skillLvlCfg.Materiars[0][1];
  395. long costHas = ItemDataManager.GetItemNum(skillLvlCfg.CostID);
  396. int costNeed = skillLvlCfg.CostNum;
  397. return itemHas >= itemNeed && costHas >= costNeed;
  398. }
  399. //词牌-词牌升星奖励状态
  400. public bool GetCardStarReward(int cardId)
  401. {
  402. CardData cardData = CardDataManager.GetCardDataById(cardId);
  403. List<CardStarCfg> cardStarCfgs = CommonDataManager.Tables.TblCardStarCfg.GetGroup1ByCardId(cardId);
  404. for (int i = 0; i < cardStarCfgs.Count; i++)
  405. {
  406. if (cardStarCfgs[i].Rewards.Count > 0 &&
  407. cardData.starRewardsState.ContainsKey(cardStarCfgs[i].StarLvl) &&
  408. cardData.starRewardsState[cardStarCfgs[i].StarLvl] == ConstBonusStatus.CAN_GET) return true;
  409. }
  410. return false;
  411. }
  412. /// <summary>
  413. /// 服装养护红点
  414. /// </summary>
  415. /// <returns></returns>
  416. public bool GetClothingFosterRed()
  417. {
  418. List<int> _suitIds = SuitUtil.GetClothingFosterSuitIdList(true, true, 0);
  419. for (int i = 0; i < _suitIds.Count; i++)
  420. {
  421. if (GetClothingFosterRed(_suitIds[i]) || GetClothingRenewRed(_suitIds[i])) return true;
  422. }
  423. return false;
  424. }
  425. /// <summary>
  426. /// 服装养护红点
  427. /// </summary>
  428. /// <param name="suitId"></param>
  429. /// <returns></returns>
  430. public bool GetClothingFosterRed(int suitId)
  431. {
  432. int index = SuitFosterDataManager.Instance.GetSuitFosterData(suitId).maintainStep;
  433. List<SuitFosterCfg> fosterCfgs = CommonDataManager.Tables.TblSuitFosterCfg.GetGroup1BySuitId(suitId);
  434. if (index >= fosterCfgs.Count)
  435. {
  436. return false;
  437. }
  438. if (!DressUpMenuSuitDataManager.CheckHaveSuit(suitId)) return false;
  439. SuitFosterCfg fosterCfg = fosterCfgs[index];
  440. if (fosterCfg.Materials.Count == 0) return false;
  441. CardData cardData = new CardData();
  442. List<ItemCfg> itemCfgs = CommonDataManager.Tables.TblItemCfg.GetGroup1BySuitId(suitId);
  443. for (int i = 0; i < itemCfgs.Count; i++)
  444. {
  445. if (itemCfgs[i].ItemType == ConstItemType.CARD)
  446. {
  447. cardData = CardDataManager.GetCardDataById(itemCfgs[i].Id);
  448. break;
  449. }
  450. }
  451. if (cardData != null && fosterCfg.CardStar > 0 && cardData.star < fosterCfg.CardStar)
  452. {
  453. return false;
  454. }
  455. long itemHas = ItemDataManager.GetItemNum(fosterCfg.Materials[0].ItemId);
  456. int itemNeed = fosterCfg.Materials[0].Count;
  457. long costHas = ItemDataManager.GetItemNum(fosterCfg.CostId);
  458. int costNeed = fosterCfg.CostNum;
  459. return itemHas >= itemNeed && costHas >= costNeed;
  460. }
  461. /// <summary>
  462. /// 服装换新红点
  463. /// </summary>
  464. /// <param name="suitId"></param>
  465. /// <returns></returns>
  466. public bool GetClothingRenewRed(int suitId)
  467. {
  468. SuitFosterData suitFosterData = SuitFosterDataManager.Instance.GetSuitFosterData(suitId);
  469. if (suitFosterData.makeNewState > 0) return false;
  470. List<SuitFosterCfg> fosterCfgs = CommonDataManager.Tables.TblSuitFosterCfg.GetGroup1BySuitId(suitId);
  471. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  472. SuitRenewCfg renewCfg = CommonDataManager.Tables.TblSuitRenewCfg.GetOrDefault(suitCfg.Rarity);
  473. if (suitFosterData.maintainStep >= fosterCfgs.Count
  474. && ItemDataManager.GetItemNum(renewCfg.CostId) >= renewCfg.CostNum
  475. && ItemDataManager.GetItemNum(renewCfg.Materials[0].ItemId) >= renewCfg.Materials[0].Count)
  476. {
  477. return true;
  478. }
  479. return false;
  480. }
  481. /// <summary>
  482. /// 服装合成红点
  483. /// </summary>
  484. /// <returns></returns>
  485. public bool GetClothingSyntheticRed()
  486. {
  487. return GetClothingSyntheticTabRed(1) || GetClothingSyntheticTabRed(2) || GetClothingSyntheticTabRed(3);
  488. }
  489. /// <summary>
  490. /// 服装合成页签红点
  491. /// </summary>
  492. /// <param name="tab"></param>
  493. /// <returns></returns>
  494. public bool GetClothingSyntheticTabRed(int tab)
  495. {
  496. List<SuitCfg> suitCfgs = CommonDataManager.Tables.TblSuitCfg.GetGroup1BySyntheticType(tab);
  497. for (int i = 0; i < suitCfgs.Count; i++)
  498. {
  499. if (GetClothingSyntheticBonusRed(suitCfgs[i].Id) || GetClothingSyntheticRewardRed(suitCfgs[i].Id))
  500. return true;
  501. bool isLevelPass = InstanceZonesDataManager.CheckLevelPass(suitCfgs[i].SyntheticStoryLevelId);
  502. if (!isLevelPass) continue;
  503. if (GetClothingSyntheticRed(suitCfgs[i].Id)) return true;
  504. }
  505. return false;
  506. }
  507. /// <summary>
  508. /// 服装合成红点
  509. /// </summary>
  510. /// <param name="suitId"></param>
  511. /// <returns></returns>
  512. public bool GetClothingSyntheticRed(int suitId)
  513. {
  514. int status = DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId);
  515. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  516. if (suitCfg == null) return false;
  517. for (int i = 0; i < suitCfg.Parts.Count; i++)
  518. {
  519. if (CheckCanSynthetic(suitCfg.Parts[i])) return true;
  520. }
  521. return false;
  522. }
  523. /// <summary>
  524. /// 服装合成奖励红点
  525. /// </summary>
  526. /// <param name="suitId"></param>
  527. /// <returns></returns>
  528. public bool GetClothingSyntheticBonusRed(int suitId)
  529. {
  530. bool isLock = false;
  531. int status = DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId);
  532. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  533. if (suitCfg.SyntheticStoryLevelId > 0)
  534. {
  535. bool isLevelPass = InstanceZonesDataManager.CheckLevelPass(suitCfg.SyntheticStoryLevelId);
  536. if (!isLevelPass)
  537. {
  538. isLock = true;
  539. }
  540. }
  541. if (suitCfg.SyntheticPreSuitId > 0)
  542. {
  543. bool hasPreSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitCfg.SyntheticPreSuitId);
  544. if (!hasPreSuit)
  545. {
  546. isLock = true;
  547. }
  548. }
  549. return status == ConstBonusStatus.CAN_GET && !isLock;
  550. }
  551. /// <summary>
  552. /// 套装合成奖励2红点
  553. /// </summary>
  554. /// <param name="suitId"></param>
  555. /// <returns></returns>
  556. public bool GetClothingSyntheticRewardRed(int suitId)
  557. {
  558. bool isLock = false;
  559. int status = DressUpMenuSuitDataManager.GetSuitSyntheticRewardStatus(suitId);
  560. SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId);
  561. if (suitCfg.SyntheticStoryLevelId > 0)
  562. {
  563. bool isLevelPass = InstanceZonesDataManager.CheckLevelPass(suitCfg.SyntheticStoryLevelId);
  564. if (!isLevelPass)
  565. {
  566. isLock = true;
  567. }
  568. }
  569. if (suitCfg.SyntheticPreSuitId > 0)
  570. {
  571. bool hasPreSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitCfg.SyntheticPreSuitId);
  572. if (!hasPreSuit)
  573. {
  574. isLock = true;
  575. }
  576. }
  577. return status == ConstBonusStatus.CAN_GET && !isLock;
  578. }
  579. /// <summary>
  580. /// 合成-服装部件红点
  581. /// </summary>
  582. /// <param name="itemId"></param>
  583. /// <param name="showTips"></param>
  584. /// <returns></returns>
  585. public bool CheckCanSynthetic(int itemId)
  586. {
  587. //合成材料判断
  588. if (ItemDataManager.GetItemNum(itemId) > 0) return false;
  589. ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId);
  590. if (itemCfg == null || ItemDataManager.GetItemNum(itemCfg.SyntheticCostID) < itemCfg.SyntheticCostNum)
  591. {
  592. return false;
  593. }
  594. List<ItemData> materiarsOfSelectedItem = ItemUtil.CreateItemDataList(itemCfg.SyntheticMateriars.ToGfgGameItemParam());
  595. for (int i = 0; i < materiarsOfSelectedItem.Count; i++)
  596. {
  597. ItemData itemData = materiarsOfSelectedItem[i];
  598. long numSynthetic = ItemDataManager.GetItemNum(itemData.id);
  599. if (numSynthetic < itemData.num)
  600. {
  601. return false;
  602. }
  603. }
  604. return true;
  605. }
  606. /// <summary>
  607. /// 卡牌合成红点
  608. /// </summary>
  609. /// <param name="itemId"></param>
  610. /// <param name="showTips"></param>
  611. /// <returns></returns>
  612. public int count = 0;
  613. public bool CheckCardCanSynthetic(int itemId)
  614. {
  615. GetCardTimers(itemId).Coroutine();
  616. ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId);
  617. if (count >= itemCfg.SyntheticTimes)
  618. {
  619. return false;
  620. }
  621. if (itemCfg == null || ItemDataManager.GetItemNum(itemCfg.SyntheticCostID) < itemCfg.SyntheticCostNum ||
  622. itemCfg.SyntheticTimes <= 0)
  623. {
  624. return false;
  625. }
  626. List<ItemData> materiarsOfSelectedItem = ItemUtil.CreateItemDataList(itemCfg.SyntheticMateriars.ToGfgGameItemParam());
  627. for (int i = 0; i < materiarsOfSelectedItem.Count; i++)
  628. {
  629. ItemData itemData = materiarsOfSelectedItem[i];
  630. long numSynthetic = ItemDataManager.GetItemNum(itemData.id);
  631. if (numSynthetic < itemData.num)
  632. {
  633. return false;
  634. }
  635. }
  636. return true;
  637. }
  638. public async ETTask<bool> GetCardTimers(int itemId)
  639. {
  640. //合成材料判断
  641. var response = await ClothingSyntheticSProxy.GetCardSyntheticCount(itemId);
  642. count = response;
  643. return true;
  644. }
  645. /// <summary>
  646. /// 商城
  647. /// </summary>
  648. /// <returns></returns>
  649. public bool GetShopRed()
  650. {
  651. return GetChargeAddUpRewardRed() || GetGiftBagRewardRed() || GetGoldCardRewardRed() ||
  652. GetBlackCardRewardRed() || GetBlackCardClothingRed() || GetStoreBrocadeWeavRewardRed() ||
  653. GetGiftBagRebateRed() || GetGrowthFundRewardRed() ||
  654. ActivityAfuGiftDataManager.Instance.GetSummerGiftRewardAllState();
  655. }
  656. //商店-充值-会员中心
  657. public bool GetChargeAddUpRewardRed()
  658. {
  659. List<VipCfg> vipCfgs = CommonDataManager.Tables.TblVipCfg.DataList;
  660. // VipCfg[] vipCfgs = VipCfgArray.Instance.dataArray;
  661. for (int i = 1; i < vipCfgs.Count; i++)
  662. {
  663. bool isGet = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.VipGetStatus),
  664. vipCfgs[i].Id);
  665. if (!isGet && RoleDataManager.vipLv >= vipCfgs[i].Id) return true;
  666. }
  667. return GameGlobal.myNumericComponent.GetAsInt(NumericType.VipWeekGetStatus) == 0 &&
  668. RoleDataManager.vipLv > 0;
  669. }
  670. //商店-礼包-活动礼包
  671. public bool GetGiftBagRewardRed()
  672. {
  673. List<ShopCfg> shopCfgs = CommonDataManager.Tables.TblShopCfg.GetGroup1ByMenu1AndMenu2(ConstStoreTabId.STORE_GIFT_BAG,
  674. ConstStoreSubId.STORE_GIFT_BAG_ACTIVITY);
  675. shopCfgs = ShopDataManager.Instance.RemoveNotOpenCfg(shopCfgs);
  676. for (int i = 0; i < shopCfgs.Count; i++)
  677. {
  678. if (shopCfgs[i].Price == 0 &&
  679. ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgs[i].Id) < shopCfgs[i].MaxBuyNum) return true;
  680. }
  681. return false;
  682. }
  683. //商店-礼包-返利商城
  684. public bool GetGiftBagRebateRed()
  685. {
  686. List<ShopCfg> shopCfgs = CommonDataManager.Tables.TblShopCfg.GetGroup1ByMenu1AndMenu2(ConstStoreTabId.STORE_GIFT_BAG,
  687. ConstStoreSubId.STORE_GIFT_BAG_REBATE);
  688. foreach (var info in shopCfgs)
  689. {
  690. var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(info.ItemId);
  691. if (weekGiftBoxState)
  692. return true;
  693. }
  694. return false;
  695. }
  696. /// <summary>
  697. /// 商城-月卡-成长基金
  698. /// </summary>
  699. /// <returns></returns>
  700. public bool GetGrowthFundBuy()
  701. {
  702. ShopCfg shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault( CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(3002).Params1[0]);
  703. var remainBuyNum = shopCfg.MaxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.Id);
  704. if (remainBuyNum == 0)
  705. {
  706. //已售完
  707. return true;
  708. }
  709. else
  710. {
  711. //未售完
  712. return false;
  713. }
  714. }
  715. public bool GetGrowthFundRewardRed()
  716. {
  717. if (ShopDataManager.Instance.GrowthFundRewardList.Count == CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count )
  718. {
  719. return false;
  720. }
  721. if (!GetGrowthFundBuy())
  722. {
  723. return false;
  724. }
  725. for (int i = 0; i < CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count - 1; i++)
  726. {
  727. if (RoleDataManager.lvl < CommonDataManager.Tables.TblGrowthFundCfg.DataList[i].Level)
  728. {
  729. //可领取数量和已领取数量比较
  730. if (i != ShopDataManager.Instance.GrowthFundRewardList.Count)
  731. {
  732. return true;
  733. }
  734. }
  735. }
  736. if (RoleDataManager.lvl >= CommonDataManager.Tables.TblGrowthFundCfg.DataList[CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count - 1].Level)
  737. {
  738. return true;
  739. }
  740. return false;
  741. }
  742. /// <summary>
  743. /// 商城-月卡-红包卡
  744. /// </summary>
  745. /// <returns></returns>
  746. public bool GetGoldCardRewardRed()
  747. {
  748. return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.Gold) &&
  749. GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardGoldReward) <= 0;
  750. }
  751. /// <summary>
  752. /// 商城-月卡-福气卡
  753. /// </summary>
  754. /// <returns></returns>
  755. public bool GetBlackCardRewardRed()
  756. {
  757. return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.BlackGold) &&
  758. GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardBlackGoldReward) <= 0;
  759. }
  760. /// <summary>
  761. /// 商城-月卡-福气卡-单品奖励
  762. /// </summary>
  763. /// <returns></returns>
  764. public bool GetBlackCardClothingRed()
  765. {
  766. int _year = TimeUtil.GetCurYear();
  767. int _month = TimeUtil.GetCurMonth();
  768. MonthlyCardClothesCfg clothesCfg = CommonDataManager.Tables.TblMonthlyCardClothesCfg.Get(_year, _month);
  769. return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.BlackGold) &&
  770. !MathUtil.isBitSet(
  771. GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardExclusiveClothesMouth), _month);
  772. }
  773. /// <summary>
  774. /// 商城-月卡-锦罗织造
  775. /// </summary>
  776. /// <returns></returns>
  777. public bool GetStoreBrocadeWeavRewardRed()
  778. {
  779. return TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.BattlePass)
  780. || BattlePassTaskDataManager.Instance.CheckStoreBrocadeWeavRed();
  781. }
  782. /// <summary>
  783. /// 联盟
  784. /// </summary>
  785. /// <returns></returns>
  786. public bool GetLeagueRed()
  787. {
  788. return GetLeagueMemberJoinRed() || LeagueDataManager.Instance.Type == LeagueJoinType.UnJoin ||
  789. GetLeagueGiftBoxRed() || GetLeaguePrayRed() || GetLeagueTeaPartyRed();
  790. }
  791. /// <summary>
  792. /// 联盟-成员申请
  793. /// </summary>
  794. /// <returns></returns>
  795. public bool GetLeagueMemberJoinRed()
  796. {
  797. LeagueHotelCfg hotelCfg = CommonDataManager.Tables.TblLeagueHotelCfg.GetOrDefault(LeagueDataManager.Instance.HotelLevel);
  798. int myPos = LeagueDataManager.Instance.GetMyPos();
  799. return LeagueDataManager.Instance.Type == LeagueJoinType.Join &&
  800. (myPos == LeaguePos.Owner || myPos == LeaguePos.SubOwner) &&
  801. LeagueDataManager.Instance.ListApplyDatas.Count > 0 &&
  802. LeagueDataManager.Instance.LeagueData.Num < hotelCfg.Limit;
  803. }
  804. /// <summary>
  805. /// 联盟-雅集福利
  806. /// </summary>
  807. /// <returns></returns>
  808. public bool GetLeagueGiftBoxRed()
  809. {
  810. if (LeagueDataManager.Instance.Type == LeagueJoinType.UnJoin) return false;
  811. List<LeagueGiftGetData> _getDatas = LeagueDataManager.Instance.GetGiftGetDatas();
  812. for (int i = 0; i < _getDatas.Count; i++)
  813. {
  814. if (!_getDatas[i].IsGet) return true;
  815. }
  816. return false;
  817. }
  818. /// <summary>
  819. /// 联盟-雅集祈福
  820. /// </summary>
  821. /// <returns></returns>
  822. public bool GetLeaguePrayRed()
  823. {
  824. return LeagueDataManager.Instance.GetPrayTimesByType(LeaguePrayType.First) == 0;
  825. }
  826. /// <summary>
  827. /// 联盟-茶话会
  828. /// </summary>
  829. /// <returns></returns>
  830. public bool GetLeagueTeaPartyRed()
  831. {
  832. return LeagueDataManager.Instance.CheckTeaPartyRewardCanGet();
  833. }
  834. /// <summary>
  835. /// 限时抽奖活动奖励
  836. /// </summary>
  837. /// <returns></returns>
  838. public bool GetActLuckyBoxRewardRed(int _typeId)
  839. {
  840. int _activityId = ActivityDataManager.Instance.actLuckyBoxId;
  841. var _allPlayTimes = ActivityDataManager.Instance.allPlayTimes;
  842. var _bonusState = ActivityDataManager.Instance.luckyBoxActBonusState;
  843. if (_typeId == ConstLimitTimeActivityType.ActLimitTsy)
  844. {
  845. _activityId = ActivityDataManager.Instance.actLimitTsyId;
  846. _allPlayTimes = ActivityDataManager.Instance.allTsyPlayTimes;
  847. _bonusState = ActivityDataManager.Instance.luckyActTsyBonusState;
  848. }
  849. else if (_typeId == ConstLimitTimeActivityType.ActLimitStlyc)
  850. {
  851. _activityId = ActivityDataManager.Instance.actLimitStlycId;
  852. _allPlayTimes = ActivityDataManager.Instance.allLimitStlycTimes;
  853. _bonusState = ActivityDataManager.Instance.limitStlycActBonusState;
  854. }
  855. if (_activityId <= 0) return false;
  856. List<ActivityLuckybonusCfg> _bonueCfgs = CommonDataManager.Tables.TblIActivityLuckybonusCfg.GetGroup1ById(_activityId);
  857. for (int i = 0; i < _bonueCfgs.Count; i++)
  858. {
  859. int key = _bonueCfgs[i].Num;
  860. int state = _bonusState.ContainsKey(key) ? _bonusState[key] : 0;
  861. bool canGet = state < ConstBonusStatus.GOT && _allPlayTimes >= _bonueCfgs[i].Num;
  862. if (canGet) return true;
  863. }
  864. return false;
  865. }
  866. /// <summary>
  867. /// 限时抽奖活动任务奖励
  868. /// </summary>
  869. /// <returns></returns>
  870. public bool GetActLuckyBoxTaskdRed()
  871. {
  872. if (ActivityDataManager.Instance.actLuckyBoxId <= 0) return false;
  873. List<TaskCfg> _bonueCfgs = TaskDataManager.Instance.GetTaskCfgs(TaskFuncType.LuckyBoxActivity);
  874. for (int i = 0; i < _bonueCfgs.Count; i++)
  875. {
  876. int state = TaskDataManager.Instance.GetTaskStateById(_bonueCfgs[i].Id);
  877. if (state == ConstBonusStatus.CAN_GET) return true;
  878. }
  879. return false;
  880. }
  881. /// <summary>
  882. /// 限时抽奖剧情奖励
  883. /// </summary>
  884. /// <returns></returns>
  885. public bool GetActLuckyBoxStudioFilingRed()
  886. {
  887. if (ActivityDataManager.Instance.actLuckyBoxId <= 0) return false;
  888. var filingChapterId = StudioDataManager.Instance.GetLuckyBoxActivityID();
  889. StudioDataManager.Instance.filingChapterId = filingChapterId;
  890. var studioCfg = CommonDataManager.Tables.TblStudioCfg.GetOrDefault(filingChapterId);
  891. RoleLimitData limitData = RoleLimitDataManager.GetLimitData(studioCfg.Limit);
  892. if (StudioDataManager.Instance.GetStudioFilingRewardRed() ||
  893. limitData.TotalPlayMax - limitData.PlayTimes > 0)
  894. return true;
  895. return false;
  896. }
  897. /// <summary>
  898. /// 开服活动(神都宸游)
  899. /// </summary>
  900. /// <returns></returns>
  901. public bool GetOpenServerRed()
  902. {
  903. if (GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitStlyc) || GetGiftBagRewardRed() ||
  904. GetMeiRiTeHuiRed() || GetOpenServerStoryRed())
  905. return true;
  906. return false;
  907. }
  908. /// <summary>
  909. /// 摘星-每日特惠
  910. /// </summary>
  911. /// <returns></returns>
  912. public bool GetMeiRiTeHuiRed()
  913. {
  914. var activityInfoByTypeList =
  915. ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3);
  916. var list = activityInfoByTypeList
  917. .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
  918. if (list.Count == 0)
  919. {
  920. return false;
  921. }
  922. bool isSoldOut = true;
  923. foreach (var activityInfo in list)
  924. {
  925. ActivityOpenCfg activityOpenCfg = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityInfo.ActivityId);
  926. var paramsArr = activityOpenCfg.Params1;
  927. foreach (var shopCfgId in paramsArr)
  928. {
  929. var shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault(shopCfgId);
  930. var remainBuyNum = shopCfg.MaxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgId);
  931. //只要有一个商品还能购买,就不是售罄
  932. if (remainBuyNum > 0)
  933. {
  934. isSoldOut = false;
  935. break;
  936. }
  937. }
  938. }
  939. if (isSoldOut)
  940. {
  941. return false;
  942. }
  943. return !LimitedTimeGiftBoxDataManager.Instance.IsOpenMeiRiTeHui;
  944. }
  945. /// <summary>
  946. /// 开服活动-剧情
  947. /// </summary>
  948. /// <returns></returns>
  949. public bool GetOpenServerStoryRed()
  950. {
  951. var activityId =
  952. ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitStlyc);
  953. if (activityId != 0)
  954. {
  955. var activityCfg = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityId);
  956. Dictionary<int, List<StoryLevelCfg>> storyLevelCfgs = new Dictionary<int, List<StoryLevelCfg>>();
  957. for (int i = 0; i < 4; i++)
  958. {
  959. ActivityStoryCfg activityStoryCfg =
  960. CommonDataManager.Tables.TblActivityStoryCfg.GetOrDefault(activityCfg.Params4[i]);
  961. var storyLevelCfg =
  962. StoryLevelConfigManager.GetConfigs(activityStoryCfg.Type,activityStoryCfg.SubType, activityCfg.Params4[i]);
  963. storyLevelCfgs.Add(i, storyLevelCfg);
  964. if ((i == 0 && !InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i][0].Id)) || (i > 0 &&
  965. InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i - 1][0].Id) &&
  966. !InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i][0].Id) &&
  967. ItemDataManager.ItemCollect.ContainsKey(activityStoryCfg.NeedItems[0].ItemId) &&
  968. ItemDataManager.ItemCollect[activityStoryCfg.NeedItems[0].ItemId] >=
  969. activityStoryCfg.NeedItems[0].Count))
  970. {
  971. return true;
  972. }
  973. }
  974. }
  975. return false;
  976. }
  977. /// <summary>
  978. /// 背包中存在礼包就一直给主界面 背包 红点
  979. /// </summary>
  980. /// <returns></returns>
  981. public bool GetMainBagGiftRed()
  982. {
  983. return ItemDataManager.BagIsExistGiftBag();
  984. }
  985. // /// <summary>
  986. // /// 背包内 是礼包物品就一直给红点
  987. // /// </summary>
  988. // /// <returns></returns>
  989. // public bool GetBagGiftRed(int itemId)
  990. // {
  991. // ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
  992. // if (itemCfg.itemType == ConstItemType.USEABLE)
  993. // {
  994. // if (itemCfg.subType == ConstItemSubType.USEABLE_GIFT_BAG_SELECTABLE ||
  995. // itemCfg.subType == ConstItemSubType.USEABLE_GIFT_BAG_RANDOM)
  996. // {
  997. // return true;
  998. // }
  999. // }
  1000. //
  1001. // return false;
  1002. // }
  1003. /// <summary>
  1004. /// 福利大厅
  1005. /// </summary>
  1006. /// <returns></returns>
  1007. public bool GetDailyWelfareRed()
  1008. {
  1009. return GetLimiteChargeRewardRed() || GetSevenDayLoginRed() || DailySignRed() || DailySupplyRed() ||
  1010. GetLimiteChargeRewardRed(501);
  1011. }
  1012. /// <summary>
  1013. ///福利大厅-限时累充可领奖励红点
  1014. /// </summary>
  1015. /// <returns></returns>
  1016. public bool GetLimiteChargeRewardRed()
  1017. {
  1018. List<ActivityInfo> _limitChargeInfo =
  1019. ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLC);
  1020. for (int i = 0; i < _limitChargeInfo.Count; i++)
  1021. {
  1022. if (GetLimiteChargeRewardRed(_limitChargeInfo[i].ActivityId)) return true;
  1023. }
  1024. return false;
  1025. }
  1026. public bool GetLimiteChargeRewardRed(int activityId)
  1027. {
  1028. ActivityInfo _activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(activityId);
  1029. if (_activityInfo == null) return false;
  1030. List<ActivityRechargeCfg> _rechargeCfgs = CommonDataManager.Tables.TblActivityRechargeCfg.GetGroup1ByActivityId(activityId);
  1031. for (int i = 0; i < _rechargeCfgs.Count; i++)
  1032. {
  1033. if (_activityInfo.CountValue >= _rechargeCfgs[i].Value &&
  1034. _activityInfo.GetRewards.IndexOf(_rechargeCfgs[i].Id) < 0)
  1035. {
  1036. return true;
  1037. }
  1038. }
  1039. return false;
  1040. }
  1041. /// <summary>
  1042. /// 福利大厅-七天登录
  1043. /// </summary>
  1044. /// <returns></returns>
  1045. public bool GetSevenDayLoginRed()
  1046. {
  1047. return ActivityDataManager.Instance.CanGetSevenDayBonus();
  1048. }
  1049. /// <summary>
  1050. /// 福利大厅-每日签到
  1051. /// </summary>
  1052. /// <returns></returns>
  1053. public bool DailySignRed()
  1054. {
  1055. int _signCount = MathUtil.CountOnes2(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignDay));
  1056. List<DailySignCfg> signCfgs = CommonDataManager.Tables.TblDailySignCfg.GetGroup1ByMonth(TimeUtil.GetCurMonth());
  1057. for (int i = 0; i < signCfgs.Count; i++)
  1058. {
  1059. bool isGot = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignReward),
  1060. signCfgs[i].Day);
  1061. if (_signCount >= signCfgs[i].Day && !isGot) return true;
  1062. }
  1063. return !MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignDay),
  1064. TimeUtil.GetCurDay());
  1065. }
  1066. /// <summary>
  1067. /// 每日签到-是否签到
  1068. /// </summary>
  1069. /// <returns></returns>
  1070. public bool DailySignGot()
  1071. {
  1072. return !MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignDay),
  1073. TimeUtil.GetCurDay());
  1074. }
  1075. /// <summary>
  1076. /// 福利大厅-每日补给
  1077. /// </summary>
  1078. /// <returns></returns>
  1079. public bool DailySupplyRed()
  1080. {
  1081. for (int i = 0; i < CommonDataManager.Tables.TblDailySupplyCfg.DataList.Count; i++)
  1082. {
  1083. DailySupplyCfg supplyCfg = CommonDataManager.Tables.TblDailySupplyCfg.DataList[i];
  1084. if (DailySupplyRed(supplyCfg)) return true;
  1085. }
  1086. return false;
  1087. }
  1088. /// <summary>
  1089. /// 福利大厅-每日补给
  1090. /// </summary>
  1091. /// <returns></returns>
  1092. public bool DailySupplyRed(DailySupplyCfg supplyCfg)
  1093. {
  1094. long openTime = TimeUtil.GetCurDayTime(TimeUtil.GetDateTime(supplyCfg.OpenTime).ToString("HH:mm:ss"));
  1095. long endTime = TimeUtil.GetCurDayTime(TimeUtil.GetDateTime(supplyCfg.EndTime).ToString("HH:mm:ss"));
  1096. bool isGet = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.DailySupplyReward),
  1097. supplyCfg.Id);
  1098. long curTime = TimeHelper.ServerNow();
  1099. if (!isGet && curTime > openTime && curTime < endTime)
  1100. {
  1101. return true;
  1102. }
  1103. return false;
  1104. }
  1105. /// <summary>
  1106. /// 常驻礼包是否有需要领取的金币
  1107. /// </summary>
  1108. /// <returns></returns>
  1109. public bool GetGoldRed()
  1110. {
  1111. var shopCfgList = CommonDataManager.Tables.TblShopCfg.GetGroup1ByMenu1AndMenu2(ConstStoreTabId.ENDURING_GIFT_BOX, ConstStoreSubId.ENDURING_GIFT_BOX_GOLD)
  1112. .OrderBy(a => a.RefreshType).ToList();
  1113. foreach (var shopCfg in shopCfgList)
  1114. {
  1115. var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(shopCfg.ItemId);
  1116. if (weekGiftBoxState)
  1117. {
  1118. return true;
  1119. }
  1120. }
  1121. return false;
  1122. }
  1123. /// <summary>
  1124. /// 常驻礼包是否有需要领取的体力
  1125. /// </summary>
  1126. /// <returns></returns>
  1127. public bool GetPowerRed()
  1128. {
  1129. var shopCfgList = CommonDataManager.Tables.TblShopCfg.GetGroup1ByMenu1AndMenu2(ConstStoreTabId.ENDURING_GIFT_BOX, ConstStoreSubId.ENDURING_GIFT_BOX_POWER)
  1130. .OrderBy(a => a.RefreshType).ToList();
  1131. foreach (var shopCfg in shopCfgList)
  1132. {
  1133. var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(shopCfg.ItemId);
  1134. if (weekGiftBoxState)
  1135. {
  1136. return true;
  1137. }
  1138. }
  1139. return false;
  1140. }
  1141. public bool GetActivityWanShiLiRed()
  1142. {
  1143. return ActivityWanShiLiDataManager.Instance.CanGetReward();
  1144. }
  1145. public bool GetActivityYuanXiaoRed()
  1146. {
  1147. return ActivityGetYuanXiaoDataManager.Instance.HaveNewLevelCanPlay()
  1148. || ActivityGetYuanXiaoDataManager.Instance.ShowTaskRedDots(TaskFuncType.YuanXiaoActivity);
  1149. }
  1150. public bool GetActivityFYJYRed()
  1151. {
  1152. return ActivityFYJYDataManager.Instance.CheckRed();
  1153. }
  1154. /// <summary>
  1155. /// 摘星免费抽奖
  1156. /// </summary>
  1157. /// <returns></returns>
  1158. public bool GetLuckyBoxFreeTimes()
  1159. {
  1160. if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(LuckyBoxView).Name, false))
  1161. return false;
  1162. long freeTime = LuckyBoxDataManager.Instance.GetFreeTime(LuckyBoxDataManager.BOX_ID_2);
  1163. if (freeTime > 0)
  1164. {
  1165. if (freeTime - TimeHelper.ServerNow() < 0)
  1166. return true;
  1167. }
  1168. freeTime = LuckyBoxDataManager.Instance.GetFreeTime(LuckyBoxDataManager.BOX_ID_3);
  1169. if (freeTime > 0)
  1170. {
  1171. if (freeTime - TimeHelper.ServerNow() < 0)
  1172. return true;
  1173. }
  1174. return false;
  1175. }
  1176. public bool CheckActivityLuckyBoxCanChallenge(int limit, int activityID)
  1177. {
  1178. int chapterID = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityID).Params3[0];
  1179. ActivityFightCfg chapterCfg = CommonDataManager.Tables.TblActivityFightCfg.GetOrDefault(chapterID);
  1180. var list = StoryLevelConfigManager.GetConfigs(chapterCfg.Type,chapterCfg.SubType, chapterCfg.Id);
  1181. RoleLimitData limitData = RoleLimitDataManager.GetLimitData(limit);
  1182. int times = limitData.TotalPlayMax - limitData.PlayTimes;
  1183. bool canChallenge = ((times > 0) && (!InstanceZonesDataManager.CheckLevelPass(list[list.Count - 1].Id)));
  1184. return canChallenge;
  1185. }
  1186. public bool GetActivityLuckyBoxRed(int activityID)
  1187. {
  1188. int chapterID = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityID).Params3[0];
  1189. return GetMeiRiTeHuiRed()
  1190. || GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitLuckyBox)
  1191. || GetActLuckyBoxTaskdRed() || CheckActivityLuckyBoxCanChallenge(300, chapterID) ||
  1192. GetGiftBagRewardRed();
  1193. }
  1194. }
  1195. }