using System.Collections.Generic; using System.Linq; using Assets.Game.HotUpdate.Data; using cfg.GfgCfg; using ET; using Hutool; namespace GFGGame { public class RedDotDataManager : SingletonBase { /// /// 公告 /// 是否有未读公告 /// /// public bool GetNoticeRed() { List noticeInfos = NoticeDataManager.Instance.NoticeInfos; for (int i = 0; i < noticeInfos.Count; i++) { if (noticeInfos[i].readStatus == false) return true; } List showActivity = NoticeDataManager.Instance.UpdateShowActivity(); for (int i = 0; i < showActivity.Count; i++) { if (NoticeDataManager.Instance.GetRedDotState(showActivity[i].JumpId, showActivity[i].ActivityId)) { return true; } } return false; } /// /// 任务 /// 是否有任务奖励、任务宝箱奖励可领 /// /// public bool GetTaskRed() { //判断活跃奖励是否有可以领取 var hadGetRewardNum = DailyTaskDataManager.Instance.GetHadGetRewardNum(0); if (hadGetRewardNum) { return true; } if (TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.Daily)) { return true; } if (TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.Weekly)) { return true; } if (TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.Achievement)) { return true; } return false; //判断是否有通行证奖励可领取 //return BattlePassTaskDataManager.Instance.GetHadCanGetReward(); } //七日活动红点 public bool GetActivityDay7Red() { //任务奖励 var maxDay = ActivityDay7DataManager.Instance.GetActivityDay7MaxPassDay(); for (var day = maxDay; day > 0; day--) { if (ActivityDay7DataManager.Instance.CheckActivityDay7TaskRewrdCanGetByDay(day)) { return true; } } //活跃奖励 var activity7DaysCfgs = CommonDataManager.Tables.TblActivity7DaysCfg.DataList; foreach (var cfg in activity7DaysCfgs) { if (ActivityDay7DataManager.Instance.CheckActivityDay7RewardCanGet(cfg.Id)) { return true; } } return false; } /// /// 有邮件未读或未领奖励 /// /// public bool GetMailRed() { if (MailDataManager.Instance.UnreadCount > 0) return true; return false; } /// /// 套装收集奖励可领 /// /// public bool GetFieldGuideRed() { List _suitIds = SuitUtil.GetSuitIdList(false, true, 0, 3); //全部已获得套装按照收集度高排序 for (int i = 0; i < _suitIds.Count; i++) { int status = DressUpMenuSuitDataManager.GetSuitGuideBonusStatus(_suitIds[i]); if (status == ConstBonusStatus.CAN_GET) { return true; } } return false; } /// /// 套装收集种类界面奖励可领 /// /// public bool GetSuitGuideRed(int typeIndex) { List _suitIds = SuitUtil.GetSuitIdList(false, true, typeIndex, 3); //全部已获得套装按照收集度高排序 for (int i = 0; i < _suitIds.Count; i++) { int status = DressUpMenuSuitDataManager.GetSuitGuideBonusStatus(_suitIds[i]); if (status == ConstBonusStatus.CAN_GET) { return true; } } return false; } /// /// 判断所有章节是否有奖励可领 /// /// public bool GetChapterRed() { for (int i = 0; i < CommonDataManager.Tables.TblStoryChapterCfg.DataList.Count; i++) { for (int j = 0; j < 3; j++) { int state = MainStoryDataManager.GetChapterBonusStatus( CommonDataManager.Tables.TblStoryChapterCfg.DataList[i].Id, j); if (state == ConstBonusStatus.CAN_GET) { return true; } } } return false; } /// /// 根据章节Id判断是否有奖励可领 /// /// public bool GetChapterRed(int chapterId) { for (int i = 0; i < 3; i++) { int state = MainStoryDataManager.GetChapterBonusStatus(chapterId, i); if (state == ConstBonusStatus.CAN_GET) { return true; } } return false; } /// /// 好友红点 /// /// public bool GetFriendRed() { return GetFriendApplyRed() || GetFriendGiftRed(); } /// /// 是否有好友申请 /// /// public bool GetFriendApplyRed() { return FriendDataManager.Instance.ApplyDatas.Count > 0; } /// /// 是否有好友可领体力 /// /// public bool GetFriendGiftRed() { if (FriendDataManager.Instance.Count >= FriendDataManager.Instance.maxGetPowerCount) return false; List friendInfos = FriendDataManager.Instance.FriendDatas; for (int i = 0; i < friendInfos.Count; i++) { FriendInfoData friendInfo = FriendDataManager.Instance.GetFriendDataById(friendInfos[i]); if (friendInfo.takeGiftState == ConstBonusStatus.CAN_GET) { return true; } } return false; } /// /// 商城-礼包红点 /// /// public bool GetRechargeGiftFreeRed() { // List _giftCfgs = ShopDataManager.Instance.GetGiftBagCfgs(); // for (int i = 0; i < _giftCfgs.Count; i++) // { // GiftBagCfg cfg = _giftCfgs[i]; // bool isUnLock = ShopDataManager.Instance.GetShopGoodsStateById(cfg.id); // int buyNum = ShopDataManager.Instance.GetGoodsBuyNumById(cfg.id); // bool canBuy = cfg.maxBuyNum == 0 || buyNum < cfg.maxBuyNum ? true : false; // if (isUnLock && canBuy && cfg.price == 0) return true; // } return false; } /// /// 田野调查红点 /// /// public bool GetFieldRed() { List _cfgs = FieldDataManager.Instance.GetTaskCfgs(); for (int i = 0; i < _cfgs.Count; i++) { int state = FieldDataManager.Instance.GetTaskState(_cfgs[i].Id); if (state == ConstBonusStatus.CAN_GET) return true; } return false; } /// /// 工作室红点 /// /// public bool GetStudioFilingRed(bool checkCurChapter = true) { List studioCfgs = CommonDataManager.Tables.TblStudioCfg.GetGroup1ByFunId(typeof(StudioFilingView).Name); for (int i = 0; i < studioCfgs.Count; i++) { if (!checkCurChapter && studioCfgs[i].Id == StudioDataManager.Instance.filingChapterId) continue; if (StudioDataManager.Instance.GetFilingRewardState(studioCfgs[i].Id)) return true; } return false; } /// /// 寻奇访胜 /// /// public bool GetTravelRed() { if (TravelDataManager.Instance.TravelData == null) return false; return TravelDataManager.Instance.TravelData.Status == (int)TravelGuideType.TravelComplete; } /// /// 千山万水-图鉴红点 /// /// public bool GetTravelGuideRed() { if (TravelDataManager.Instance.ListTravelAreaRewardState == null || TravelDataManager.Instance.ListTravelAreaRewardState.Count == 0) return false; for (int i = 0; i < TravelDataManager.Instance.ListTravelAreaRewardState.Count; i++) { if (TravelDataManager.Instance.ListTravelAreaRewardState[i] == ConstBonusStatus.CAN_GET) { return true; } } return false; } /// /// 千山万水-图鉴区域红点 /// /// /// public bool GetTravelGuideAreaRed(int areaId) { if (TravelDataManager.Instance.ListTravelAreaRewardState == null || TravelDataManager.Instance.ListTravelAreaRewardState.Count == 0) return false; return TravelDataManager.Instance.GetGuideRewardStateByAreaId(areaId) == ConstBonusStatus.CAN_GET; } /// /// 头像-获得新头像红点 /// /// public bool GetHeadRed() { return RoleInfoManager.Instance.newHeadDatas.Count > 0; } /// /// 头像-获得新头像框红点 /// /// public bool GetHeadBorderRed() { return RoleInfoManager.Instance.newHeadBorderDatas.Count > 0; } /// /// 词牌 /// /// public bool GetCardRed() { if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(nameof(CardDetailView), false)) return false; List cardDatas = CardDataManager.GetCardListByRoleType(0); for (int i = 0; i < cardDatas.Count; i++) { if (GetCardRed(cardDatas[i].id)) return true; } return false; } /// /// 词牌 /// /// public bool GetCardRed(int cardId) { // GetCardUpStarRed(cardId) || GetCardUpLvRed(cardId) || return GetCardStarReward(cardId) || GetCardSkillsRed(cardId) || CheckCardCanSynthetic(cardId); } /// /// 词牌-升级红点 /// /// /// public bool GetCardUpLvRed(int cardId) { CardData cardData = CardDataManager.GetCardDataById(cardId); int maxLv = CommonDataManager.Tables.TblRoleLevelCfg.GetOrDefault(RoleDataManager.lvl).CardLeverLimit; if (cardData.lv >= maxLv) return false; if (cardData.lv == CommonDataManager.Tables.TblCardRarityCfg.GetOrDefault(cardData.itemCfg.Rarity) .MaxCardLvl) return false; int curExp = cardData.exp; int needExp = CommonDataManager.Tables.TblCardLvlCfg.Get(cardData.itemCfg.Rarity, cardData.lv).NeedExp; int cardUpLvGoldsNeed = 0; var materials = CommonDataManager.Tables.TblGlobalCfg.UpgradeCardItems; for (int i = 0; i < materials.Count; i++) { var cardUpLvGolds = CommonDataManager.Tables.TblItemCfg.GetOrDefault(materials[i]).CardUpLvGolds[i]; for (int j = 0; j < ItemDataManager.GetItemNum(materials[i]); j++) { cardUpLvGoldsNeed += cardUpLvGolds.Count; curExp += CommonDataManager.Tables.TblItemCfg.GetOrDefault(materials[i]).CardUpLvExp; if (curExp >= needExp && ItemDataManager.GetItemNum(cardUpLvGolds.ItemId) >= cardUpLvGoldsNeed) return true; } } return false; } /// /// 词牌-升星红点 /// /// /// public bool GetCardUpStarRed(int cardId) { CardData cardData = CardDataManager.GetCardDataById(cardId); List starCfgs = CommonDataManager.Tables.TblCardStarCfg.GetGroup1ByCardId(cardId); if (cardData.star >= starCfgs.Count) return false; CardStarCfg starCfg = CommonDataManager.Tables.TblCardStarCfg.Get(cardId, cardData.star); if (ItemDataManager.GetItemNum(starCfg.CostID) < starCfg.CostNum) return false; if (cardData.lv < starCfg.NeedLv) return false; if (CardDataManager.GetUpStarEnoughMaterial(cardId) == false) return false; return true; } /// /// 词牌-词牌技能升级 /// /// /// public bool GetCardSkillsRed(int cardId) { List skillCfgs = CommonDataManager.Tables.TblPassivitySkillCfg.GetGroup1ByCardId(cardId); for (int i = 0; i < skillCfgs.Count; i++) { if (GetCardSkillRed(skillCfgs[i].SkillId)) return true; } return false; } /// /// 词牌-词牌技能升级 /// /// /// public bool GetCardSkillRed(int skillId) { PassivitySkillCfg skillCfg = CommonDataManager.Tables.TblPassivitySkillCfg.GetOrDefault(skillId); int skillLv = SkillDataManager.Instance.GetCardSkillLv(skillCfg.CardId, skillId); PassivitySkillLvlCfg skillLvlCfg = CommonDataManager.Tables.TblPassivitySkillLvlCfg.Get(skillLv, skillId); PassivitySkillLvlCfg nextSkillLvlCfg = CommonDataManager.Tables.TblPassivitySkillLvlCfg.Get(skillLv + 1, skillId); if (nextSkillLvlCfg == null || skillLvlCfg.Materiars.Count == 0) return false; long itemHas = ItemDataManager.GetItemNum(skillLvlCfg.Materiars[0].ItemId); int itemNeed = skillLvlCfg.Materiars[0].Count; long costHas = ItemDataManager.GetItemNum(skillLvlCfg.CostID); int costNeed = skillLvlCfg.CostNum; return itemHas >= itemNeed && costHas >= costNeed; } //词牌-词牌升星奖励状态 public bool GetCardStarReward(int cardId) { CardData cardData = CardDataManager.GetCardDataById(cardId); List cardStarCfgs = CommonDataManager.Tables.TblCardStarCfg.GetGroup1ByCardId(cardId); for (int i = 0; i < cardStarCfgs.Count; i++) { if (cardStarCfgs[i].Rewards.Count > 0 && cardData.starRewardsState.ContainsKey(cardStarCfgs[i].StarLvl) && cardData.starRewardsState[cardStarCfgs[i].StarLvl] == ConstBonusStatus.CAN_GET) return true; } return false; } /// /// 服装养护红点 /// /// public bool GetClothingFosterRed() { List _suitIds = SuitUtil.GetClothingFosterSuitIdList(true, true, 0); for (int i = 0; i < _suitIds.Count; i++) { if (GetClothingFosterRed(_suitIds[i]) || GetClothingRenewRed(_suitIds[i])) return true; } return false; } /// /// 服装养护红点 /// /// /// public bool GetClothingFosterRed(int suitId) { int index = SuitFosterDataManager.Instance.GetSuitFosterData(suitId).maintainStep; List fosterCfgs = CommonDataManager.Tables.TblSuitFosterCfg.GetGroup1BySuitId(suitId); if (index >= fosterCfgs.Count) { return false; } if (!DressUpMenuSuitDataManager.CheckHaveSuit(suitId)) return false; SuitFosterCfg fosterCfg = fosterCfgs[index]; if (fosterCfg.Materials.Count == 0) return false; CardData cardData = new CardData(); List itemCfgs = CommonDataManager.Tables.TblItemCfg.GetGroup1BySuitId(suitId); for (int i = 0; i < itemCfgs.Count; i++) { if (itemCfgs[i].ItemType == ConstItemType.CARD) { cardData = CardDataManager.GetCardDataById(itemCfgs[i].Id); break; } } if (cardData != null && fosterCfg.CardStar > 0 && cardData.star < fosterCfg.CardStar) { return false; } long itemHas = ItemDataManager.GetItemNum(fosterCfg.Materials[0].ItemId); int itemNeed = fosterCfg.Materials[0].Count; long costHas = ItemDataManager.GetItemNum(fosterCfg.CostId); int costNeed = fosterCfg.CostNum; return itemHas >= itemNeed && costHas >= costNeed; } /// /// 服装换新红点 /// /// /// public bool GetClothingRenewRed(int suitId) { SuitFosterData suitFosterData = SuitFosterDataManager.Instance.GetSuitFosterData(suitId); if (suitFosterData.makeNewState > 0) return false; List fosterCfgs = CommonDataManager.Tables.TblSuitFosterCfg.GetGroup1BySuitId(suitId); SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId); SuitRenewCfg renewCfg = CommonDataManager.Tables.TblSuitRenewCfg.GetOrDefault(suitCfg.Rarity); if (suitFosterData.maintainStep >= fosterCfgs.Count && ItemDataManager.GetItemNum(renewCfg.CostId) >= renewCfg.CostNum && ItemDataManager.GetItemNum(renewCfg.Materials[0].ItemId) >= renewCfg.Materials[0].Count) { return true; } return false; } /// /// 服装合成红点 /// /// public bool GetClothingSyntheticRed() { return GetClothingSyntheticTabRed(1) || GetClothingSyntheticTabRed(2) || GetClothingSyntheticTabRed(3); } /// /// 服装合成页签红点 /// /// /// public bool GetClothingSyntheticTabRed(int tab) { List suitCfgs = CommonDataManager.Tables.TblSuitCfg.GetGroup1BySyntheticType(tab); for (int i = 0; i < suitCfgs.Count; i++) { if (GetClothingSyntheticBonusRed(suitCfgs[i].Id) || GetClothingSyntheticRewardRed(suitCfgs[i].Id)) return true; bool isLevelPass = InstanceZonesDataManager.CheckLevelPass(suitCfgs[i].SyntheticStoryLevelId); if (!isLevelPass) continue; if (GetClothingSyntheticRed(suitCfgs[i].Id)) return true; } return false; } /// /// 服装合成红点 /// /// /// public bool GetClothingSyntheticRed(int suitId) { int status = DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId); SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId); if (suitCfg == null) return false; for (int i = 0; i < suitCfg.Parts.Count; i++) { if (CheckCanSynthetic(suitCfg.Parts[i])) return true; } return false; } /// /// 服装合成奖励红点 /// /// /// public bool GetClothingSyntheticBonusRed(int suitId) { bool isLock = false; int status = DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId); SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId); if (suitCfg.SyntheticStoryLevelId > 0) { bool isLevelPass = InstanceZonesDataManager.CheckLevelPass(suitCfg.SyntheticStoryLevelId); if (!isLevelPass) { isLock = true; } } if (suitCfg.SyntheticPreSuitId > 0) { bool hasPreSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitCfg.SyntheticPreSuitId); if (!hasPreSuit) { isLock = true; } } return status == ConstBonusStatus.CAN_GET && !isLock; } /// /// 套装合成奖励2红点 /// /// /// public bool GetClothingSyntheticRewardRed(int suitId) { bool isLock = false; int status = DressUpMenuSuitDataManager.GetSuitSyntheticRewardStatus(suitId); SuitCfg suitCfg = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(suitId); if (suitCfg.SyntheticStoryLevelId > 0) { bool isLevelPass = InstanceZonesDataManager.CheckLevelPass(suitCfg.SyntheticStoryLevelId); if (!isLevelPass) { isLock = true; } } if (suitCfg.SyntheticPreSuitId > 0) { bool hasPreSuit = DressUpMenuSuitDataManager.CheckHaveSuit(suitCfg.SyntheticPreSuitId); if (!hasPreSuit) { isLock = true; } } return status == ConstBonusStatus.CAN_GET && !isLock; } /// /// 合成-服装部件红点 /// /// /// /// public bool CheckCanSynthetic(int itemId) { //合成材料判断 if (ItemDataManager.GetItemNum(itemId) > 0) return false; ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId); if (itemCfg == null || ItemDataManager.GetItemNum(itemCfg.SyntheticCostID) < itemCfg.SyntheticCostNum) { return false; } List materiarsOfSelectedItem = ItemUtil.CreateItemDataList(itemCfg.SyntheticMateriars.ToGfgGameItemParam()); for (int i = 0; i < materiarsOfSelectedItem.Count; i++) { ItemData itemData = materiarsOfSelectedItem[i]; long numSynthetic = ItemDataManager.GetItemNum(itemData.id); if (numSynthetic < itemData.num) { return false; } } return true; } /// /// 卡牌合成红点 /// /// /// /// public int count = 0; public bool CheckCardCanSynthetic(int itemId) { GetCardTimers(itemId).Coroutine(); ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemId); if (count >= itemCfg.SyntheticTimes) { return false; } if (itemCfg == null || ItemDataManager.GetItemNum(itemCfg.SyntheticCostID) < itemCfg.SyntheticCostNum || itemCfg.SyntheticTimes <= 0) { return false; } List materiarsOfSelectedItem = ItemUtil.CreateItemDataList(itemCfg.SyntheticMateriars.ToGfgGameItemParam()); for (int i = 0; i < materiarsOfSelectedItem.Count; i++) { ItemData itemData = materiarsOfSelectedItem[i]; long numSynthetic = ItemDataManager.GetItemNum(itemData.id); if (numSynthetic < itemData.num) { return false; } } return true; } public async ETTask GetCardTimers(int itemId) { //合成材料判断 var response = await ClothingSyntheticSProxy.GetCardSyntheticCount(itemId); count = response; return true; } /// /// 商城 /// /// public bool GetShopRed() { return GetChargeAddUpRewardRed() || GetGiftBagRewardRed() || GetGoldCardRewardRed() || GetBlackCardRewardRed() || GetBlackCardClothingRed() || GetStoreBrocadeWeavRewardRed() || GetGiftBagRebateRed() || GetGrowthFundRewardRed() || ActivityAfuGiftDataManager.Instance.GetSummerGiftRewardAllState(); } //商店-充值-会员中心 public bool GetChargeAddUpRewardRed() { List vipCfgs = CommonDataManager.Tables.TblVipCfg.DataList; // VipCfg[] vipCfgs = VipCfgArray.Instance.dataArray; for (int i = 1; i < vipCfgs.Count; i++) { bool isGet = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.VipGetStatus), vipCfgs[i].Id); if (!isGet && RoleDataManager.vipLv >= vipCfgs[i].Id) return true; } return GameGlobal.myNumericComponent.GetAsInt(NumericType.VipWeekGetStatus) == 0 && RoleDataManager.vipLv > 0; } //商店-礼包-活动礼包 public bool GetGiftBagRewardRed() { List shopCfgs = CommonDataManager.Tables.TblShopCfg.GetGroup1ByMenu1AndMenu2(ConstStoreTabId.STORE_GIFT_BAG, ConstStoreSubId.STORE_GIFT_BAG_ACTIVITY); shopCfgs = ShopDataManager.Instance.RemoveNotOpenCfg(shopCfgs); for (int i = 0; i < shopCfgs.Count; i++) { if (shopCfgs[i].Price == 0 && ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgs[i].Id) < shopCfgs[i].MaxBuyNum) return true; } return false; } //商店-礼包-返利商城 public bool GetGiftBagRebateRed() { List shopCfgs = CommonDataManager.Tables.TblShopCfg.GetGroup1ByMenu1AndMenu2(ConstStoreTabId.STORE_GIFT_BAG, ConstStoreSubId.STORE_GIFT_BAG_REBATE); foreach (var info in shopCfgs) { var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(info.ItemId); if (weekGiftBoxState) return true; } return false; } /// /// 商城-月卡-成长基金 /// /// public bool GetGrowthFundBuy() { ShopCfg shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault( CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(3002).Params1[0]); var remainBuyNum = shopCfg.MaxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.Id); if (remainBuyNum == 0) { //已售完 return true; } else { //未售完 return false; } } public bool GetGrowthFundRewardRed() { if (ShopDataManager.Instance.GrowthFundRewardList.Count == CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count ) { return false; } if (!GetGrowthFundBuy()) { return false; } for (int i = 0; i < CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count - 1; i++) { if (RoleDataManager.lvl < CommonDataManager.Tables.TblGrowthFundCfg.DataList[i].Level) { //可领取数量和已领取数量比较 if (i != ShopDataManager.Instance.GrowthFundRewardList.Count) { return true; } } } if (RoleDataManager.lvl >= CommonDataManager.Tables.TblGrowthFundCfg.DataList[CommonDataManager.Tables.TblGrowthFundCfg.DataList.Count - 1].Level) { return true; } return false; } /// /// 商城-月卡-红包卡 /// /// public bool GetGoldCardRewardRed() { return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.Gold) && GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardGoldReward) <= 0; } /// /// 商城-月卡-福气卡 /// /// public bool GetBlackCardRewardRed() { return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.BlackGold) && GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardBlackGoldReward) <= 0; } /// /// 商城-月卡-福气卡-单品奖励 /// /// public bool GetBlackCardClothingRed() { int _year = TimeUtil.GetCurYear(); int _month = TimeUtil.GetCurMonth(); MonthlyCardClothesCfg clothesCfg = CommonDataManager.Tables.TblMonthlyCardClothesCfg.Get(_year, _month); return RoleDataManager.CheckIsMonthCardOpenByType(MonthCardType.BlackGold) && !MathUtil.isBitSet( GameGlobal.myNumericComponent.GetAsInt(NumericType.MonthCardExclusiveClothesMouth), _month); } /// /// 商城-月卡-锦罗织造 /// /// public bool GetStoreBrocadeWeavRewardRed() { return TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.BattlePass) || BattlePassTaskDataManager.Instance.CheckStoreBrocadeWeavRed(); } /// /// 联盟 /// /// public bool GetLeagueRed() { return GetLeagueMemberJoinRed() || LeagueDataManager.Instance.Type == LeagueJoinType.UnJoin || GetLeagueGiftBoxRed() || GetLeaguePrayRed() || GetLeagueTeaPartyRed(); } /// /// 联盟-成员申请 /// /// public bool GetLeagueMemberJoinRed() { LeagueHotelCfg hotelCfg = CommonDataManager.Tables.TblLeagueHotelCfg.GetOrDefault(LeagueDataManager.Instance.HotelLevel); int myPos = LeagueDataManager.Instance.GetMyPos(); return LeagueDataManager.Instance.Type == LeagueJoinType.Join && (myPos == LeaguePos.Owner || myPos == LeaguePos.SubOwner) && LeagueDataManager.Instance.ListApplyDatas.Count > 0 && LeagueDataManager.Instance.LeagueData.Num < hotelCfg.Limit; } /// /// 联盟-雅集福利 /// /// public bool GetLeagueGiftBoxRed() { if (LeagueDataManager.Instance.Type == LeagueJoinType.UnJoin) return false; List _getDatas = LeagueDataManager.Instance.GetGiftGetDatas(); for (int i = 0; i < _getDatas.Count; i++) { if (!_getDatas[i].IsGet) return true; } return false; } /// /// 联盟-雅集祈福 /// /// public bool GetLeaguePrayRed() { return LeagueDataManager.Instance.GetPrayTimesByType(LeaguePrayType.First) == 0; } /// /// 联盟-茶话会 /// /// public bool GetLeagueTeaPartyRed() { return LeagueDataManager.Instance.CheckTeaPartyRewardCanGet(); } /// /// 限时抽奖活动奖励 /// /// public bool GetActLuckyBoxRewardRed(int _typeId) { int _activityId = ActivityDataManager.Instance.actLuckyBoxId; var _allPlayTimes = ActivityDataManager.Instance.allPlayTimes; var _bonusState = ActivityDataManager.Instance.luckyBoxActBonusState; if (_typeId == ConstLimitTimeActivityType.ActLimitTsy) { _activityId = ActivityDataManager.Instance.actLimitTsyId; _allPlayTimes = ActivityDataManager.Instance.allTsyPlayTimes; _bonusState = ActivityDataManager.Instance.luckyActTsyBonusState; } else if (_typeId == ConstLimitTimeActivityType.ActLimitStlyc) { _activityId = ActivityDataManager.Instance.actLimitStlycId; _allPlayTimes = ActivityDataManager.Instance.allLimitStlycTimes; _bonusState = ActivityDataManager.Instance.limitStlycActBonusState; } if (_activityId <= 0) return false; List _bonueCfgs = CommonDataManager.Tables.TblIActivityLuckybonusCfg.GetGroup1ById(_activityId); for (int i = 0; i < _bonueCfgs.Count; i++) { int key = _bonueCfgs[i].Num; int state = _bonusState.ContainsKey(key) ? _bonusState[key] : 0; bool canGet = state < ConstBonusStatus.GOT && _allPlayTimes >= _bonueCfgs[i].Num; if (canGet) return true; } return false; } /// /// 限时抽奖活动任务奖励 /// /// public bool GetActLuckyBoxTaskdRed() { if (ActivityDataManager.Instance.actLuckyBoxId <= 0) return false; List _bonueCfgs = TaskDataManager.Instance.GetTaskCfgs(TaskFuncType.LuckyBoxActivity); for (int i = 0; i < _bonueCfgs.Count; i++) { int state = TaskDataManager.Instance.GetTaskStateById(_bonueCfgs[i].Id); if (state == ConstBonusStatus.CAN_GET) return true; } return false; } /// /// 限时抽奖剧情奖励 /// /// public bool GetActLuckyBoxStudioFilingRed() { if (ActivityDataManager.Instance.actLuckyBoxId <= 0) return false; var filingChapterId = StudioDataManager.Instance.GetLuckyBoxActivityID(); StudioDataManager.Instance.filingChapterId = filingChapterId; var studioCfg = CommonDataManager.Tables.TblStudioCfg.GetOrDefault(filingChapterId); RoleLimitData limitData = RoleLimitDataManager.GetLimitData(studioCfg.Limit); if (StudioDataManager.Instance.GetStudioFilingRewardRed() || limitData.TotalPlayMax - limitData.PlayTimes > 0) return true; return false; } /// /// 开服活动(神都宸游) /// /// public bool GetOpenServerRed() { if (GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitStlyc) || GetGiftBagRewardRed() || GetMeiRiTeHuiRed() || GetOpenServerStoryRed()) return true; return false; } /// /// 摘星-每日特惠 /// /// public bool GetMeiRiTeHuiRed() { var activityInfoByTypeList = ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3); var list = activityInfoByTypeList .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList(); if (list.Count == 0) { return false; } bool isSoldOut = true; foreach (var activityInfo in list) { ActivityOpenCfg activityOpenCfg = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityInfo.ActivityId); var paramsArr = activityOpenCfg.Params1; foreach (var shopCfgId in paramsArr) { var shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault(shopCfgId); var remainBuyNum = shopCfg.MaxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgId); //只要有一个商品还能购买,就不是售罄 if (remainBuyNum > 0) { isSoldOut = false; break; } } } if (isSoldOut) { return false; } return !LimitedTimeGiftBoxDataManager.Instance.IsOpenMeiRiTeHui; } /// /// 开服活动-剧情 /// /// public bool GetOpenServerStoryRed() { var activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitStlyc); if (activityId != 0) { var activityCfg = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityId); Dictionary> storyLevelCfgs = new Dictionary>(); for (int i = 0; i < 4; i++) { ActivityStoryCfg activityStoryCfg = CommonDataManager.Tables.TblActivityStoryCfg.GetOrDefault(activityCfg.Params4[i]); var storyLevelCfg = StoryLevelConfigManager.GetConfigs(activityStoryCfg.Type,activityStoryCfg.SubType, activityCfg.Params4[i]); storyLevelCfgs.Add(i, storyLevelCfg); if ((i == 0 && !InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i][0].Id)) || (i > 0 && InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i - 1][0].Id) && !InstanceZonesDataManager.CheckLevelPass(storyLevelCfgs[i][0].Id) && ItemDataManager.ItemCollect.ContainsKey(activityStoryCfg.NeedItems[0].ItemId) && ItemDataManager.ItemCollect[activityStoryCfg.NeedItems[0].ItemId] >= activityStoryCfg.NeedItems[0].Count)) { return true; } } } return false; } /// /// 背包中存在礼包就一直给主界面 背包 红点 /// /// public bool GetMainBagGiftRed() { return ItemDataManager.BagIsExistGiftBag(); } // /// // /// 背包内 是礼包物品就一直给红点 // /// // /// // public bool GetBagGiftRed(int itemId) // { // ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId); // if (itemCfg.itemType == ConstItemType.USEABLE) // { // if (itemCfg.subType == ConstItemSubType.USEABLE_GIFT_BAG_SELECTABLE || // itemCfg.subType == ConstItemSubType.USEABLE_GIFT_BAG_RANDOM) // { // return true; // } // } // // return false; // } /// /// 福利大厅 /// /// public bool GetDailyWelfareRed() { return GetLimiteChargeRewardRed() || GetSevenDayLoginRed() || DailySignRed() || DailySupplyRed() || GetLimiteChargeRewardRed(501); } /// ///福利大厅-限时累充可领奖励红点 /// /// public bool GetLimiteChargeRewardRed() { List _limitChargeInfo = ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLC); for (int i = 0; i < _limitChargeInfo.Count; i++) { if (GetLimiteChargeRewardRed(_limitChargeInfo[i].ActivityId)) return true; } return false; } public bool GetLimiteChargeRewardRed(int activityId) { ActivityInfo _activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(activityId); if (_activityInfo == null) return false; List _rechargeCfgs = CommonDataManager.Tables.TblActivityRechargeCfg.GetGroup1ByActivityId(activityId); for (int i = 0; i < _rechargeCfgs.Count; i++) { if (_activityInfo.CountValue >= _rechargeCfgs[i].Value && _activityInfo.GetRewards.IndexOf(_rechargeCfgs[i].Id) < 0) { return true; } } return false; } /// /// 福利大厅-七天登录 /// /// public bool GetSevenDayLoginRed() { return ActivityDataManager.Instance.CanGetSevenDayBonus(); } /// /// 福利大厅-每日签到 /// /// public bool DailySignRed() { int _signCount = MathUtil.CountOnes2(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignDay)); List signCfgs = CommonDataManager.Tables.TblDailySignCfg.GetGroup1ByMonth(TimeUtil.GetCurMonth()); for (int i = 0; i < signCfgs.Count; i++) { bool isGot = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignReward), signCfgs[i].Day); if (_signCount >= signCfgs[i].Day && !isGot) return true; } return !MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignDay), TimeUtil.GetCurDay()); } /// /// 每日签到-是否签到 /// /// public bool DailySignGot() { return !MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsLong(NumericType.SignDay), TimeUtil.GetCurDay()); } /// /// 福利大厅-每日补给 /// /// public bool DailySupplyRed() { for (int i = 0; i < CommonDataManager.Tables.TblDailySupplyCfg.DataList.Count; i++) { DailySupplyCfg supplyCfg = CommonDataManager.Tables.TblDailySupplyCfg.DataList[i]; if (DailySupplyRed(supplyCfg)) return true; } return false; } /// /// 福利大厅-每日补给 /// /// public bool DailySupplyRed(DailySupplyCfg supplyCfg) { long openTime = TimeUtil.GetCurDayTime(TimeUtil.GetDateTime(supplyCfg.OpenTime).ToString("HH:mm:ss")); long endTime = TimeUtil.GetCurDayTime(TimeUtil.GetDateTime(supplyCfg.EndTime).ToString("HH:mm:ss")); bool isGet = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.DailySupplyReward), supplyCfg.Id); long curTime = TimeHelper.ServerNow(); if (!isGet && curTime > openTime && curTime < endTime) { return true; } return false; } /// /// 常驻礼包是否有需要领取的金币 /// /// public bool GetGoldRed() { var shopCfgList = CommonDataManager.Tables.TblShopCfg.GetGroup1ByMenu1AndMenu2(ConstStoreTabId.ENDURING_GIFT_BOX, ConstStoreSubId.ENDURING_GIFT_BOX_GOLD) .OrderBy(a => a.RefreshType).ToList(); foreach (var shopCfg in shopCfgList) { var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(shopCfg.ItemId); if (weekGiftBoxState) { return true; } } return false; } /// /// 常驻礼包是否有需要领取的体力 /// /// public bool GetPowerRed() { var shopCfgList = CommonDataManager.Tables.TblShopCfg.GetGroup1ByMenu1AndMenu2(ConstStoreTabId.ENDURING_GIFT_BOX, ConstStoreSubId.ENDURING_GIFT_BOX_POWER) .OrderBy(a => a.RefreshType).ToList(); foreach (var shopCfg in shopCfgList) { var weekGiftBoxState = EnduringGiftBoxDataManager.Instance.DayIsRebateGiftBox(shopCfg.ItemId); if (weekGiftBoxState) { return true; } } return false; } public bool GetActivityWanShiLiRed() { return ActivityWanShiLiDataManager.Instance.CanGetReward(); } public bool GetActivityYuanXiaoRed() { return ActivityGetYuanXiaoDataManager.Instance.HaveNewLevelCanPlay() || ActivityGetYuanXiaoDataManager.Instance.ShowTaskRedDots(TaskFuncType.YuanXiaoActivity); } public bool GetActivityFYJYRed() { return ActivityFYJYDataManager.Instance.CheckRed(); } /// /// 摘星免费抽奖 /// /// public bool GetLuckyBoxFreeTimes() { if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(LuckyBoxView).Name, false)) return false; long freeTime = LuckyBoxDataManager.Instance.GetFreeTime(LuckyBoxDataManager.BOX_ID_2); if (freeTime > 0) { if (freeTime - TimeHelper.ServerNow() < 0) return true; } freeTime = LuckyBoxDataManager.Instance.GetFreeTime(LuckyBoxDataManager.BOX_ID_3); if (freeTime > 0) { if (freeTime - TimeHelper.ServerNow() < 0) return true; } return false; } public bool CheckActivityLuckyBoxCanChallenge(int limit, int activityID) { int chapterID = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityID).Params3[0]; ActivityFightCfg chapterCfg = CommonDataManager.Tables.TblActivityFightCfg.GetOrDefault(chapterID); var list = StoryLevelConfigManager.GetConfigs(chapterCfg.Type,chapterCfg.SubType, chapterCfg.Id); RoleLimitData limitData = RoleLimitDataManager.GetLimitData(limit); int times = limitData.TotalPlayMax - limitData.PlayTimes; bool canChallenge = ((times > 0) && (!InstanceZonesDataManager.CheckLevelPass(list[list.Count - 1].Id))); return canChallenge; } public bool GetActivityLuckyBoxRed(int activityID) { int chapterID = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityID).Params3[0]; return GetMeiRiTeHuiRed() || GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitLuckyBox) || GetActLuckyBoxTaskdRed() || CheckActivityLuckyBoxCanChallenge(300, chapterID) || GetGiftBagRewardRed(); } } }