示例#1
0
def makeCantJoinReasonTextVO(event, playerData):
    playerState = playerData.getPlayerStateByEventId(event.getEventID())
    stateReasons = playerState.getPlayerStateReasons() if playerState else []
    stateReason = stateReasons[0] if stateReasons else None
    tooltip = None
    buttonVisible = False
    if event.isRegistrationFinished():
        result = formatErrorTextWithIcon(
            EVENT_BOARDS.STATUS_CANTJOIN_REASON_ENDREGISTRATION)
    elif _psr.SPECIALACCOUNT in stateReasons:
        result = getStatusTitleStyle(
            _ms(EVENT_BOARDS.STATUS_CANTJOIN_REASON_SPECIAL))
    elif stateReason is _psr.WASUNREGISTERED:
        result = getStatusTitleStyle(
            _ms(EVENT_BOARDS.STATUS_CANTJOIN_REASON_LEFTEVENT))
        tooltip = makeTooltip(
            EVENT_BOARDS.STATUS_CANTJOIN_REASON_LEFTEVENT,
            EVENT_BOARDS.STATUS_CANTJOIN_REASON_LEFTEVENT_TOOLTIP)
    else:
        limits = event.getLimits()
        if len(stateReasons) > 1:
            reasonText = _ms(EVENT_BOARDS.STATUS_CANTJOIN_REASON_MANY,
                             number=len(stateReasons))
            tooltip = _makeCantJoinReasonTooltip(stateReasons, playerData,
                                                 limits)
        elif stateReason is _psr.BYWINRATE:
            winRate = playerData.getWinRate()
            winRateMin = limits.getWinRateMin()
            winRateMax = limits.getWinRateMax()
            if winRate < winRateMin:
                reasonText = _ms(
                    EVENT_BOARDS.STATUS_CANTJOIN_REASON_BYWINRATELOW,
                    number=str(winRateMin))
            else:
                reasonText = _ms(
                    EVENT_BOARDS.STATUS_CANTJOIN_REASON_BYWINRATEHIGH,
                    number=str(winRateMax))
        elif stateReason is _psr.BYAGE:
            date = BigWorld.wg_getShortDateFormat(
                limits.getRegistrationDateMaxTs())
            reasonText = _ms(EVENT_BOARDS.STATUS_CANTJOIN_REASON_BYAGE,
                             date=date)
        elif stateReason is _psr.BYBATTLESCOUNT:
            battlesCount = playerData.getBattlesCount()
            reasonText = _ms(
                EVENT_BOARDS.STATUS_CANTJOIN_REASON_BYBATTLESCOUNT,
                number=battlesCount)
        elif stateReason is _psr.BYBAN:
            reasonText = _ms(EVENT_BOARDS.STATUS_CANTJOIN_REASON_BANNED)
        elif stateReason is _psr.VEHICLESMISSING:
            reasonText = _ms(
                EVENT_BOARDS.STATUS_CANTJOIN_REASON_VEHICLESMISSING)
        else:
            reasonText = ''
        notAvailableText = formatErrorTextWithIcon(
            EVENT_BOARDS.STATUS_CANTJOIN_NOTAVAILABLE)
        reasonText = text_styles.main(reasonText)
        result = '{} {}'.format(notAvailableText, reasonText)
        buttonVisible = True
    return (result, tooltip, buttonVisible)
示例#2
0
 def _getViewDataForNotAvailableMission(self):
     missionBlockerName = _ms(
         LINKEDSET.getMissionName(
             self.getBlockerMissionIDFor(self._missionID)))
     missionName = _ms(LINKEDSET.getMissionName(self._missionID))
     return self._getViewData(
         title=missionName,
         status=formatErrorTextWithIcon(_ms(LINKEDSET.NOT_AVAILABLE)),
         info=_ms(LINKEDSET.NOT_AVAILABLE),
         task=_ms(LINKEDSET.COMPLETE_MISSION_BEFORE,
                  mission_name=missionBlockerName),
         description=_ms(LINKEDSET.REWARD_FOR_UNCOMPLETED_MISSION,
                         quest_name=missionName),
         isBackOverlay=False,
         isMovie=False,
         back=self.getMissionDisableBackground(self._missionID),
         awards=self.getAwardsFromQuests(self._quests, False))
示例#3
0
    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
示例#4
0
 def __updateStatus(self):
     event = self.__eventData
     playerState = self.__playerState
     myInfo = self.__myInfo
     state = playerState.getPlayerState() if playerState else None
     canJoin = playerState.getCanJoin() if playerState else True
     stateReasons = playerState.getPlayerStateReasons(
     ) if playerState else []
     joined = state is _es.JOINED
     cardinality = event.getCardinality()
     battleCount = myInfo.battlesCount if myInfo else 0
     notFull = cardinality is not None and battleCount < cardinality
     outOfScore = not myInfo.fullData.getIsInsideViewsize(
     ) if myInfo else False
     visible = True
     title = ''
     tooltip = None
     showPoints = False
     titleTooltip = None
     buttonVisible = False
     buttonEnabled = False
     buttonLabel = TOOLTIPS.ELEN_BUTTON_REGISTRATION_STARTED_HEADER
     buttonTooltip = makeTooltip(
         buttonLabel, TOOLTIPS.ELEN_BUTTON_REGISTRATION_STARTED_BODY)
     method = event.getMethod()
     if event.isFinished():
         if not joined:
             title = getStatusTitleStyle(
                 _ms(EVENT_BOARDS.EXCEL_PARTICIPATE_NOTPARTICIPATED))
         elif notFull:
             title = getStatusTitleStyle(
                 _ms(EVENT_BOARDS.EXCEL_PARTICIPATE_NOTPARTICIPATED))
         elif outOfScore:
             showPoints = True
             title = getStatusTitleStyle(
                 _ms(EVENT_BOARDS.STATUS_CANTJOIN_REASON_OUTOFRATING))
         else:
             visible = False
     elif joined:
         if notFull:
             showPoints = True
             count = getStatusCountStyle(str(cardinality - battleCount))
             title = getStatusTitleStyle(
                 _ms(EVENT_BOARDS.EXCEL_HEADER_REASON_BATTLESLEFT,
                     number=count))
         elif outOfScore:
             showPoints = True
             title = getStatusTitleStyle(
                 _ms(EVENT_BOARDS.STATUS_CANTJOIN_REASON_OUTOFRATING))
         else:
             visible = False
     elif event.isRegistrationFinished():
         title = formatErrorTextWithIcon(
             EVENT_BOARDS.STATUS_CANTJOIN_REASON_ENDREGISTRATION)
         tooltip = makeTooltip(
             EVENT_BOARDS.STATUS_CANTJOIN_REASON_ENDREGISTRATION,
             EVENT_BOARDS.STATUS_CANTJOIN_REASON_ENDREGISTRATION_TOOLTIP)
     elif canJoin:
         buttonVisible = _psr.SPECIALACCOUNT not in stateReasons
         buttonEnabled = True
     else:
         title, tooltip, buttonVisible = makeCantJoinReasonTextVO(
             event, self.__playerData)
     if joined and outOfScore and notFull and not event.isFinished():
         amount = myInfo.fullData.getLastInLeaderboardValue()
         parameter = event.getObjectiveParameter()
         titleTooltip = makeParameterTooltipVO(method, amount, parameter)
     playerName = getattr(BigWorld.player(), 'name', '')
     playerName = getFullName(playerName, myInfo.fullData.getClanTag(),
                              myInfo.fullData.getClanColor())
     myPosition = self.__myInfo.rank
     self.as_setStatusVisibleS(visible)
     self.as_setMyPlaceVisibleS(not visible and myPosition is not None)
     if visible:
         p1 = myInfo.fullData.getP1()
         p2 = myInfo.fullData.getP2()
         p3 = myInfo.fullData.getP3()
         self.as_setStatusDataS(
             makeEventBoardsTableViewStatusVO(title, tooltip, playerName,
                                              p1, p2, p3, showPoints,
                                              buttonLabel, buttonTooltip,
                                              buttonVisible, buttonEnabled,
                                              titleTooltip, method))
     return
示例#5
0
 def _getViewDataForAvailableMission(self):
     selectedQuest = self._quests[self._selectedQuestID]
     isCompleted = selectedQuest.isCompleted()
     isAvailable = isCompleted or selectedQuest.isAvailable().isValid
     if isCompleted:
         cardStatus = formatOkTextWithIcon(_ms(LINKEDSET.COMPLETED))
     elif isAvailable:
         cardStatus = _ms(LINKEDSET.AVAILABLE)
     else:
         cardStatus = formatErrorTextWithIcon(_ms(LINKEDSET.NOT_AVAILABLE))
     if len(self._quests) > 1:
         cardTitle = _ms(LINKEDSET.QUEST_CARD_TITLE,
                         mission_name=_ms(
                             LINKEDSET.getMissionName(self._missionID)),
                         quest_name=getLocalizedQuestNameForLinkedSetQuest(
                             selectedQuest))
     else:
         cardTitle = getLocalizedQuestNameForLinkedSetQuest(selectedQuest)
     if isCompleted:
         return self._getViewData(
             title=cardTitle,
             status=cardStatus,
             info=_ms(LINKEDSET.COMPLETED),
             task=_ms(LINKEDSET.REWARD_FOR_COMPLETED_QUEST,
                      quest_name=cardTitle),
             isBackOverlay=isCompleted,
             isMovie=False,
             back=self.getMissionCompleteBackground(self._missionID),
             awards=self.getAwardsFromQuest(selectedQuest))
     elif isAvailable:
         isMovie = self.isQuestBackgroundIsMovie(selectedQuest)
         if isMovie:
             self._setupFlashAnimTexts()
             back = _getQuestItemActiveAnimBackground(
                 self._missionID, self._selectedQuestID + 1)
         else:
             back = self.getQuestActiveBackground(self._missionID,
                                                  self._selectedQuestID + 1)
         if self.isPlayBootcampMission():
             questName = getLocalizedQuestNameForLinkedSetQuest(
                 selectedQuest)
             if self.bootcamp.runCount():
                 btnStartLabel = LINKEDSET.CONTINUE_QUEST_BTN
             else:
                 btnStartLabel = LINKEDSET.START_QUEST_BTN
             btnStartLabel = _ms(btnStartLabel, quest_name=questName)
         else:
             btnStartLabel = None
         progressValue = None
         curProgress, maxProgress = getProgressFromQuestWithSingleAccumulative(
             selectedQuest)
         if curProgress is not None and maxProgress:
             cardStatus = makeHtmlString(
                 'html_templates:lobby/quests/linkedSet',
                 'questProgressTemplate', {
                     'curValue': curProgress,
                     'maxValue': maxProgress
                 })
             progressValue = curProgress * 100 // maxProgress
         return self._getViewData(
             title=cardTitle,
             status=cardStatus,
             description=getLocalizedQuestDescForLinkedSetQuest(
                 selectedQuest),
             isBackOverlay=isCompleted,
             isMovie=isMovie,
             back=back,
             awards=self.getAwardsFromQuest(selectedQuest),
             btnStartLabel=btnStartLabel,
             progressValue=progressValue)
     else:
         questBeforeID = self._quests[self._selectedQuestID - 1]
         questBeforeName = _ms(
             LINKEDSET.QUEST_CARD_TITLE,
             mission_name=_ms(LINKEDSET.getMissionName(self._missionID)),
             quest_name=getLocalizedQuestNameForLinkedSetQuest(
                 questBeforeID))
         return self._getViewData(
             title=cardTitle,
             status=cardStatus,
             info=_ms(LINKEDSET.NOT_AVAILABLE),
             task=_ms(LINKEDSET.COMPLETE_QUEST_BEFORE,
                      quest_name=questBeforeName),
             isBackOverlay=isCompleted,
             isMovie=False,
             back=self.getMissionCompleteBackground(self._missionID),
             awards=self.getAwardsFromQuest(selectedQuest, alpha=0.5))
         return
 def getParticipateInfo(self):
     event = self._event
     playerData = self._playerData
     started = event.isStarted()
     isRegistrationFinished = event.isRegistrationFinished()
     participateTooltip = None
     buttonTooltip = None
     participate = ''
     buttonLabel = ''
     title = ''
     titleTooltip = ''
     isButton = False
     isButtonRegistration = not self._joined and self._canJoin and not isRegistrationFinished
     isButtonEnabled = True
     isButtonRegistrationEnabled = True
     dateTs = event.getParticipantsFreezeDeadlineTs()
     date = formatTimeAndDate(dateTs)
     if event.isFinished():
         return {}
     else:
         if started:
             buttonRegistrationLabel = EVENT_BOARDS.EXCEL_PARTICIPATE_JOIN
             buttonRegistrationTooltip = makeTooltip(
                 TOOLTIPS.ELEN_BUTTON_REGISTRATION_STARTED_HEADER,
                 TOOLTIPS.ELEN_BUTTON_REGISTRATION_STARTED_BODY)
         else:
             buttonRegistrationLabel = EVENT_BOARDS.TABLE_SELECTREGISTRATIONBTN
             buttonRegistrationTooltip = makeTooltip(
                 TOOLTIPS.ELEN_BUTTON_REGISTRATION_NOTSTARTED_HEADER,
                 TOOLTIPS.ELEN_BUTTON_REGISTRATION_NOTSTARTED_BODY)
         if self._joined:
             isButton = True
             buttonLabel = EVENT_BOARDS.HEADER_PARTICIPATE_BUTTON_LEAVE
             if isRegistrationFinished:
                 participate = formatOkTextWithIcon(
                     EVENT_BOARDS.HEADER_PARTICIPATE_STARTED)
                 participateTooltip = makeTooltip(
                     EVENT_BOARDS.STATUS_CANTJOIN_REASON_ENDREGISTRATION,
                     TOOLTIPS.
                     ELEN_BUTTON_HEADER_PARTICIPATE_CANTLEAVE_HEADER)
                 buttonTooltip = makeTooltip(
                     TOOLTIPS.ELEN_BUTTON_HEADER_PARTICIPATE_LEAVE_HEADER,
                     _ms(TOOLTIPS.
                         ELEN_BUTTON_HEADER_PARTICIPATE_CANTLEAVE_BODY,
                         date=date))
                 isButtonEnabled = False
                 isButtonRegistrationEnabled = False
             elif started:
                 participate = formatOkTextWithIcon(
                     EVENT_BOARDS.HEADER_PARTICIPATE_STARTED)
                 participateTooltip = makeTooltip(
                     TOOLTIPS.ELEN_HEADER_PARTICIPATE_STARTED_HEADER,
                     TOOLTIPS.ELEN_HEADER_PARTICIPATE_STARTED_BODY)
                 buttonTooltip = makeTooltip(
                     TOOLTIPS.ELEN_BUTTON_HEADER_PARTICIPATE_LEAVE_HEADER,
                     _ms(TOOLTIPS.ELEN_BUTTON_HEADER_PARTICIPATE_LEAVE_BODY,
                         date=date))
             else:
                 participate = formatOkTextWithIcon(
                     EVENT_BOARDS.HEADER_PARTICIPATE_NOTSTARTED)
                 participateTooltip = makeTooltip(
                     TOOLTIPS.ELEN_HEADER_PARTICIPATE_NOTSTARTED_HEADER,
                     TOOLTIPS.ELEN_HEADER_PARTICIPATE_NOTSTARTED_BODY)
                 buttonTooltip = makeTooltip(
                     TOOLTIPS.
                     ELEN_HEADER_PARTICIPATE_BUTTON_LEAVENOTSTARTED_HEADER,
                     _ms(TOOLTIPS.
                         ELEN_HEADER_PARTICIPATE_BUTTON_LEAVENOTSTARTED_BODY,
                         date=date))
         elif isRegistrationFinished:
             participate = formatErrorTextWithIcon(
                 EVENT_BOARDS.STATUS_CANTJOIN_REASON_ENDREGISTRATION)
             participateTooltip = makeTooltip(
                 EVENT_BOARDS.STATUS_CANTJOIN_REASON_ENDREGISTRATION,
                 EVENT_BOARDS.STATUS_CANTJOIN_REASON_ENDREGISTRATION_TOOLTIP
             )
             isButtonEnabled = False
             isButtonRegistrationEnabled = False
         elif not self._canJoin:
             if self._stateReasons:
                 title, titleTooltip, isButtonRegistration = makeCantJoinReasonTextVO(
                     event, playerData)
                 if _psr.SPECIALACCOUNT in self._stateReasons or _psr.WASUNREGISTERED in self._stateReasons:
                     title = ''
                     titleTooltip = None
                 elif _psr.WASUNREGISTERED in self._stateReasons:
                     participateTooltip = makeTooltip(
                         EVENT_BOARDS.STATUS_CANTJOIN_REASON_LEFTEVENT,
                         EVENT_BOARDS.
                         STATUS_CANTJOIN_REASON_LEFTEVENT_TOOLTIP)
                 isButtonRegistrationEnabled = False
                 reasonText = self._cantJoinReason[self._stateReasons[0]]
                 participate = formatErrorTextWithIcon(reasonText)
         result = {
             'participate': participate,
             'participateTooltip': participateTooltip,
             'buttonLabel': buttonLabel,
             'buttonTooltip': buttonTooltip,
             'isButton': isButton,
             'isButtonEnabled': isButtonEnabled,
             'eventID': event.getEventID(),
             'title': title,
             'isButtonRegistration': isButtonRegistration,
             'isButtonRegistrationEnabled': isButtonRegistrationEnabled,
             'titleTooltip': titleTooltip,
             'buttonRegistrationTooltip': buttonRegistrationTooltip,
             'buttonRegistrationLabel': buttonRegistrationLabel
         }
         return result