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)
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))
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 __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
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