RedDotDataManager.cs 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391
  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].ItemId);
  394. int itemNeed = skillLvlCfg.Materiars[0].Count;
  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 =
  595. ItemUtil.CreateItemDataList(itemCfg.SyntheticMateriars.ToGfgGameItemParam());
  596. for (int i = 0; i < materiarsOfSelectedItem.Count; i++)
  597. {
  598. ItemData itemData = materiarsOfSelectedItem[i];
  599. long numSynthetic = ItemDataManager.GetItemNum(itemData.id);
  600. if (numSynthetic < itemData.num)
  601. {
  602. return false;
  603. }
  604. }
  605. return true;
  606. }
  607. /// <summary>
  608. /// 卡牌合成红点
  609. /// </summary>
  610. /// <param name="itemId"></param>
  611. /// <param name="showTips"></param>
  612. /// <returns></returns>
  613. public int count = 0;
  614. public bool CheckCardCanSynthetic(int itemId)
  615. {
  616. GetCardTimers(itemId).Coroutine();
  617. ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId);
  618. if (count >= itemCfg.SyntheticTimes)
  619. {
  620. return false;
  621. }
  622. if (itemCfg == null || ItemDataManager.GetItemNum(itemCfg.SyntheticCostID) < itemCfg.SyntheticCostNum ||
  623. itemCfg.SyntheticTimes <= 0)
  624. {
  625. return false;
  626. }
  627. List<ItemData> materiarsOfSelectedItem =
  628. ItemUtil.CreateItemDataList(itemCfg.SyntheticMateriars.ToGfgGameItemParam());
  629. for (int i = 0; i < materiarsOfSelectedItem.Count; i++)
  630. {
  631. ItemData itemData = materiarsOfSelectedItem[i];
  632. long numSynthetic = ItemDataManager.GetItemNum(itemData.id);
  633. if (numSynthetic < itemData.num)
  634. {
  635. return false;
  636. }
  637. }
  638. return true;
  639. }
  640. public async ETTask<bool> GetCardTimers(int itemId)
  641. {
  642. //合成材料判断
  643. var response = await ClothingSyntheticSProxy.GetCardSyntheticCount(itemId);
  644. count = response;
  645. return true;
  646. }
  647. /// <summary>
  648. /// 商城
  649. /// </summary>
  650. /// <returns></returns>
  651. public bool GetShopRed()
  652. {
  653. return GetChargeAddUpRewardRed() || GetGiftBagRewardRed() || GetGoldCardRewardRed() ||
  654. GetBlackCardRewardRed() || GetBlackCardClothingRed() || GetStoreBrocadeWeavRewardRed() ||
  655. GetGiftBagRebateRed() || GetGrowthFundRewardRed() ||
  656. ActivityAfuGiftDataManager.Instance.GetSummerGiftRewardAllState();
  657. }
  658. //商店-充值-会员中心
  659. public bool GetChargeAddUpRewardRed()
  660. {
  661. List<VipCfg> vipCfgs = CommonDataManager.Tables.TblVipCfg.DataList;
  662. // VipCfg[] vipCfgs = VipCfgArray.Instance.dataArray;
  663. for (int i = 1; i < vipCfgs.Count; i++)
  664. {
  665. bool isGet = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.VipGetStatus),
  666. vipCfgs[i].Id);
  667. if (!isGet && RoleDataManager.vipLv >= vipCfgs[i].Id) return true;
  668. }
  669. return GameGlobal.myNumericComponent.GetAsInt(NumericType.VipWeekGetStatus) == 0 &&
  670. RoleDataManager.vipLv > 0;
  671. }
  672. //商店-礼包-活动礼包
  673. public bool GetGiftBagRewardRed()
  674. {
  675. List<ShopCfg> shopCfgs = CommonDataManager.Tables.TblShopCfg.GetGroup1ByMenu1AndMenu2(
  676. ConstStoreTabId.STORE_GIFT_BAG,
  677. ConstStoreSubId.STORE_GIFT_BAG_ACTIVITY);
  678. shopCfgs = ShopDataManager.Instance.RemoveNotOpenCfg(shopCfgs);
  679. for (int i = 0; i < shopCfgs.Count; i++)
  680. {
  681. if (shopCfgs[i].Price == 0 &&
  682. ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgs[i].Id) < shopCfgs[i].MaxBuyNum) return true;
  683. }
  684. return false;
  685. }
  686. //商店-礼包-返利商城
  687. public bool GetGiftBagRebateRed()
  688. {
  689. List<ShopCfg> shopCfgs = CommonDataManager.Tables.TblShopCfg.GetGroup1ByMenu1AndMenu2(
  690. ConstStoreTabId.STORE_GIFT_BAG,
  691. ConstStoreSubId.STORE_GIFT_BAG_REBATE);
  692. foreach (var info in shopCfgs)
  693. {
  694. var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(info.ItemId);
  695. if (weekGiftBoxState)
  696. return true;
  697. }
  698. return false;
  699. }
  700. /// <summary>
  701. /// 商城-月卡-成长基金
  702. /// </summary>
  703. /// <returns></returns>
  704. public bool GetGrowthFundBuy()
  705. {
  706. ShopCfg shopCfg =
  707. CommonDataManager.Tables.TblShopCfg.GetOrDefault(CommonDataManager.Tables.TblActivityOpenCfg
  708. .GetOrDefault(3002).Params1[0]);
  709. var remainBuyNum = shopCfg.MaxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.Id);
  710. if (remainBuyNum == 0)
  711. {
  712. //已售完
  713. return true;
  714. }
  715. else
  716. {
  717. //未售完
  718. return false;
  719. }
  720. }
  721. public bool GetGrowthFundRewardRed()
  722. {
  723. if (ShopDataManager.Instance.GrowthFundRewardList.Count ==
  724. CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count)
  725. {
  726. return false;
  727. }
  728. if (!GetGrowthFundBuy())
  729. {
  730. return false;
  731. }
  732. for (int i = 0; i < CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count - 1; i++)
  733. {
  734. if (RoleDataManager.lvl < CommonDataManager.Tables.TblGrowthFundCfg.DataList[i].Level)
  735. {
  736. //可领取数量和已领取数量比较
  737. if (i != ShopDataManager.Instance.GrowthFundRewardList.Count)
  738. {
  739. return true;
  740. }
  741. }
  742. }
  743. if (RoleDataManager.lvl >= CommonDataManager.Tables.TblGrowthFundCfg
  744. .DataList[CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count - 1].Level)
  745. {
  746. return true;
  747. }
  748. return false;
  749. }
  750. /// <summary>
  751. /// 商城-月卡-红包卡
  752. /// </summary>
  753. /// <returns></returns>
  754. public bool GetGoldCardRewardRed()
  755. {
  756. return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.Gold) &&
  757. GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardGoldReward) <= 0;
  758. }
  759. /// <summary>
  760. /// 商城-月卡-福气卡
  761. /// </summary>
  762. /// <returns></returns>
  763. public bool GetBlackCardRewardRed()
  764. {
  765. return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.BlackGold) &&
  766. GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardBlackGoldReward) <= 0;
  767. }
  768. /// <summary>
  769. /// 商城-月卡-福气卡-单品奖励
  770. /// </summary>
  771. /// <returns></returns>
  772. public bool GetBlackCardClothingRed()
  773. {
  774. int _year = TimeUtil.GetCurYear();
  775. int _month = TimeUtil.GetCurMonth();
  776. MonthlyCardClothesCfg clothesCfg = CommonDataManager.Tables.TblMonthlyCardClothesCfg.Get(_year, _month);
  777. return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.BlackGold) &&
  778. !MathUtil.isBitSet(
  779. GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardExclusiveClothesMouth), _month);
  780. }
  781. /// <summary>
  782. /// 商城-月卡-锦罗织造
  783. /// </summary>
  784. /// <returns></returns>
  785. public bool GetStoreBrocadeWeavRewardRed()
  786. {
  787. return TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.BattlePass)
  788. || BattlePassTaskDataManager.Instance.CheckStoreBrocadeWeavRed();
  789. }
  790. /// <summary>
  791. /// 联盟
  792. /// </summary>
  793. /// <returns></returns>
  794. public bool GetLeagueRed()
  795. {
  796. return GetLeagueMemberJoinRed() || LeagueDataManager.Instance.Type == LeagueJoinType.UnJoin ||
  797. GetLeagueGiftBoxRed() || GetLeaguePrayRed() || GetLeagueTeaPartyRed();
  798. }
  799. /// <summary>
  800. /// 联盟-成员申请
  801. /// </summary>
  802. /// <returns></returns>
  803. public bool GetLeagueMemberJoinRed()
  804. {
  805. LeagueHotelCfg hotelCfg =
  806. CommonDataManager.Tables.TblLeagueHotelCfg.GetOrDefault(LeagueDataManager.Instance.HotelLevel);
  807. int myPos = LeagueDataManager.Instance.GetMyPos();
  808. return LeagueDataManager.Instance.Type == LeagueJoinType.Join &&
  809. (myPos == LeaguePos.Owner || myPos == LeaguePos.SubOwner) &&
  810. LeagueDataManager.Instance.ListApplyDatas.Count > 0 &&
  811. LeagueDataManager.Instance.LeagueData.Num < hotelCfg.Limit;
  812. }
  813. /// <summary>
  814. /// 联盟-雅集福利
  815. /// </summary>
  816. /// <returns></returns>
  817. public bool GetLeagueGiftBoxRed()
  818. {
  819. if (LeagueDataManager.Instance.Type == LeagueJoinType.UnJoin) return false;
  820. List<LeagueGiftGetData> _getDatas = LeagueDataManager.Instance.GetGiftGetDatas();
  821. for (int i = 0; i < _getDatas.Count; i++)
  822. {
  823. if (!_getDatas[i].IsGet) return true;
  824. }
  825. return false;
  826. }
  827. /// <summary>
  828. /// 联盟-雅集祈福
  829. /// </summary>
  830. /// <returns></returns>
  831. public bool GetLeaguePrayRed()
  832. {
  833. return LeagueDataManager.Instance.GetPrayTimesByType(LeaguePrayType.First) == 0;
  834. }
  835. /// <summary>
  836. /// 联盟-茶话会
  837. /// </summary>
  838. /// <returns></returns>
  839. public bool GetLeagueTeaPartyRed()
  840. {
  841. return LeagueDataManager.Instance.CheckTeaPartyRewardCanGet();
  842. }
  843. /// <summary>
  844. /// 限时抽奖活动奖励
  845. /// </summary>
  846. /// <returns></returns>
  847. public bool GetActLuckyBoxRewardRed(int _typeId)
  848. {
  849. int _activityId = ActivityDataManager.Instance.actLuckyBoxId;
  850. var _allPlayTimes = ActivityDataManager.Instance.allPlayTimes;
  851. var _bonusState = ActivityDataManager.Instance.luckyBoxActBonusState;
  852. if (_typeId == ConstLimitTimeActivityType.ActLimitTsy)
  853. {
  854. _activityId = ActivityDataManager.Instance.actLimitTsyId;
  855. _allPlayTimes = ActivityDataManager.Instance.allTsyPlayTimes;
  856. _bonusState = ActivityDataManager.Instance.luckyActTsyBonusState;
  857. }
  858. else if (_typeId == ConstLimitTimeActivityType.ActLimitStlyc)
  859. {
  860. _activityId = ActivityDataManager.Instance.actLimitStlycId;
  861. _allPlayTimes = ActivityDataManager.Instance.allLimitStlycTimes;
  862. _bonusState = ActivityDataManager.Instance.limitStlycActBonusState;
  863. }
  864. if (_activityId <= 0) return false;
  865. List<ActivityLuckybonusCfg> _bonueCfgs =
  866. CommonDataManager.Tables.TblIActivityLuckybonusCfg.GetGroup1ById(_activityId);
  867. for (int i = 0; i < _bonueCfgs.Count; i++)
  868. {
  869. int key = _bonueCfgs[i].Num;
  870. int state = _bonusState.ContainsKey(key) ? _bonusState[key] : 0;
  871. bool canGet = state < ConstBonusStatus.GOT && _allPlayTimes >= _bonueCfgs[i].Num;
  872. if (canGet) return true;
  873. }
  874. return false;
  875. }
  876. /// <summary>
  877. /// 限时抽奖活动任务奖励
  878. /// </summary>
  879. /// <returns></returns>
  880. public bool GetActLuckyBoxTaskdRed()
  881. {
  882. if (ActivityDataManager.Instance.actLuckyBoxId <= 0) return false;
  883. List<TaskCfg> _bonueCfgs = TaskDataManager.Instance.GetTaskCfgs(TaskFuncType.LuckyBoxActivity);
  884. for (int i = 0; i < _bonueCfgs.Count; i++)
  885. {
  886. int state = TaskDataManager.Instance.GetTaskStateById(_bonueCfgs[i].Id);
  887. if (state == ConstBonusStatus.CAN_GET) return true;
  888. }
  889. return false;
  890. }
  891. /// <summary>
  892. /// 限时抽奖剧情奖励
  893. /// </summary>
  894. /// <returns></returns>
  895. public bool GetActLuckyBoxStudioFilingRed()
  896. {
  897. if (ActivityDataManager.Instance.actLuckyBoxId <= 0) return false;
  898. var filingChapterId = StudioDataManager.Instance.GetLuckyBoxActivityID();
  899. StudioDataManager.Instance.filingChapterId = filingChapterId;
  900. var studioCfg = CommonDataManager.Tables.TblStudioCfg.GetOrDefault(filingChapterId);
  901. RoleLimitData limitData = RoleLimitDataManager.GetLimitData(studioCfg.Limit);
  902. if (StudioDataManager.Instance.GetStudioFilingRewardRed() ||
  903. limitData.TotalPlayMax - limitData.PlayTimes > 0)
  904. return true;
  905. return false;
  906. }
  907. /// <summary>
  908. /// 开服活动(神都宸游)
  909. /// </summary>
  910. /// <returns></returns>
  911. public bool GetOpenServerRed()
  912. {
  913. if (GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitStlyc) || GetGiftBagRewardRed() ||
  914. GetMeiRiTeHuiRed() || GetOpenServerStoryRed())
  915. return true;
  916. return false;
  917. }
  918. /// <summary>
  919. /// 摘星-每日特惠
  920. /// </summary>
  921. /// <returns></returns>
  922. public bool GetMeiRiTeHuiRed()
  923. {
  924. var activityInfoByTypeList =
  925. ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3);
  926. var list = activityInfoByTypeList
  927. .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
  928. if (list.Count == 0)
  929. {
  930. return false;
  931. }
  932. bool isSoldOut = true;
  933. foreach (var activityInfo in list)
  934. {
  935. ActivityOpenCfg activityOpenCfg =
  936. CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityInfo.ActivityId);
  937. var paramsArr = activityOpenCfg.Params1;
  938. foreach (var shopCfgId in paramsArr)
  939. {
  940. var shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault(shopCfgId);
  941. var remainBuyNum = shopCfg.MaxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgId);
  942. //只要有一个商品还能购买,就不是售罄
  943. if (remainBuyNum > 0)
  944. {
  945. isSoldOut = false;
  946. break;
  947. }
  948. }
  949. }
  950. if (isSoldOut)
  951. {
  952. return false;
  953. }
  954. return !LimitedTimeGiftBoxDataManager.Instance.IsOpenMeiRiTeHui;
  955. }
  956. /// <summary>
  957. /// 开服活动-剧情
  958. /// </summary>
  959. /// <returns></returns>
  960. public bool GetOpenServerStoryRed()
  961. {
  962. var activityId =
  963. ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitStlyc);
  964. if (activityId != 0)
  965. {
  966. var activityCfg = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityId);
  967. Dictionary<int, List<StoryLevelCfg>> storyLevelCfgs = new Dictionary<int, List<StoryLevelCfg>>();
  968. for (int i = 0; i < 4; i++)
  969. {
  970. ActivityStoryCfg activityStoryCfg =
  971. CommonDataManager.Tables.TblActivityStoryCfg.GetOrDefault(activityCfg.Params4[i]);
  972. var storyLevelCfg =
  973. CommonDataManager.Tables.TblStoryLevelCfg.DataList.Where(a =>
  974. a.Type == activityStoryCfg.Type && a.SubType == activityStoryCfg.SubType &&
  975. a.ChapterId == activityCfg.Params4[i]).ToList();
  976. storyLevelCfgs.Add(i, storyLevelCfg);
  977. if ((i == 0 && !InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i][0].Id)) || (i > 0 &&
  978. InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i - 1][0].Id) &&
  979. !InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i][0].Id) &&
  980. ItemDataManager.ItemCollect.ContainsKey(activityStoryCfg.NeedItems[0].ItemId) &&
  981. ItemDataManager.ItemCollect[activityStoryCfg.NeedItems[0].ItemId] >=
  982. activityStoryCfg.NeedItems[0].Count))
  983. {
  984. return true;
  985. }
  986. }
  987. }
  988. return false;
  989. }
  990. /// <summary>
  991. /// 背包中存在礼包就一直给主界面 背包 红点
  992. /// </summary>
  993. /// <returns></returns>
  994. public bool GetMainBagGiftRed()
  995. {
  996. return ItemDataManager.BagIsExistGiftBag();
  997. }
  998. // /// <summary>
  999. // /// 背包内 是礼包物品就一直给红点
  1000. // /// </summary>
  1001. // /// <returns></returns>
  1002. // public bool GetBagGiftRed(int itemId)
  1003. // {
  1004. // ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
  1005. // if (itemCfg.itemType == ConstItemType.USEABLE)
  1006. // {
  1007. // if (itemCfg.subType == ConstItemSubType.USEABLE_GIFT_BAG_SELECTABLE ||
  1008. // itemCfg.subType == ConstItemSubType.USEABLE_GIFT_BAG_RANDOM)
  1009. // {
  1010. // return true;
  1011. // }
  1012. // }
  1013. //
  1014. // return false;
  1015. // }
  1016. /// <summary>
  1017. /// 福利大厅
  1018. /// </summary>
  1019. /// <returns></returns>
  1020. public bool GetDailyWelfareRed()
  1021. {
  1022. return GetLimiteChargeRewardRed() || GetSevenDayLoginRed() || DailySignRed() || DailySupplyRed() ||
  1023. GetLimiteChargeRewardRed(501);
  1024. }
  1025. /// <summary>
  1026. ///福利大厅-限时累充可领奖励红点
  1027. /// </summary>
  1028. /// <returns></returns>
  1029. public bool GetLimiteChargeRewardRed()
  1030. {
  1031. List<ActivityInfo> _limitChargeInfo =
  1032. ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLC);
  1033. for (int i = 0; i < _limitChargeInfo.Count; i++)
  1034. {
  1035. if (GetLimiteChargeRewardRed(_limitChargeInfo[i].ActivityId)) return true;
  1036. }
  1037. return false;
  1038. }
  1039. public bool GetLimiteChargeRewardRed(int activityId)
  1040. {
  1041. ActivityInfo _activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(activityId);
  1042. if (_activityInfo == null) return false;
  1043. List<ActivityRechargeCfg> _rechargeCfgs =
  1044. CommonDataManager.Tables.TblActivityRechargeCfg.GetGroup1ByActivityId(activityId);
  1045. for (int i = 0; i < _rechargeCfgs.Count; i++)
  1046. {
  1047. if (_activityInfo.CountValue >= _rechargeCfgs[i].Value &&
  1048. _activityInfo.GetRewards.IndexOf(_rechargeCfgs[i].Id) < 0)
  1049. {
  1050. return true;
  1051. }
  1052. }
  1053. return false;
  1054. }
  1055. /// <summary>
  1056. /// 福利大厅-七天登录
  1057. /// </summary>
  1058. /// <returns></returns>
  1059. public bool GetSevenDayLoginRed()
  1060. {
  1061. return ActivityDataManager.Instance.CanGetSevenDayBonus();
  1062. }
  1063. /// <summary>
  1064. /// 福利大厅-每日签到
  1065. /// </summary>
  1066. /// <returns></returns>
  1067. public bool DailySignRed()
  1068. {
  1069. int _signCount = MathUtil.CountOnes2(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignDay));
  1070. List<DailySignCfg> signCfgs =
  1071. CommonDataManager.Tables.TblDailySignCfg.GetGroup1ByMonth(TimeUtil.GetCurMonth());
  1072. for (int i = 0; i < signCfgs.Count; i++)
  1073. {
  1074. bool isGot = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignReward),
  1075. signCfgs[i].Day);
  1076. if (_signCount >= signCfgs[i].Day && !isGot) return true;
  1077. }
  1078. return !MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignDay),
  1079. TimeUtil.GetCurDay());
  1080. }
  1081. /// <summary>
  1082. /// 每日签到-是否签到
  1083. /// </summary>
  1084. /// <returns></returns>
  1085. public bool DailySignGot()
  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 DailySupplyRed()
  1095. {
  1096. for (int i = 0; i < CommonDataManager.Tables.TblDailySupplyCfg.DataList.Count; i++)
  1097. {
  1098. DailySupplyCfg supplyCfg = CommonDataManager.Tables.TblDailySupplyCfg.DataList[i];
  1099. if (DailySupplyRed(supplyCfg)) return true;
  1100. }
  1101. return false;
  1102. }
  1103. /// <summary>
  1104. /// 福利大厅-每日补给
  1105. /// </summary>
  1106. /// <returns></returns>
  1107. public bool DailySupplyRed(DailySupplyCfg supplyCfg)
  1108. {
  1109. long openTime = TimeUtil.GetCurDayTime(TimeUtil.GetDateTime(supplyCfg.OpenTime).ToString("HH:mm:ss"));
  1110. long endTime = TimeUtil.GetCurDayTime(TimeUtil.GetDateTime(supplyCfg.EndTime).ToString("HH:mm:ss"));
  1111. bool isGet = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.DailySupplyReward),
  1112. supplyCfg.Id);
  1113. long curTime = TimeHelper.ServerNow();
  1114. if (!isGet && curTime > openTime && curTime < endTime)
  1115. {
  1116. return true;
  1117. }
  1118. return false;
  1119. }
  1120. /// <summary>
  1121. /// 常驻礼包是否有需要领取的金币
  1122. /// </summary>
  1123. /// <returns></returns>
  1124. public bool GetGoldRed()
  1125. {
  1126. var shopCfgList = CommonDataManager.Tables.TblShopCfg
  1127. .GetGroup1ByMenu1AndMenu2(ConstStoreTabId.ENDURING_GIFT_BOX, ConstStoreSubId.ENDURING_GIFT_BOX_GOLD)
  1128. .OrderBy(a => a.RefreshType).ToList();
  1129. foreach (var shopCfg in shopCfgList)
  1130. {
  1131. var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(shopCfg.ItemId);
  1132. if (weekGiftBoxState)
  1133. {
  1134. return true;
  1135. }
  1136. }
  1137. return false;
  1138. }
  1139. /// <summary>
  1140. /// 常驻礼包是否有需要领取的体力
  1141. /// </summary>
  1142. /// <returns></returns>
  1143. public bool GetPowerRed()
  1144. {
  1145. var shopCfgList = CommonDataManager.Tables.TblShopCfg
  1146. .GetGroup1ByMenu1AndMenu2(ConstStoreTabId.ENDURING_GIFT_BOX, ConstStoreSubId.ENDURING_GIFT_BOX_POWER)
  1147. .OrderBy(a => a.RefreshType).ToList();
  1148. foreach (var shopCfg in shopCfgList)
  1149. {
  1150. var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(shopCfg.ItemId);
  1151. if (weekGiftBoxState)
  1152. {
  1153. return true;
  1154. }
  1155. }
  1156. return false;
  1157. }
  1158. public bool GetActivityWanShiLiRed()
  1159. {
  1160. return ActivityWanShiLiDataManager.Instance.CanGetReward();
  1161. }
  1162. public bool GetActivityYuanXiaoRed()
  1163. {
  1164. return ActivityGetYuanXiaoDataManager.Instance.HaveNewLevelCanPlay()
  1165. || ActivityGetYuanXiaoDataManager.Instance.ShowTaskRedDots(TaskFuncType.YuanXiaoActivity);
  1166. }
  1167. public bool GetActivityFYJYRed()
  1168. {
  1169. return ActivityFYJYDataManager.Instance.CheckRed();
  1170. }
  1171. /// <summary>
  1172. /// 摘星免费抽奖
  1173. /// </summary>
  1174. /// <returns></returns>
  1175. public bool GetLuckyBoxFreeTimes()
  1176. {
  1177. if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(LuckyBoxView).Name, false))
  1178. return false;
  1179. long freeTime = LuckyBoxDataManager.Instance.GetFreeTime(LuckyBoxDataManager.BOX_ID_2);
  1180. if (freeTime > 0)
  1181. {
  1182. if (freeTime - TimeHelper.ServerNow() < 0)
  1183. return true;
  1184. }
  1185. freeTime = LuckyBoxDataManager.Instance.GetFreeTime(LuckyBoxDataManager.BOX_ID_3);
  1186. if (freeTime > 0)
  1187. {
  1188. if (freeTime - TimeHelper.ServerNow() < 0)
  1189. return true;
  1190. }
  1191. return false;
  1192. }
  1193. public bool CheckActivityLuckyBoxCanChallenge(int limit, int activityID)
  1194. {
  1195. int chapterID = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityID).Params3[0];
  1196. ActivityFightCfg chapterCfg = CommonDataManager.Tables.TblActivityFightCfg.GetOrDefault(chapterID);
  1197. var list = CommonDataManager.Tables.TblStoryLevelCfg.DataList.Where(a =>
  1198. a.Type == chapterCfg.Type && a.SubType == chapterCfg.SubType &&
  1199. a.ChapterId == chapterCfg.Id).ToList();
  1200. RoleLimitData limitData = RoleLimitDataManager.GetLimitData(limit);
  1201. int times = limitData.TotalPlayMax - limitData.PlayTimes;
  1202. bool canChallenge = ((times > 0) && (!InstanceZonesDataManager.CheckLevelPass(list[list.Count - 1].Id)));
  1203. return canChallenge;
  1204. }
  1205. public bool GetActivityLuckyBoxRed(int activityID)
  1206. {
  1207. int chapterID = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityID).Params3[0];
  1208. return GetMeiRiTeHuiRed()
  1209. || GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitLuckyBox)
  1210. || GetActLuckyBoxTaskdRed() || CheckActivityLuckyBoxCanChallenge(300, chapterID) ||
  1211. GetGiftBagRewardRed();
  1212. }
  1213. }
  1214. }