def _updateDailyQuestModel(self, model, fullUpdate=False): _logger.debug('DailyQuestsView::_updateDailyQuestModel') isEnabled = isDailyQuestsEnable() quests = sorted(self.eventsCache.getDailyQuests().values(), key=dailyQuestsSortFunc) newBonusQuests = settings.getNewCommonEvents( [q for q in quests if q.isBonus()]) self._updateRerollEnabledFlag(model) with model.dailyQuests.transaction() as tx: tx.setIsEnabled(isEnabled) if not isEnabled: return if not fullUpdate and not needToUpdateQuestsInModel( quests + newBonusQuests, tx.getQuests()): return self.__updateQuestsInModel(tx.getQuests(), quests) self.__updateMissionVisitedArray(tx.getMissionsCompletedVisited(), quests) tx.setBonusMissionVisited(not newBonusQuests) if self.__festivityController.isEnabled(): if not AccountSettings.getUIFlag(NY_DAILY_QUESTS_VISITED): tx.setPlayNYQuestLootboxAnimation(True) AccountSettings.setUIFlag(NY_DAILY_QUESTS_VISITED, True) if not AccountSettings.getUIFlag( NY_BONUS_DAILY_QUEST_VISITED ) and not tx.getBonusMissionVisited(): tx.setPlayNYBonusQuestLootboxAnimation(True) AccountSettings.setUIFlag(NY_DAILY_QUESTS_VISITED, True) AccountSettings.setUIFlag(NY_BONUS_DAILY_QUEST_VISITED, True)
def __onEventsVisited(self): quests = self.eventsCache.getAdvisableQuests() newQuests = quest_settings.getNewCommonEvents(quests.values()) if newQuests: self.__setCounter(self.TABS.MISSIONS, len(newQuests)) else: self.__hideCounter(self.TABS.MISSIONS)
def _updateDailyQuestModel(self, model, fullUpdate=False): _logger.debug('DailyQuestsView::_updateDailyQuestModel') isEnabled = isDailyQuestsEnable() quests = sorted(self.eventsCache.getDailyQuests().values(), key=dailyQuestsSortFunc) newBonusQuests = settings.getNewCommonEvents([ q for q in quests if q.isBonus() ]) self._updateRerollEnabledFlag(model) with model.dailyQuests.transaction() as tx: tx.setIsEnabled(isEnabled) if not isEnabled: return if not fullUpdate and not needToUpdateQuestsInModel(quests + newBonusQuests, tx.getQuests()): return self.__updateQuestsInModel(tx.getQuests(), quests) self.__updateMissionVisitedArray(tx.getMissionsCompletedVisited(), quests) tx.setBonusMissionVisited(not newBonusQuests)
def _getBodyData(self): missions = [] for quests in self._questMissions: status = None checkStates = [] groupIsCompleted = isAllQuestsCompleted(quests) groupIsAvailable = groupIsCompleted or hasAtLeastOneAvailableQuest(quests) if not groupIsAvailable: status = formatErrorTextWithIcon(_ms(LINKEDSET.NOT_AVAILABLE)) else: isSingleQuest = len(quests) == 1 if not groupIsCompleted and isSingleQuest: status = _ms(LINKEDSET.MISSION_NOT_COMPLETE) else: checkStates = [ quest.isCompleted() for quest in quests ] missionID = getLinkedSetMissionIDFromQuest(quests[0]) if groupIsAvailable: uiDecoration = RES_ICONS.getLinkedSetMissionItemActive(missionID) else: uiDecoration = RES_ICONS.getLinkedSetMissionItemDisable(missionID) advisable = self.eventsCache.getAdvisableQuests() advisableQuests = [ quest for quest in quests if quest.getID() in advisable ] isCornerEnable = bool(len(settings.getNewCommonEvents(advisableQuests))) missions.append({'eventID': str(missionID), 'title': _ms(LINKEDSET.getMissionName(missionID)), 'status': status, 'isAvailable': True, 'isCornerEnable': isCornerEnable, 'uiPicture': RES_ICONS.getLinkedSetMissionIconItem(missionID), 'uiDecoration': uiDecoration, 'checkStates': checkStates}) result = {'title': _ms(getLocalizedQuestNameForLinkedSetQuest(self.mainQuest)), 'description': _ms(getLocalizedQuestDescForLinkedSetQuest(self.mainQuest)), 'isButtonUseTokenEnabled': self.linkedSet.hasLinkedSetFinishToken(), 'buttonUseTokenLabel': _ms(LINKEDSET.USE_THE_TOKEN), 'uiDecoration': RES_ICONS.MAPS_ICONS_LINKEDSET_LINKEDSET_BGR_LANDING, 'missions': missions} return result
def _getNewMissionCounter(eventsCache): return ('missions', len( quest_settings.getNewCommonEvents( eventsCache.getAdvisableQuests().itervalues())))
def __updateMissionsNotification(self): quests = self.eventsCache.getAdvisableQuests() counter = len(settings.getNewCommonEvents(quests.values())) self.eventsCache.onEventsVisited({'missions': counter})