def __init__(self, tankman): self.__tankman = tankman restorePrice, _ = getTankmenRestoreInfo(tankman) super(TankmanRestore, self).__init__(tankman, (plugins.TankmanLockedValidator(tankman), plugins.TankmanOperationConfirmator('restoreTankman', tankman), plugins.BarracksSlotsValidator(berthsNeeded=1), plugins.MoneyValidator(restorePrice), plugins.IsLongDisconnectedFromCenter()))
def __init__(self, tankman): raise tankman is not None or AssertionError('tankman must be given') self.__tankman = tankman restorePrice, _ = getTankmenRestoreInfo(tankman) super(TankmanRestore, self).__init__(tankman, [plugins.TankmanOperationConfirmator('restoreTankman', tankman), plugins.BarracksSlotsValidator(berthsNeeded=1), plugins.MoneyValidator(restorePrice), plugins.IsLongDisconnectedFromCenter()]) return
def _successHandler(self, code, ctx=None): restorePrice, _ = getTankmenRestoreInfo(self.__tankman) if restorePrice: currency = restorePrice.getCurrency() return makeI18nSuccess('restore_tankman/financial_success', type=_getSysMsgType(restorePrice), money=formatPriceForCurrency( restorePrice, currency)) return makeI18nSuccess('restore_tankman/success', type=SM_TYPE.Information)
def __showDismissedTankmen(self, criteria): tankmen = self.restore.getDismissedTankmen() tankmenList = list() for tankman in tankmen: if not criteria(tankman): continue skillsList = [] for skill in tankman.skills: skillsList.append({'tankmanID': tankman.invID, 'id': str(tankman.skills.index(skill)), 'name': skill.userName, 'desc': skill.description, 'icon': skill.icon, 'level': skill.level, 'active': skill.isEnable and skill.isActive}) newSkillsCount, lastNewSkillLvl = tankman.newSkillCount if newSkillsCount > 0: skillsList.append({'buy': True, 'buyCount': newSkillsCount - 1, 'tankmanID': tankman.invID, 'level': lastNewSkillLvl}) restoreInfo = getTankmenRestoreInfo(tankman) actionBtnTooltip = makeTooltip(TOOLTIPS.BARRACKS_TANKMEN_RECOVERYBTN_HEADER, getRecoveryStatusText(restoreInfo)) tankmanData = _packTankmanData(tankman) tankmanData.update({'isRankNameVisible': False, 'recoveryPeriodText': _makeRecoveryPeriodText(restoreInfo), 'actionBtnLabel': MENU.BARRACKS_BTNRECOVERY, 'actionBtnTooltip': actionBtnTooltip, 'skills': skillsList, 'isSkillsVisible': True}) tankmenList.append(tankmanData) tankmenCountStr = _ms(MENU.BARRACKS_DISMISSEDTANKMENCOUNT, curValue=len(tankmenList), total=len(tankmen)) placeCount = self.restore.getMaxTankmenBufferLength() placeCountStr = _ms(MENU.BARRACKS_RECOVERYCOUNT, total=placeCount, info=icons.info()) noInfoData = None hasNoInfoData = len(tankmenList) == 0 if hasNoInfoData: if len(tankmen) == 0: tankmenRestoreConfig = g_itemsCache.items.shop.tankmenRestoreConfig freeDays = tankmenRestoreConfig.freeDuration / time_utils.ONE_DAY creditsDays = tankmenRestoreConfig.creditsDuration / time_utils.ONE_DAY - freeDays noInfoData = {'title': text_styles.highTitle(MENU.BARRACKS_NORECOVERYTANKMEN_TITLE), 'message': text_styles.main(_ms(MENU.BARRACKS_NORECOVERYTANKMEN_MESSAGE, price=moneyWithIcon(tankmenRestoreConfig.cost), totalDays=freeDays + creditsDays, freeDays=freeDays, paidDays=creditsDays))} else: noInfoData = {'message': text_styles.main(MENU.BARRACKS_NOFILTEREDRECOVERYTANKMEN_MESSAGE)} placesCountTooltip = makeTooltip(TOOLTIPS.BARRACKS_PLACESCOUNT_DISMISS_HEADER, _ms(TOOLTIPS.BARRACKS_PLACESCOUNT_DISMISS_BODY, placeCount=placeCount)) self.as_setTankmenS({'tankmenCount': text_styles.playerOnline(tankmenCountStr), 'placesCount': text_styles.playerOnline(placeCountStr), 'placesCountTooltip': placesCountTooltip, 'tankmenData': tankmenList, 'hasNoInfoData': hasNoInfoData, 'noInfoData': noInfoData}) return
def __showDismissedTankmen(self, criteria): tankmen = getRestoreController().getDismissedTankmen() tankmenList = list() for tankman in tankmen: if not criteria(tankman): continue skillsList = [] for skill in tankman.skills: skillsList.append({'tankmanID': tankman.invID, 'id': str(tankman.skills.index(skill)), 'name': skill.userName, 'desc': skill.description, 'icon': skill.icon, 'level': skill.level, 'active': skill.isEnable and skill.isActive}) newSkillsCount, lastNewSkillLvl = tankman.newSkillCount if newSkillsCount > 0: skillsList.append({'buy': True, 'buyCount': newSkillsCount - 1, 'tankmanID': tankman.invID, 'level': lastNewSkillLvl}) restoreInfo = getTankmenRestoreInfo(tankman) actionBtnTooltip = makeTooltip(TOOLTIPS.BARRACKS_TANKMEN_RECOVERYBTN_HEADER, getRecoveryStatusText(restoreInfo)) tankmanData = _packTankmanData(tankman) tankmanData.update({'isRankNameVisible': False, 'recoveryPeriodText': _makeRecoveryPeriodText(restoreInfo), 'actionBtnLabel': MENU.BARRACKS_BTNRECOVERY, 'actionBtnTooltip': actionBtnTooltip, 'skills': skillsList, 'isSkillsVisible': True}) tankmenList.append(tankmanData) tankmenCountStr = _ms(MENU.BARRACKS_DISMISSEDTANKMENCOUNT, curValue=len(tankmenList), total=len(tankmen)) placeCount = getRestoreController().getMaxTankmenBufferLength() placeCountStr = _ms(MENU.BARRACKS_RECOVERYCOUNT, total=placeCount, info=icons.info()) noInfoData = None hasNoInfoData = len(tankmenList) == 0 if hasNoInfoData: if len(tankmen) == 0: tankmenRestoreConfig = g_itemsCache.items.shop.tankmenRestoreConfig freeDays = tankmenRestoreConfig.freeDuration / time_utils.ONE_DAY creditsDays = tankmenRestoreConfig.creditsDuration / time_utils.ONE_DAY - freeDays noInfoData = {'title': text_styles.highTitle(MENU.BARRACKS_NORECOVERYTANKMEN_TITLE), 'message': text_styles.main(_ms(MENU.BARRACKS_NORECOVERYTANKMEN_MESSAGE, price=moneyWithIcon(tankmenRestoreConfig.cost), totalDays=freeDays + creditsDays, freeDays=freeDays, paidDays=creditsDays))} else: noInfoData = {'message': text_styles.main(MENU.BARRACKS_NOFILTEREDRECOVERYTANKMEN_MESSAGE)} placesCountTooltip = makeTooltip(TOOLTIPS.BARRACKS_PLACESCOUNT_DISMISS_HEADER, _ms(TOOLTIPS.BARRACKS_PLACESCOUNT_DISMISS_BODY, placeCount=placeCount)) self.as_setTankmenS({'tankmenCount': text_styles.playerOnline(tankmenCountStr), 'placesCount': text_styles.playerOnline(placeCountStr), 'placesCountTooltip': placesCountTooltip, 'tankmenData': tankmenList, 'hasNoInfoData': hasNoInfoData, 'noInfoData': noInfoData}) return
def _populate(self): self._isDismissState = False super(RestoreTankmanDialog, self)._populate() restorePrice, _ = getTankmenRestoreInfo(self._tankman) isEnabled = True if g_itemsCache.items.stats.money.getShortage(restorePrice): isEnabled = False if isLongDisconnectedFromCenter(): isEnabled = False self.as_setButtonEnablingS(DIALOG_BUTTON_ID.SUBMIT, isEnabled) if not isEnabled: self.as_setButtonFocusS(DIALOG_BUTTON_ID.CLOSE)
def _packDismissedTankman(tankman): skillsList = [] for skill in tankman.skills: skillsList.append({ 'tankmanID': tankman.invID, 'id': str(tankman.skills.index(skill)), 'name': skill.userName, 'desc': skill.description, 'icon': skill.icon, 'level': skill.level, 'active': skill.isEnable and skill.isActive }) newSkillsCount, lastNewSkillLvl = tankman.newSkillCount if newSkillsCount > 0: skillsList.append({ 'buy': True, 'buyCount': newSkillsCount - 1, 'tankmanID': tankman.invID, 'level': lastNewSkillLvl }) restoreInfo = getTankmenRestoreInfo(tankman) actionBtnTooltip = makeTooltip( TOOLTIPS.BARRACKS_TANKMEN_RECOVERYBTN_HEADER, getRecoveryStatusText(restoreInfo)) tankmanData = _packTankmanData(tankman) tankmanData.update({ 'isRankNameVisible': False, 'recoveryPeriodText': _makeRecoveryPeriodText(restoreInfo), 'actionBtnLabel': MENU.BARRACKS_BTNRECOVERY, 'actionBtnTooltip': actionBtnTooltip, 'skills': skillsList, 'isSkillsVisible': True }) return tankmanData
def _buildVO(self): actionPriceVO = None restorePrice, lengthInHours = getTankmenRestoreInfo(self._tankman) warningTexts = [] if restorePrice.credits == 0: restoreCurrency = ICON_TEXT_FRAMES.EMPTY restorePriceStr = text_styles.success(_ms(DIALOGS.RESTORETANKMAN_FORFREE)) else: restoreCurrency = ICON_TEXT_FRAMES.CREDITS restorePriceStr = str(currency.getBWFormatter(Currency.CREDITS)(restorePrice.credits)) if self._showPeriodEndWarning: daysCount = lengthInHours / time_utils.HOURS_IN_DAY warningTexts.append(text_styles.alert(_ms(DIALOGS.RESTORETANKMNAN_NEWPERIODWARNING, daysCount=daysCount))) if constants.IS_KOREA and restorePrice.gold > 0: warningTexts.append(text_styles.standard(DIALOGS.BUYVEHICLEDIALOG_WARNING)) return {'questionText': text_styles.stats(_ms(DIALOGS.RESTORETANKMAN_PRICE)), 'restoreCurrency': restoreCurrency, 'restorePrice': restorePriceStr, 'isEnoughMoneyForRestore': g_itemsCache.items.stats.money.credits >= restorePrice.credits, 'actionPriceVO': actionPriceVO, 'warningText': '\n\n'.join(warningTexts)}
def _buildVO(self): actionPriceVO = None restorePrice, lengthInHours = getTankmenRestoreInfo(self._tankman) warningTexts = [] if not restorePrice: currencyTextFrame = ICON_TEXT_FRAMES.EMPTY restorePriceStr = text_styles.success( _ms(DIALOGS.RESTORETANKMAN_FORFREE)) isEnoughMoney = True else: currencyName = restorePrice.getCurrency() currencyTextFrame = self._CURRENCY_TO_TEXT_FRAME[currencyName] restorePriceStr = str( currency.getBWFormatter(currencyName)( restorePrice.getSignValue(currencyName))) isEnoughMoney = self.itemsCache.items.stats.money.get( currencyName, 0) >= restorePrice.get(currencyName, 0) if self._showPeriodEndWarning and restorePrice.isSet( Currency.GOLD): daysCount = lengthInHours / time_utils.HOURS_IN_DAY warningTexts.append( text_styles.alert( _ms(DIALOGS.RESTORETANKMAN_NEWPERIODWARNING, daysCount=daysCount))) if constants.IS_KOREA and restorePrice.isSet(Currency.GOLD): warningTexts.append( text_styles.standard(DIALOGS.BUYVEHICLEDIALOG_WARNING)) if isLongDisconnectedFromCenter(): warningTexts.append( text_styles.error( DIALOGS.RESTORETANKMAN_DISCONNECTEDFROMCENTER)) return { 'questionText': text_styles.stats(_ms(DIALOGS.RESTORETANKMAN_PRICE)), 'restoreCurrency': currencyTextFrame, 'restorePrice': restorePriceStr, 'isEnoughMoneyForRestore': isEnoughMoney, 'actionPriceVO': actionPriceVO, 'warningText': '\n\n'.join(warningTexts) }
def _getValue(self): header = '' text = '' statusTemplate = '#tooltips:tankman/status/%s' tankman = self._tooltip.item vehicle = None if tankman.isInTank: vehicle = g_itemsCache.items.getVehicle(tankman.vehicleInvID) nativeVehicle = g_itemsCache.items.getItemByCD(tankman.vehicleNativeDescr.type.compactDescr) if tankman.isDismissed: return {'header': text_styles.warning(TOOLTIPS.BARRACKS_TANKMEN_RECOVERY_HEADER), 'text': getRecoveryStatusText(getTankmenRestoreInfo(tankman)), 'level': TANKMAN_DISMISSED} else: inactiveRoles = list() if tankman.isInTank: for skill in tankman.skills: if not skill.isEnable: role = self.__getRoleBySkill(skill) if role not in inactiveRoles: inactiveRoles.append(role) if vehicle is not None and nativeVehicle.innationID != vehicle.innationID: if (vehicle.isPremium or vehicle.isPremiumIGR) and vehicle.type in nativeVehicle.tags: header = makeString(statusTemplate % 'wrongPremiumVehicle/header') text = makeString(statusTemplate % 'wrongPremiumVehicle/text') % {'vehicle': vehicle.shortUserName} else: header = makeString(statusTemplate % 'wrongVehicle/header') % {'vehicle': vehicle.shortUserName} text = makeString(statusTemplate % 'wrongVehicle/text') elif len(inactiveRoles): def roleFormat(role): return makeString(statusTemplate % 'inactiveSkillsRoleFormat') % makeString(getSkillsConfig()[role]['userString']) header = makeString(statusTemplate % 'inactiveSkills/header') text = makeString(statusTemplate % 'inactiveSkills/text') % {'skills': ', '.join([ roleFormat(role) for role in inactiveRoles ])} return {'header': header, 'text': text, 'level': Vehicle.VEHICLE_STATE_LEVEL.WARNING} return
def _getValue(self): header = '' text = '' statusTemplate = '#tooltips:tankman/status/%s' tankman = self._tooltip.item vehicle = None if tankman.isInTank: vehicle = self.itemsCache.items.getVehicle(tankman.vehicleInvID) nativeVehicle = self.itemsCache.items.getItemByCD(tankman.vehicleNativeDescr.type.compactDescr) if tankman.isDismissed: return {'header': text_styles.warning(TOOLTIPS.BARRACKS_TANKMEN_RECOVERY_HEADER), 'text': getRecoveryStatusText(getTankmenRestoreInfo(tankman)), 'level': TANKMAN_DISMISSED} else: inactiveRoles = list() if tankman.isInTank: for skill in tankman.skills: if not skill.isEnable: role = self.__getRoleBySkill(skill) if role not in inactiveRoles: inactiveRoles.append(role) if vehicle is not None and nativeVehicle.innationID != vehicle.innationID: if (vehicle.isPremium or vehicle.isPremiumIGR) and vehicle.type in nativeVehicle.tags: header = makeString(statusTemplate % 'wrongPremiumVehicle/header') text = makeString(statusTemplate % 'wrongPremiumVehicle/text') % {'vehicle': vehicle.shortUserName} else: header = makeString(statusTemplate % 'wrongVehicle/header') % {'vehicle': vehicle.shortUserName} text = makeString(statusTemplate % 'wrongVehicle/text') elif inactiveRoles: def roleFormat(role): return makeString(statusTemplate % 'inactiveSkillsRoleFormat') % makeString(getSkillsConfig().getSkill(role).userString) header = makeString(statusTemplate % 'inactiveSkills/header') text = makeString(statusTemplate % 'inactiveSkills/text') % {'skills': ', '.join([ roleFormat(role) for role in inactiveRoles ])} return {'header': header, 'text': text, 'level': Vehicle.VEHICLE_STATE_LEVEL.WARNING} return
def _buildVO(self): actionPriceVO = None restorePrice, lengthInHours = getTankmenRestoreInfo(self._tankman) warningTexts = [] if restorePrice.credits == 0: restoreCurrency = ICON_TEXT_FRAMES.EMPTY restorePriceStr = text_styles.success( _ms(DIALOGS.RESTORETANKMAN_FORFREE)) else: restoreCurrency = ICON_TEXT_FRAMES.CREDITS restorePriceStr = str( currency.getBWFormatter(Currency.CREDITS)( restorePrice.credits)) if self._showPeriodEndWarning: daysCount = lengthInHours / time_utils.HOURS_IN_DAY warningTexts.append( text_styles.alert( _ms(DIALOGS.RESTORETANKMAN_NEWPERIODWARNING, daysCount=daysCount))) if constants.IS_KOREA and restorePrice.gold > 0: warningTexts.append( text_styles.standard(DIALOGS.BUYVEHICLEDIALOG_WARNING)) if isLongDisconnectedFromCenter(): warningTexts.append( text_styles.error( DIALOGS.RESTORETANKMAN_DISCONNECTEDFROMCENTER)) return { 'questionText': text_styles.stats(_ms(DIALOGS.RESTORETANKMAN_PRICE)), 'restoreCurrency': restoreCurrency, 'restorePrice': restorePriceStr, 'isEnoughMoneyForRestore': g_itemsCache.items.stats.money.credits >= restorePrice.credits, 'actionPriceVO': actionPriceVO, 'warningText': '\n\n'.join(warningTexts) }
def __init__(self, localeKey, tankman): super(TankmanOperationConfirmator, self).__init__(localeKey, tankman, None, True) self.__previousPrice, _ = restore_contoller.getTankmenRestoreInfo(tankman) return
def _successHandler(self, code, ctx = None): restorePrice, _ = getTankmenRestoreInfo(self.__tankman) if restorePrice: return makeI18nSuccess('restore_tankman/financial_success', type=_getSysMsgType(restorePrice), money=formatPriceForCurrency(restorePrice, Currency.CREDITS)) else: return makeI18nSuccess('restore_tankman/success', type=SM_TYPE.Information)
def __showDismissedTankmen(self, criteria): tankmen = self.restore.getDismissedTankmen() tankmenList = list() for tankman in tankmen: if not criteria(tankman): continue skillsList = [] for skill in tankman.skills: skillsList.append({ 'tankmanID': tankman.invID, 'id': str(tankman.skills.index(skill)), 'name': skill.userName, 'desc': skill.description, 'icon': skill.icon, 'level': skill.level, 'active': skill.isEnable and skill.isActive }) newSkillsCount, lastNewSkillLvl = tankman.newSkillCount if newSkillsCount > 0: skillsList.append({ 'buy': True, 'buyCount': newSkillsCount - 1, 'tankmanID': tankman.invID, 'level': lastNewSkillLvl }) restoreInfo = getTankmenRestoreInfo(tankman) actionBtnTooltip = makeTooltip( TOOLTIPS.BARRACKS_TANKMEN_RECOVERYBTN_HEADER, getRecoveryStatusText(restoreInfo)) tankmanData = _packTankmanData(tankman) tankmanData.update({ 'isRankNameVisible': False, 'recoveryPeriodText': _makeRecoveryPeriodText(restoreInfo), 'actionBtnLabel': MENU.BARRACKS_BTNRECOVERY, 'actionBtnTooltip': actionBtnTooltip, 'skills': skillsList, 'isSkillsVisible': True }) tankmenList.append(tankmanData) placeCount = self.restore.getMaxTankmenBufferLength() hasNoInfoData, noInfoData = self.__getNoInfoData( totalCount=len(tankmen), filteredCount=len(tankmenList)) self.as_setTankmenS({ 'tankmenCount': self.__getTankmenCountStr(tankmenInSlots=len(tankmenList), totalCount=len(tankmen)), 'placesCount': self.__getPlaceCountStr(free=icons.info(), totalCount=placeCount), 'placesCountTooltip': self.__getPlacesCountTooltip(placeCount=placeCount), 'tankmenData': tankmenList, 'hasNoInfoData': hasNoInfoData, 'noInfoData': noInfoData })
def __init__(self, localeKey, tankman): super(TankmanOperationConfirmator, self).__init__(localeKey, tankman, None, True) self.__previousPrice, _ = restore_contoller.getTankmenRestoreInfo( tankman) return
def __priceChanged(self): price, _ = restore_contoller.getTankmenRestoreInfo(self.ctx) return price != self.__previousPrice