using System.Collections.Generic; using System.Linq; using Assets.Game.HotUpdate.Data; 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 = Activity7DaysCfgArray.Instance.dataArray; 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 < StoryChapterCfgArray.Instance.dataArray.Length; i++) { for (int j = 0; j < 3; j++) { int state = MainStoryDataManager.GetChapterBonusStatus(StoryChapterCfgArray.Instance.dataArray[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 = StudioCfgArray.Instance.GetCfgsByfunId(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 = RoleLevelCfgArray.Instance.GetCfg(RoleDataManager.lvl).cardLeverLimit; if (cardData.lv >= maxLv) return false; if (cardData.lv == CardRarityCfgArray.Instance.GetCfg(cardData.itemCfg.rarity).maxCardLvl) return false; int curExp = cardData.exp; int needExp = CardLvlCfgArray.Instance.GetCfgByrarityAndcardLvl(cardData.itemCfg.rarity, cardData.lv).needExp; int cardUpLvGoldsNeed = 0; int[] materials = GlobalCfgArray.globalCfg.upgradeCardItemsArr; for (int i = 0; i < materials.Length; i++) { int[] cardUpLvGolds = ItemCfgArray.Instance.GetCfg(materials[i]).cardUpLvGoldsArr[i]; for (int j = 0; j < ItemDataManager.GetItemNum(materials[i]); j++) { cardUpLvGoldsNeed += cardUpLvGolds[1]; curExp += ItemCfgArray.Instance.GetCfg(materials[i]).cardUpLvExp; if (curExp >= needExp && ItemDataManager.GetItemNum(cardUpLvGolds[0]) >= cardUpLvGoldsNeed) return true; } } return false; } /// /// 词牌-升星红点 /// /// /// public bool GetCardUpStarRed(int cardId) { CardData cardData = CardDataManager.GetCardDataById(cardId); List starCfgs = CardStarCfgArray.Instance.GetCfgsBycardId(cardId); if (cardData.star >= starCfgs.Count) return false; CardStarCfg starCfg = CardStarCfgArray.Instance.GetCfgBycardIdAndstarLvl(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 = PassivitySkillCfgArray.Instance.GetCfgsBycardId(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 = PassivitySkillCfgArray.Instance.GetCfg(skillId); int skillLv = SkillDataManager.Instance.GetCardSkillLv(skillCfg.cardId, skillId); PassivitySkillLvlCfg skillLvlCfg = PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv, skillId); PassivitySkillLvlCfg nextSkillLvlCfg = PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv + 1, skillId); if (nextSkillLvlCfg == null || skillLvlCfg.materiarsArr.Length == 0) return false; long itemHas = ItemDataManager.GetItemNum(skillLvlCfg.materiarsArr[0][0]); int itemNeed = skillLvlCfg.materiarsArr[0][1]; 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 = CardStarCfgArray.Instance.GetCfgsBycardId(cardId); for (int i = 0; i < cardStarCfgs.Count; i++) { if (cardStarCfgs[i].rewardsArr.Length > 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 = SuitFosterCfgArray.Instance.GetCfgsBysuitId(suitId); if (index >= fosterCfgs.Count) { return false; } if (!DressUpMenuSuitDataManager.CheckHaveSuit(suitId)) return false; SuitFosterCfg fosterCfg = fosterCfgs[index]; if (fosterCfg.materialsArr.Length == 0) return false; CardData cardData = new CardData(); List itemCfgs = ItemCfgArray.Instance.GetCfgsBysuitId(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.materialsArr[0][0]); int itemNeed = fosterCfg.materialsArr[0][1]; 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 = SuitFosterCfgArray.Instance.GetCfgsBysuitId(suitId); SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitId); SuitRenewCfg renewCfg = SuitRenewCfgArray.Instance.GetCfg(suitCfg.rarity); if (suitFosterData.maintainStep >= fosterCfgs.Count && ItemDataManager.GetItemNum(renewCfg.costId) >= renewCfg.costNum && ItemDataManager.GetItemNum(renewCfg.materialsArr[0][0]) >= renewCfg.materialsArr[0][1]) { return true; } return false; } /// /// 服装合成红点 /// /// public bool GetClothingSyntheticRed() { return GetClothingSyntheticTabRed(1) || GetClothingSyntheticTabRed(2) || GetClothingSyntheticTabRed(3); } /// /// 服装合成页签红点 /// /// /// public bool GetClothingSyntheticTabRed(int tab) { List suitCfgs = SuitCfgArray.Instance.GetCfgsBysyntheticType(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 = SuitCfgArray.Instance.GetCfg(suitId); if (suitCfg == null) return false; for (int i = 0; i < suitCfg.partsArr.Length; i++) { if (CheckCanSynthetic(suitCfg.partsArr[i])) return true; } return false; } /// /// 服装合成奖励红点 /// /// /// public bool GetClothingSyntheticBonusRed(int suitId) { bool isLock = false; int status = DressUpMenuSuitDataManager.GetSuitSyntheticBonusStatus(suitId); SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(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 = SuitCfgArray.Instance.GetCfg(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 = ItemCfgArray.Instance.GetCfg(itemId); if (itemCfg == null || ItemDataManager.GetItemNum(itemCfg.syntheticCostID) < itemCfg.syntheticCostNum) { return false; } List materiarsOfSelectedItem = ItemUtil.CreateItemDataList(itemCfg.syntheticMateriarsArr); 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 = ItemCfgArray.Instance.GetCfg(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.syntheticMateriarsArr); 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() { VipCfg[] vipCfgs = VipCfgArray.Instance.dataArray; for (int i = 1; i < vipCfgs.Length; 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 = ShopCfgArray.Instance.GetCfgsBymenu1Andmenu2(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 = ShopCfgArray.Instance.GetCfgsBymenu1Andmenu2(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 = ShopCfgArray.Instance.GetCfg(ActivityOpenCfgArray.Instance.GetCfg(3002).paramsArr[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 == GrowthFundCfgArray.Instance.dataArray.Length) { return false; } if (!GetGrowthFundBuy()) { return false; } for (int i = 0; i < GrowthFundCfgArray.Instance.dataArray.Length - 1; i++) { if (RoleDataManager.lvl < GrowthFundCfgArray.Instance.dataArray[i].level) { //可领取数量和已领取数量比较 if (i != ShopDataManager.Instance.GrowthFundRewardList.Count) { return true; } } } if(RoleDataManager.lvl >= GrowthFundCfgArray.Instance.dataArray[GrowthFundCfgArray.Instance.dataArray.Length-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 = MonthlyCardClothesCfgArray.Instance.GetCfgByyearAndmonth(_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 = LeagueHotelCfgArray.Instance.GetCfg(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 = ActivityLuckybonusCfgArray.Instance.GetCfgsByid(_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 = StudioCfgArray.Instance.GetCfg(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() || ActivityDataManager.Instance.CanGetNewYearLoginRed()) 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 = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId); var paramsArr = activityOpenCfg.paramsArr; foreach (var shopCfgId in paramsArr) { var shopCfg = ShopCfgArray.Instance.GetCfg(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 = ActivityOpenCfgArray.Instance.GetCfg(activityId); Dictionary> storyLevelCfgs = new Dictionary>(); for (int i = 0; i < 4; i++) { ActivityStoryCfg activityStoryCfg = ActivityStoryCfgArray.Instance.GetCfg(activityCfg.params4Arr[i]); var storyLevelCfg = StoryLevelCfgArray.Instance.GetCfgsBytypeAndsubTypeAndchapterId(activityStoryCfg.type, activityStoryCfg.subType, activityCfg.params4Arr[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.needItemsArr[0][0]) && ItemDataManager.ItemCollect[activityStoryCfg.needItemsArr[0][0]] >= activityStoryCfg.needItemsArr[0][1])) { 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 = ActivityRechargeCfgArray.Instance.GetCfgsByactivityId(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 = DailySignCfgArray.Instance.GetCfgsBymonth(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 < DailySupplyCfgArray.Instance.dataArray.Length; i++) { DailySupplyCfg supplyCfg = DailySupplyCfgArray.Instance.dataArray[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 = ShopCfgArray.Instance .GetCfgsBymenu1Andmenu2(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 = ShopCfgArray.Instance .GetCfgsBymenu1Andmenu2(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 = ActivityOpenCfgArray.Instance.GetCfg(activityID).params3Arr[0]; ActivityFightCfg chapterCfg = ActivityFightCfgArray.Instance.GetCfg(chapterID); var list = StoryLevelCfgArray.Instance.GetCfgsBytypeAndsubTypeAndchapterId(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 = ActivityOpenCfgArray.Instance.GetCfg(activityID).params3Arr[0]; return GetMeiRiTeHuiRed() || GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitLuckyBox) || GetActLuckyBoxTaskdRed() || CheckActivityLuckyBoxCanChallenge(300, chapterID) || GetGiftBagRewardRed(); } } }