def createQuest(questType, qID, data, progress=None, expiryTime=None):
    if questType == constants.EVENT_TYPE.PERSONAL_QUEST:
        return PersonalQuest(qID, data, progress, expiryTime)
    if questType == constants.EVENT_TYPE.GROUP:
        return Group(qID, data)
    if questType == constants.EVENT_TYPE.MOTIVE_QUEST:
        return MotiveQuest(qID, data, progress)
    if questType == constants.EVENT_TYPE.RANKED_QUEST:
        return RankedQuest(qID, data, progress)
    if questType == constants.EVENT_TYPE.TOKEN_QUEST:
        if qID.startswith('linkedset_'):
            tokenClass = LinkedSetTokenQuest
        elif isDailyQuest(qID):
            tokenClass = DailyEpicTokenQuest
        else:
            tokenClass = TokenQuest
        return tokenClass(qID, data, progress)
    questClass = Quest
    if qID.startswith('linkedset_'):
        questClass = LinkedSetQuest
    elif isPremium(qID):
        questClass = PremiumQuest
    elif isDailyQuest(qID):
        questClass = DailyQuest
    return questClass(qID, data, progress)
示例#2
0
def getEventUIDataPacker(event):
    if event.getType() == constants.EVENT_TYPE.TOKEN_QUEST:
        return TokenUIDataPacker(event)
    elif event.getType() == constants.EVENT_TYPE.PERSONAL_QUEST:
        return PrivateMissionUIDataPacker(event)
    elif isPremium(event.getID()) or isDailyQuest(event.getID()):
        return DailyQuestUIDataPacker(event)
    else:
        return BattleQuestUIDataPacker(event) if event.getType(
        ) in constants.EVENT_TYPE.LIKE_BATTLE_QUESTS else None
def getGroupTypeByID(groupID):
    if groupID in (DEFAULTS_GROUPS.UNGROUPED_QUESTS,
                   DEFAULTS_GROUPS.MOTIVE_QUESTS):
        return groupID
    if events_helpers.isMarathon(groupID):
        return DEFAULTS_GROUPS.MARATHON_QUESTS
    if events_helpers.isPremium(groupID):
        return DEFAULTS_GROUPS.PREMIUM_QUESTS
    return DEFAULTS_GROUPS.LINKEDSET_QUESTS if events_helpers.isLinkedSet(
        groupID) else DEFAULTS_GROUPS.REGULAR_GROUPED_QUESTS
示例#4
0
 def getCurrentModeQuestsForVehicle(self, vehicle, notCompleted=False):
     if self.__battleRoyaleController.isBattleRoyaleMode():
         if vehicle.isOnlyForBattleRoyaleBattles:
             return list(self.__battleRoyaleController.getQuests().values())
     if notCompleted:
         quests = [
             q for q in self.getQuestForVehicle(vehicle) if
             not isDailyEpic(q.getGroupID()) and not isDailyQuest(q.getID())
             and not isPremium(q.getID()) and not isRankedQuestID(q.getID())
             and not isBattleRoyale(q.getGroupID()) and q.shouldBeShown()
             and not q.isCompleted()
         ]
         return quests
     return [
         q for q in self.getQuestForVehicle(vehicle)
         if not isDailyEpic(q.getGroupID()) and not isDailyQuest(q.getID())
         and not isPremium(q.getID()) and not isRankedQuestID(q.getID())
         and not isBattleRoyale(q.getGroupID()) and q.shouldBeShown()
     ]
 def __filterFunc(cls, event):
     if event.getType() in (EVENT_TYPE.TOKEN_QUEST, ):
         return False
     if not event.getFinishTimeLeft():
         return False
     if event.getType() == EVENT_TYPE.MOTIVE_QUEST:
         return not event.isCompleted() and event.isAvailable()[0]
     if isPremium(
             event.getGroupID()) and not cls.lobbyContext.getServerSettings(
             ).getPremQuestsConfig().get('enabled', False):
         return False
     return False if isLinkedSet(event.getGroupID()) else True
 def userFilterFunc(q):
     if q.getType() == EVENT_TYPE.MOTIVE_QUEST and not q.isAvailable().isValid:
         return False
     if q.getType() == EVENT_TYPE.TOKEN_QUEST and isMarathon(q.getID()):
         return False
     if isLinkedSet(q.getGroupID()) and not q.isAvailable().isValid:
         return False
     if isPremium(q.getGroupID()) and not q.isAvailable().isValid:
         return False
     if self.__eventProgression.isActive() and isDailyEpic(q.getGroupID()):
         activeQuests = self.__eventProgression.getActiveQuestIDs()
         if q.getID() not in activeQuests:
             return False
     return False if isRankedSeasonOff and (isRankedDaily(q.getGroupID()) or isRankedPlatform(q.getGroupID())) else filterFunc(q)
示例#7
0
def showMission(eventID, eventType=None):
    from gui.impl.lobby.missions.daily_quests_view import DailyTabs
    if eventType == constants.EVENT_TYPE.C11N_PROGRESSION:
        itemIntCD, vehicleIntCD = parseEventID(eventID)
        service = dependency.instance(ICustomizationService)
        vehicle = service.getItemByCD(vehicleIntCD)
        service.showCustomization(vehicle.invID,
                                  lambda: showProgressiveItemsView(itemIntCD))
        return
    else:
        eventsCache = dependency.instance(IEventsCache)
        quests = eventsCache.getQuests()
        quest = quests.get(eventID)
        if eventID == BattlePassConsts.FAKE_QUEST_ID:
            hideWebBrowserOverlay()
            showMissionsBattlePass()
            return
        if quest is None:
            prefix = events_helpers.getMarathonPrefix(eventID)
            if prefix is not None:
                return showMissionsMarathon(marathonPrefix=prefix)
        if eventType is not None and eventType == constants.EVENT_TYPE.PERSONAL_MISSION:
            showPersonalMission(eventID)
        elif quest is not None:
            if events_helpers.isMarathon(quest.getGroupID()):
                groups = eventsCache.getGroups()
                group = groups.get(quest.getGroupID())
                groupContent = group.getGroupContent(quests)
                mainQuest = group.getMainQuest(groupContent)
                if mainQuest and quest.getID() != mainQuest.getID():
                    showMissionsGrouped(missionID=quest.getID(),
                                        groupID=group.getID(),
                                        anchor=group.getID())
                else:
                    showMissionsGrouped(anchor=group.getID())
            elif events_helpers.isLinkedSet(quest.getGroupID()):
                showMissionsLinkedSet()
            elif events_helpers.isDailyQuest(quest.getID()):
                showDailyQuests(subTab=DailyTabs.QUESTS)
            elif events_helpers.isPremium(quest.getID()):
                showDailyQuests(subTab=DailyTabs.PREMIUM_MISSIONS)
            else:
                showMissionsCategories(missionID=quest.getID(),
                                       groupID=quest.getGroupID(),
                                       anchor=quest.getGroupID())
        return
示例#8
0
 def userFilterFunc(q):
     qGroup = q.getGroupID()
     qIsValid = q.isAvailable().isValid
     qID = q.getID()
     if q.getType() == EVENT_TYPE.MOTIVE_QUEST and not qIsValid:
         return False
     if q.getType() == EVENT_TYPE.TOKEN_QUEST and isMarathon(qID):
         return False
     if isLinkedSet(qGroup) or isPremium(qGroup) and not qIsValid:
         return False
     if not isEpicBattleEnabled and isDailyEpic(qGroup):
         return False
     if isBattleRoyale(qGroup):
         quests = self.__battleRoyaleController.getQuests()
         if qID not in quests:
             return False
     if isMapsTraining(qGroup):
         return q.shouldBeShown()
     return False if isRankedSeasonOff and (
         isRankedDaily(qGroup)
         or isRankedPlatform(qGroup)) else filterFunc(q)
示例#9
0
 def questFilter(quest):
     return events_helpers.isDailyQuest(
         quest.getID()) or events_helpers.isPremium(quest.getID())
示例#10
0
 def __applyFilter(self, quest):
     forbiddenQuestConditions = [lambda q: q.getType() in (EVENT_TYPE.TOKEN_QUEST,), lambda q: not q.getFinishTimeLeft(), lambda q: isLinkedSet(q.getGroupID()) or isPremium(q.getGroupID())]
     if any((isForbidden(quest) for isForbidden in forbiddenQuestConditions)):
         return False
     if not g_currentVehicle.isPresent():
         return False
     return quest.isValidVehicleCondition(g_currentVehicle.item) if quest.getType() != EVENT_TYPE.MOTIVE_QUEST else quest.isValidVehicleCondition(g_currentVehicle.item) and not quest.isCompleted() and quest.isAvailable()[0]
示例#11
0
 def userFilterFunc(q):
     return isPremium(q.getGroupID()) and filterFunc(q)
示例#12
0
 def userFilterFunc(q):
     if isLinkedSet(q.getGroupID()
                    ) and not self.linkedSet.isLinkedSetEnabled():
         return False
     return False if not isPremiumQuestsEnable and isPremium(
         q.getGroupID()) else q.getFinishTimeLeft() and filterFunc(q)
def _isAvailableForMode(q):
    return not isDailyEpic(q.getGroupID()) and not isDailyQuest(
        q.getID()) and not isPremium(q.getID()) and not isRankedQuestID(
            q.getID()) and not isBattleRoyale(
                q.getGroupID()) and not isFunRandomQuest(q.getID())
 def isPremium(self):
     return events_helpers.isPremium(self.getID())
示例#15
0
 def __getBattleQuestsVO(self, vehicle):
     quests = [ q for q in self._questController.getQuestForVehicle(vehicle) if not isDailyEpic(q.getGroupID()) and not isDailyQuest(q.getID()) and not isPremium(q.getID()) and not isRankedQuestID(q.getID()) ]
     totalCount = len(quests)
     completedQuests = len([ q for q in quests if q.isCompleted() ])
     festivityFlagData = self._festivityController.getHangarQuestsFlagData()
     if totalCount > 0:
         if completedQuests != totalCount:
             label = _ms(MENU.hangarHeaderBattleQuestsLabel(LABEL_STATE.ACTIVE), total=totalCount - completedQuests)
         else:
             label = icons.makeImageTag(RES_ICONS.MAPS_ICONS_LIBRARY_OUTLINE_QUESTS_ALL_DONE)
         commonQuestsIcon = festivityFlagData.icon or RES_ICONS.MAPS_ICONS_LIBRARY_OUTLINE_QUESTS_AVAILABLE
     else:
         commonQuestsIcon = festivityFlagData.iconDisabled or RES_ICONS.MAPS_ICONS_LIBRARY_OUTLINE_QUESTS_DISABLED
         label = ''
     quests = [self._headerQuestFormaterVo(totalCount > 0, commonQuestsIcon, label, HANGAR_HEADER_QUESTS.QUEST_TYPE_COMMON, flag=festivityFlagData.flagBackground, tooltip=TOOLTIPS_CONSTANTS.QUESTS_PREVIEW, isTooltipSpecial=True)]
     return self._wrapQuestGroup(HANGAR_HEADER_QUESTS.QUEST_GROUP_COMMON, '', quests)
示例#16
0
    def _packBlocks(self, *args, **kwargs):
        items = super(QuestsPreviewTooltipData, self)._packBlocks()
        vehicle = g_currentVehicle.item
        quests = sorted([
            q for q in self._questController.getQuestForVehicle(vehicle)
            if not q.isCompleted() and self.__eventProgression.questPrefix
            not in q.getID() and not isDailyQuest(q.getID())
            and not isPremium(q.getID()) and not isRankedQuestID(q.getID())
        ],
                        key=events_helpers.questsSortFunc)
        if quests:
            items.append(
                self._getHeader(
                    len(quests), vehicle.shortUserName,
                    R.strings.tooltips.hangar.header.quests.description.
                    vehicle()))
            for quest in quests:
                bonusNames = []
                for bonus in quest.getBonuses():
                    if bonus.getName() == 'battleToken':
                        bonusNames.extend(
                            _StringTokenBonusFormatter().format(bonus))
                    bonusFormat = bonus.format()
                    if bonusFormat:
                        if isinstance(bonus, CustomizationsBonus):
                            for item in bonus.getCustomizations():
                                itemTypeName = item.get('custType')
                                if itemTypeName == 'projection_decal':
                                    itemTypeName = GUI_ITEM_TYPE_NAMES[
                                        GUI_ITEM_TYPE.PROJECTION_DECAL]
                                elif itemTypeName == 'personal_number':
                                    itemTypeName = GUI_ITEM_TYPE_NAMES[
                                        GUI_ITEM_TYPE.PERSONAL_NUMBER]
                                bonusFmt = _ms(
                                    ITEM_TYPES.customization(itemTypeName))
                                bonusNames.append(bonusFmt)

                        else:
                            bonusNames.extend(bonusFormat.split(', '))

                isAvailable, _ = quest.isAvailable()
                items.append(
                    self._packQuest(quest.getUserName(), bonusNames,
                                    isAvailable))
                if len(items) > _MAX_QUESTS_PER_TOOLTIP:
                    break

            rest = len(quests) - len(items) + 1
            if rest > 0:
                items.append(self._getBottom(rest))
        else:

            def _filter(q):
                return q.getType(
                ) not in constants.EVENT_TYPE.SHARED_QUESTS and not q.isCompleted(
                )

            allQuests = self._eventsCache.getQuests(filterFunc=_filter)
            if allQuests:
                items.append(
                    self._getHeader(
                        len(quests), vehicle.shortUserName,
                        R.strings.tooltips.hangar.header.quests.description.
                        vehicle()))
                items.append(
                    self._getBody(TOOLTIPS.HANGAR_HEADER_QUESTS_EMPTY_VEHICLE))
            else:
                items.append(
                    self._getHeader(
                        len(quests), vehicle.shortUserName,
                        R.strings.tooltips.hangar.header.quests.description()))
                items.append(self._getBody(
                    TOOLTIPS.HANGAR_HEADER_QUESTS_EMPTY))
            items.append(self._getBottom(0))
        return items