def __getVehicleStatus(self, showCustomStates, vehicle): if showCustomStates: isUnlocked = vehicle.isUnlocked isInInventory = vehicle.isInInventory credits, gold = g_itemsCache.items.stats.money price = vehicle.minRentPrice or vehicle.buyPrice msg = None level = InventoryVehicle.STATE_LEVEL.WARNING if not isUnlocked: msg = 'notUnlocked' elif isInInventory: msg = 'inHangar' elif credits < price[0]: msg = 'notEnoughCredits' level = InventoryVehicle.STATE_LEVEL.CRITICAL elif gold < price[1]: msg = 'notEnoughGold' level = InventoryVehicle.STATE_LEVEL.CRITICAL if msg is not None: header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % msg) return {'header': header, 'text': text, 'level': level} return state, level = vehicle.getState() if state == Vehicle.VEHICLE_STATE.SERVER_RESTRICTION: return state, level = self.__preprocessState(state, level) header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % state) if header is None and text is None: return return {'header': header, 'text': text, 'level': level}
def __getVehicleStatus(self, showCustomStates, vehicle): if showCustomStates: isUnlocked = vehicle.isUnlocked isInInventory = vehicle.isInInventory credits, gold = g_itemsCache.items.stats.money price = vehicle.minRentPrice or vehicle.buyPrice msg = None level = InventoryVehicle.STATE_LEVEL.WARNING if not isUnlocked: msg = 'notUnlocked' elif isInInventory: msg = 'inHangar' elif credits < price[0]: msg = 'notEnoughCredits' level = InventoryVehicle.STATE_LEVEL.CRITICAL elif gold < price[1]: msg = 'notEnoughGold' level = InventoryVehicle.STATE_LEVEL.CRITICAL if msg is not None: header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % msg) return {'header': header, 'text': text, 'level': level} return state, level = vehicle.getState() if state == Vehicle.VEHICLE_STATE.SERVER_RESTRICTION: return state, level = self.__preprocessState(state, level) header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % state) if header is None and text is None: return else: return {'header': header, 'text': text, 'level': level}
def _getStatus(self): block = [] module = self.module configuration = self.configuration vehicle = configuration.vehicle slotIdx = configuration.slotIdx eqs = configuration.eqs checkBuying = configuration.checkBuying isEqOrDev = module.itemTypeID in GUI_ITEM_TYPE.ARTEFACTS isFit = True reason = '' titleFormatter = text_styles.middleTitle if vehicle is not None and vehicle.isInInventory: currentVehicleEqs = list() if vehicle is not None and vehicle.isInInventory: currentVehicleEqs = list(vehicle.eqs) vehicle.eqs = [None, None, None] if eqs: for i, e in enumerate(eqs): if e is not None: intCD = int(e) eq = g_itemsCache.items.getItemByCD(intCD) vehicle.eqs[i] = eq isFit, reason = module.mayInstall(vehicle, slotIdx) vehicle.eqs = list(currentVehicleEqs) inventoryVehicles = g_itemsCache.items.getVehicles(REQ_CRITERIA.INVENTORY).itervalues() installedVehicles = map(lambda x: x.shortUserName, module.getInstalledVehicles(inventoryVehicles))[:self.MAX_INSTALLED_LIST_LEN] tooltipHeader = None tooltipText = None if not isFit: reason = reason.replace(' ', '_') tooltipHeader, tooltipText = getComplexStatus('#tooltips:moduleFits/%s' % reason) if reason == 'not_with_installed_equipment': if vehicle is not None: conflictEqs = module.getConflictedEquipments(vehicle) tooltipText %= {'eqs': ', '.join([ _ms(e.userName) for e in conflictEqs ])} elif reason == 'already_installed' and isEqOrDev and len(installedVehicles): tooltipHeader, _ = getComplexStatus('#tooltips:deviceFits/already_installed' if module.itemTypeName == GUI_ITEM_TYPE.OPTIONALDEVICE else '#tooltips:moduleFits/already_installed') tooltipText = ', '.join(installedVehicles) elif len(installedVehicles): tooltipHeader, _ = getComplexStatus('#tooltips:deviceFits/already_installed' if module.itemTypeName == GUI_ITEM_TYPE.OPTIONALDEVICE else '#tooltips:moduleFits/already_installed') tooltipText = ', '.join(installedVehicles) if tooltipHeader is not None or tooltipText is not None: block.append(self._packStatusBlock(tooltipHeader, tooltipText, titleFormatter)) if checkBuying: isFit, reason = module.mayPurchase(g_itemsCache.items.stats.money) if not isFit: reason = reason.replace(' ', '_') if reason in ('gold_error', 'credit_error'): titleFormatter = text_styles.critical tooltipHeader, tooltipText = getComplexStatus('#tooltips:moduleFits/%s' % reason) if tooltipHeader is not None or tooltipText is not None: if len(block): padding = formatters.packPadding(bottom=15) block.insert(0, self._packStatusBlock(tooltipHeader, tooltipText, titleFormatter, padding)) else: block.append(self._packStatusBlock(tooltipHeader, tooltipText, titleFormatter)) return block
def _getStatus(self, module, configuration): vehicle = configuration.vehicle slotIdx = configuration.slotIdx eqs = configuration.eqs checkBuying = configuration.checkBuying isEqOrDev = module.itemTypeID in GUI_ITEM_TYPE.ARTEFACTS isFit = True reason = "" if checkBuying: isFit, reason = module.mayPurchase(g_itemsCache.items.stats.money) if isFit and vehicle is not None and vehicle.isInInventory: currentVehicleEqs = list() if vehicle is not None and vehicle.isInInventory: currentVehicleEqs = list(vehicle.eqs) vehicle.eqs = [None, None, None] if eqs: for i, e in enumerate(eqs): if e is not None: intCD = int(e) eq = g_itemsCache.items.getItemByCD(intCD) vehicle.eqs[i] = eq isFit, reason = module.mayInstall(vehicle, slotIdx) vehicle.eqs = list(currentVehicleEqs) inventoryVehicles = g_itemsCache.items.getVehicles(REQ_CRITERIA.INVENTORY).itervalues() installedVehicles = map(lambda x: x.shortUserName, module.getInstalledVehicles(inventoryVehicles))[ : self._tooltip.MAX_INSTALLED_LIST_LEN ] messageLvl = Vehicle.VEHICLE_STATE_LEVEL.WARNING tooltipHeader = "" tooltipText = "" if not isFit: reason = reason.replace(" ", "_") tooltipHeader, tooltipText = getComplexStatus("#tooltips:moduleFits/%s" % reason) if reason == "credit_error" or reason == "gold_error": messageLvl = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL elif reason == "not_with_installed_equipment": if vehicle is not None: conflictEqs = module.getConflictedEquipments(vehicle) tooltipText %= {"eqs": ", ".join([makeString(e.userName) for e in conflictEqs])} elif reason == "already_installed" and isEqOrDev and len(installedVehicles): tooltipHeader, _ = getComplexStatus( "#tooltips:deviceFits/already_installed" if module.itemTypeName == GUI_ITEM_TYPE.OPTIONALDEVICE else "#tooltips:moduleFits/already_installed" ) tooltipText = ", ".join(installedVehicles) elif len(installedVehicles): tooltipHeader, _ = getComplexStatus( "#tooltips:deviceFits/already_installed" if module.itemTypeName == GUI_ITEM_TYPE.OPTIONALDEVICE else "#tooltips:moduleFits/already_installed" ) tooltipText = ", ".join(installedVehicles) return {"level": messageLvl, "header": tooltipHeader, "text": tooltipText}
def __getVehicleStatus(self, showCustomStates, vehicle): if showCustomStates: isInInventory = vehicle.isInInventory level = Vehicle.VEHICLE_STATE_LEVEL.WARNING if not isInInventory and vehicle.hasRestoreCooldown( ) and vehicle.isHidden: timeKey, formattedTime = getTimeLeftInfo( self.vehicle.restoreInfo.getRestoreCooldownTimeLeft()) return { 'header': _ms('#tooltips:vehicleStatus/restoreCooldown/%s' % timeKey, time=formattedTime), 'text': '', 'level': level } isUnlocked = vehicle.isUnlocked mayObtain, reason = vehicle.mayObtainForMoney( g_itemsCache.items.stats.money) msg = None if not isUnlocked: msg = 'notUnlocked' elif isInInventory: msg = 'inHangar' elif not mayObtain: level = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL if reason == 'gold_error': msg = 'notEnoughGold' elif reason == 'credits_error': msg = 'notEnoughCredits' else: msg = 'operationError' if msg is not None: header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % msg) return {'header': header, 'text': text, 'level': level} return else: state, level = vehicle.getState() if state == Vehicle.VEHICLE_STATE.SERVER_RESTRICTION: return isSuitableVeh = getFalloutCtrl().isSuitableVeh(vehicle) if not isSuitableVeh: header, text = getComplexStatus( '#tooltips:vehicleStatus/%s' % Vehicle.VEHICLE_STATE.NOT_SUITABLE) level = Vehicle.VEHICLE_STATE_LEVEL.WARNING else: header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % state) if header is None and text is None: return return {'header': header, 'text': text, 'level': level}
def __getTechTreeVehicleStatus(self, config, vehicle): nodeState = int(config.node.state) tooltip, level = None, InventoryVehicle.STATE_LEVEL.WARNING parentCD = None if config.node is not None: parentCD = config.node.unlockProps.parentID _, _, need2Unlock = getUnlockPrice(vehicle.intCD, parentCD) if not nodeState & NODE_STATE.UNLOCKED: if not nodeState & NODE_STATE.NEXT_2_UNLOCK: tooltip = '#tooltips:researchPage/vehicle/status/parentModuleIsLocked' elif need2Unlock > 0: tooltip = '#tooltips:researchPage/module/status/notEnoughXP' level = InventoryVehicle.STATE_LEVEL.CRITICAL else: if nodeState & NODE_STATE.IN_INVENTORY: return self.__getVehicleStatus(False, vehicle) canRentOrBuy, reason = vehicle.mayRentOrBuy(g_itemsCache.items.stats.money) if not canRentOrBuy: level = InventoryVehicle.STATE_LEVEL.CRITICAL if reason == 'gold_error': tooltip = '#tooltips:moduleFits/gold_error' elif reason == 'credit_error': tooltip = '#tooltips:moduleFits/credit_error' else: tooltip = '#tooltips:moduleFits/operation_error' header, text = getComplexStatus(tooltip) if header is None and text is None: return else: return {'header': header, 'text': text, 'level': level}
def __getTechTreeVehicleStatus(self, config, vehicle): nodeState = int(config.node.state) tooltip, level = None, Vehicle.VEHICLE_STATE_LEVEL.WARNING parentCD = None if config.node is not None: parentCD = config.node.unlockProps.parentID _, _, need2Unlock = getUnlockPrice(vehicle.intCD, parentCD) if not nodeState & NODE_STATE_FLAGS.UNLOCKED: if not nodeState & NODE_STATE_FLAGS.NEXT_2_UNLOCK: tooltip = TOOLTIPS.RESEARCHPAGE_VEHICLE_STATUS_PARENTMODULEISLOCKED elif need2Unlock > 0: tooltip = TOOLTIPS.RESEARCHPAGE_MODULE_STATUS_NOTENOUGHXP level = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL else: if nodeState & NODE_STATE_FLAGS.IN_INVENTORY: return self.__getVehicleStatus(False, vehicle) mayObtain, reason = vehicle.mayObtainForMoney( g_itemsCache.items.stats.money) if not mayObtain: level = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL if reason == 'gold_error': tooltip = TOOLTIPS.MODULEFITS_GOLD_ERROR elif reason == 'credits_error': tooltip = TOOLTIPS.MODULEFITS_CREDITS_ERROR else: tooltip = TOOLTIPS.MODULEFITS_OPERATION_ERROR header, text = getComplexStatus(tooltip) if header is None and text is None: return else: return {'header': header, 'text': text, 'level': level}
def __getTechTreeVehicleStatus(self, config, vehicle): nodeState = int(config.node.state) tooltip, level = None, Vehicle.VEHICLE_STATE_LEVEL.WARNING parentCD = None if config.node is not None: parentCD = config.node.unlockProps.parentID _, _, need2Unlock = getUnlockPrice(vehicle.intCD, parentCD) if not nodeState & NODE_STATE.UNLOCKED: if not nodeState & NODE_STATE.NEXT_2_UNLOCK: tooltip = TOOLTIPS.RESEARCHPAGE_VEHICLE_STATUS_PARENTMODULEISLOCKED elif need2Unlock > 0: tooltip = TOOLTIPS.RESEARCHPAGE_MODULE_STATUS_NOTENOUGHXP level = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL else: if nodeState & NODE_STATE.IN_INVENTORY: return self.__getVehicleStatus(False, vehicle) canRentOrBuy, reason = vehicle.mayRentOrBuy(g_itemsCache.items.stats.money) if not canRentOrBuy: level = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL if reason == 'gold_error': tooltip = TOOLTIPS.MODULEFITS_GOLD_ERROR elif reason == 'credits_error': tooltip = TOOLTIPS.MODULEFITS_CREDITS_ERROR else: tooltip = TOOLTIPS.MODULEFITS_OPERATION_ERROR header, text = getComplexStatus(tooltip) if header is None and text is None: return else: return {'header': header, 'text': text, 'level': level}
def __getTechTreeVehicleStatus(self, config, vehicle): nodeState = int(config.node.state) tooltip, level = None, InventoryVehicle.STATE_LEVEL.WARNING parentCD = None if config.node is not None: parentCD = config.node.unlockProps.parentID _, _, need2Unlock = getUnlockPrice(vehicle.intCD, parentCD) if not nodeState & NODE_STATE.UNLOCKED: if not nodeState & NODE_STATE.NEXT_2_UNLOCK: tooltip = '#tooltips:researchPage/vehicle/status/parentModuleIsLocked' elif need2Unlock > 0: tooltip = '#tooltips:researchPage/module/status/notEnoughXP' level = InventoryVehicle.STATE_LEVEL.CRITICAL else: if nodeState & NODE_STATE.IN_INVENTORY: return self.__getVehicleStatus(False, vehicle) canRentOrBuy, reason = vehicle.mayRentOrBuy( g_itemsCache.items.stats.money) if not canRentOrBuy: level = InventoryVehicle.STATE_LEVEL.CRITICAL if reason == 'gold_error': tooltip = '#tooltips:moduleFits/gold_error' elif reason == 'credit_error': tooltip = '#tooltips:moduleFits/credit_error' else: tooltip = '#tooltips:moduleFits/operation_error' header, text = getComplexStatus(tooltip) if header is None and text is None: return return {'header': header, 'text': text, 'level': level}
def __getVehicleStatus(self, showCustomStates, vehicle): if showCustomStates: isUnlocked = vehicle.isUnlocked isInInventory = vehicle.isInInventory money = g_itemsCache.items.stats.money price = vehicle.minRentPrice or vehicle.buyPrice needMoney = price - money needMoney = needMoney.toNonNegative() msg = None level = Vehicle.VEHICLE_STATE_LEVEL.WARNING if not isUnlocked: msg = 'notUnlocked' elif isInInventory: msg = 'inHangar' elif needMoney: currency = needMoney.getCurrency(byWeight=False) if currency == Currency.CREDITS: msg = 'notEnoughCredits' level = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL elif currency == Currency.GOLD: msg = 'notEnoughGold' level = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL else: msg = 'notEnough' level = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL LOG_WARNING('Unsupported currency: ', currency) if msg is not None: header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % msg) return {'header': header, 'text': text, 'level': level} return else: state, level = vehicle.getState() if state == Vehicle.VEHICLE_STATE.SERVER_RESTRICTION: return isSuitableVeh = getFalloutCtrl().isSuitableVeh(vehicle) if not isSuitableVeh: header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % Vehicle.VEHICLE_STATE.NOT_SUITABLE) level = Vehicle.VEHICLE_STATE_LEVEL.WARNING else: header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % state) if header is None and text is None: return return {'header': header, 'text': text, 'level': level}
def __getVehicleStatus(self, showCustomStates, vehicle): if showCustomStates: isInInventory = vehicle.isInInventory level = Vehicle.VEHICLE_STATE_LEVEL.WARNING if not isInInventory and vehicle.hasRestoreCooldown() and vehicle.isHidden: timeKey, formattedTime = getTimeLeftInfo(self.vehicle.restoreInfo.getRestoreCooldownTimeLeft()) return {'header': _ms('#tooltips:vehicleStatus/restoreCooldown/%s' % timeKey, time=formattedTime), 'text': '', 'level': level} isUnlocked = vehicle.isUnlocked mayObtain, reason = vehicle.mayObtainForMoney(self.itemsCache.items.stats.money) msg = None if not isUnlocked: msg = 'notUnlocked' elif isInInventory: msg = 'inHangar' elif not mayObtain: level = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL if reason == GUI_ITEM_ECONOMY_CODE.NOT_ENOUGH_GOLD: msg = 'notEnoughGold' elif reason == GUI_ITEM_ECONOMY_CODE.NOT_ENOUGH_CREDITS: msg = 'notEnoughCredits' else: msg = 'operationError' if msg is not None: header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % msg) return {'header': header, 'text': text, 'level': level} return else: state, level = vehicle.getState() if state == Vehicle.VEHICLE_STATE.SERVER_RESTRICTION: return if state == Vehicle.VEHICLE_STATE.ROTATION_GROUP_UNLOCKED: header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % state, groupNum=vehicle.rotationGroupNum, battlesLeft=getBattlesLeft(vehicle)) else: header, text = getComplexStatus('#tooltips:vehicleStatus/%s' % state) if header is None and text is None: return return {'header': header, 'text': text, 'level': level}
def __getVehicleStatus(self, showCustomStates, vehicle): if showCustomStates: isInInventory = vehicle.isInInventory level = Vehicle.VEHICLE_STATE_LEVEL.WARNING if not isInInventory and vehicle.hasRestoreCooldown() and vehicle.isHidden: timeKey, formattedTime = getTimeLeftInfo(self.vehicle.restoreInfo.getRestoreCooldownTimeLeft()) return { "header": _ms("#tooltips:vehicleStatus/restoreCooldown/%s" % timeKey, time=formattedTime), "text": "", "level": level, } isUnlocked = vehicle.isUnlocked mayObtain, reason = vehicle.mayObtainForMoney(g_itemsCache.items.stats.money) msg = None if not isUnlocked: msg = "notUnlocked" elif isInInventory: msg = "inHangar" elif not mayObtain: level = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL if reason == "gold_error": msg = "notEnoughGold" elif reason == "credits_error": msg = "notEnoughCredits" else: msg = "operationError" if msg is not None: header, text = getComplexStatus("#tooltips:vehicleStatus/%s" % msg) return {"header": header, "text": text, "level": level} return else: state, level = vehicle.getState() if state == Vehicle.VEHICLE_STATE.SERVER_RESTRICTION: return isSuitableVeh = getFalloutCtrl().isSuitableVeh(vehicle) if not isSuitableVeh: header, text = getComplexStatus("#tooltips:vehicleStatus/%s" % Vehicle.VEHICLE_STATE.NOT_SUITABLE) level = Vehicle.VEHICLE_STATE_LEVEL.WARNING else: header, text = getComplexStatus("#tooltips:vehicleStatus/%s" % state) if header is None and text is None: return return {"header": header, "text": text, "level": level}
def _getResearchPageStatus(self): module = self.module configuration = self.configuration vehicle = configuration.vehicle node = configuration.node block = [] def status(title=None, desc=None): if title is not None or desc is not None: block.append( formatters.packTitleDescBlock( title=text_styles.middleTitle(title) if title is not None else '', desc=text_styles.main(desc) if desc is not None else '')) return block header, text = (None, None) nodeState = int(node.state) statusTemplate = '#tooltips:researchPage/module/status/%s' parentCD = vehicle.intCD if vehicle is not None else None _, _, need = getUnlockPrice(module.intCD, parentCD) if not nodeState & NODE_STATE_FLAGS.UNLOCKED: if not vehicle.isUnlocked: header, text = getComplexStatus(statusTemplate % 'rootVehicleIsLocked') elif not nodeState & NODE_STATE_FLAGS.NEXT_2_UNLOCK: header, text = getComplexStatus(statusTemplate % 'parentModuleIsLocked') elif need > 0: header, text = getComplexStatus(statusTemplate % 'notEnoughXP') header = text_styles.critical(header) return status(header, text) elif not vehicle.isInInventory: header, text = getComplexStatus(statusTemplate % 'needToBuyTank') text %= {'vehiclename': vehicle.userName} return status(header, text) elif nodeState & NODE_STATE_FLAGS.INSTALLED: return status() else: if vehicle is not None: if vehicle.isInInventory: vState = vehicle.getState() if vState == 'battle': header, text = getComplexStatus(statusTemplate % 'vehicleIsInBattle') elif vState == 'locked': header, text = getComplexStatus( statusTemplate % 'vehicleIsReadyToFight') elif vState == 'damaged' or vState == 'exploded' or vState == 'destroyed': header, text = getComplexStatus(statusTemplate % 'vehicleIsBroken') if header is not None or text is not None: return status(header, text) return self._getStatus()
def construct(self): shell = self.shell configuration = self.configuration block = [] status = None checkBuying = configuration.checkBuying if checkBuying: couldBeBought, reason = shell.mayPurchase(g_itemsCache.items.stats.money) if not couldBeBought: status = '#tooltips:shellFits/%s' % reason statusHeader, statusText = getComplexStatus(status) if statusHeader is not None or statusText is not None: block.append(formatters.packTitleDescBlock(title=text_styles.middleTitle(statusHeader if statusHeader is not None else ''), desc=text_styles.main(statusText if statusText is not None else ''))) return block
def _getValue(self): status = None statusLvl = InventoryVehicle.STATE_LEVEL.WARNING shell = self._tooltip.item configuration = self._tooltip.context.getStatusConfiguration(shell) checkBuying = configuration.checkBuying if checkBuying: couldBeBought, reason = shell.mayPurchase( g_itemsCache.items.stats.money) if not couldBeBought: status = '#tooltips:moduleFits/%s' % reason statusLvl = InventoryVehicle.STATE_LEVEL.CRITICAL statusHeader, statusText = getComplexStatus(status) return {'header': statusHeader, 'text': statusText, 'level': statusLvl}
def _getValue(self): status = None statusLvl = InventoryVehicle.STATE_LEVEL.WARNING shell = self._tooltip.item configuration = self._tooltip.context.getStatusConfiguration(shell) checkBuying = configuration.checkBuying if checkBuying: couldBeBought, reason = shell.mayPurchase(g_itemsCache.items.stats.money) if not couldBeBought: status = '#tooltips:moduleFits/%s' % reason statusLvl = InventoryVehicle.STATE_LEVEL.CRITICAL statusHeader, statusText = getComplexStatus(status) return {'header': statusHeader, 'text': statusText, 'level': statusLvl}
def _getResearchPageStatus(self, module, configuration): vehicle = configuration.vehicle node = configuration.node def status(header=None, text=None, level=InventoryVehicle.STATE_LEVEL.WARNING): if header is not None or text is not None: return {'header': header, 'text': text, 'level': level} else: return header, text = (None, None) level = InventoryVehicle.STATE_LEVEL.WARNING nodeState = int(node.state) statusTemplate = '#tooltips:researchPage/module/status/%s' parentCD = vehicle.intCD if vehicle is not None else None _, _, need = getUnlockPrice(module.intCD, parentCD) if not nodeState & NODE_STATE.UNLOCKED: if not vehicle.isUnlocked: header, text = getComplexStatus(statusTemplate % 'rootVehicleIsLocked') elif not nodeState & NODE_STATE.NEXT_2_UNLOCK: header, text = getComplexStatus(statusTemplate % 'parentModuleIsLocked') elif need > 0: header, text = getComplexStatus(statusTemplate % 'notEnoughXP') level = InventoryVehicle.STATE_LEVEL.CRITICAL return status(header, text, level) if not vehicle.isInInventory: header, text = getComplexStatus(statusTemplate % 'needToBuyTank') text %= {'vehiclename': vehicle.userName} return status(header, text, InventoryVehicle.STATE_LEVEL.WARNING) if nodeState & NODE_STATE.INSTALLED: return status() if vehicle is not None: if vehicle.isInInventory: vState = vehicle.getState() if vState == 'battle': header, text = getComplexStatus(statusTemplate % 'vehicleIsInBattle') elif vState == 'locked': header, text = getComplexStatus(statusTemplate % 'vehicleIsReadyToFight') elif vState == 'damaged' or vState == 'exploded' or vState == 'destroyed': header, text = getComplexStatus(statusTemplate % 'vehicleIsBroken') if header is not None or text is not None: return status(header, text, level) return self._getStatus(module, configuration)
def _getResearchPageStatus(self, module, configuration): vehicle = configuration.vehicle node = configuration.node def status(header = None, text = None, level = InventoryVehicle.STATE_LEVEL.WARNING): if header is not None or text is not None: return {'header': header, 'text': text, 'level': level} else: return return header, text = (None, None) level = InventoryVehicle.STATE_LEVEL.WARNING nodeState = int(node.state) statusTemplate = '#tooltips:researchPage/module/status/%s' parentCD = vehicle.intCD if vehicle is not None else None _, _, need = getUnlockPrice(module.intCD, parentCD) if not nodeState & NODE_STATE.UNLOCKED: if not vehicle.isUnlocked: header, text = getComplexStatus(statusTemplate % 'rootVehicleIsLocked') elif not nodeState & NODE_STATE.NEXT_2_UNLOCK: header, text = getComplexStatus(statusTemplate % 'parentModuleIsLocked') elif need > 0: header, text = getComplexStatus(statusTemplate % 'notEnoughXP') level = InventoryVehicle.STATE_LEVEL.CRITICAL return status(header, text, level) elif not vehicle.isInInventory: header, text = getComplexStatus(statusTemplate % 'needToBuyTank') text %= {'vehiclename': vehicle.userName} return status(header, text, InventoryVehicle.STATE_LEVEL.WARNING) elif nodeState & NODE_STATE.INSTALLED: return status() else: if vehicle is not None: if vehicle.isInInventory: vState = vehicle.getState() if vState == 'battle': header, text = getComplexStatus(statusTemplate % 'vehicleIsInBattle') elif vState == 'locked': header, text = getComplexStatus(statusTemplate % 'vehicleIsReadyToFight') elif vState == 'damaged' or vState == 'exploded' or vState == 'destroyed': header, text = getComplexStatus(statusTemplate % 'vehicleIsBroken') if header is not None or text is not None: return status(header, text, level) return self._getStatus(module, configuration)
def _getResearchPageStatus(self, module, configuration): vehicle = configuration.vehicle node = configuration.node def status(header=None, text=None, level=Vehicle.VEHICLE_STATE_LEVEL.WARNING): if header is not None or text is not None: return {"header": header, "text": text, "level": level} else: return return header, text = (None, None) level = Vehicle.VEHICLE_STATE_LEVEL.WARNING nodeState = int(node.state) statusTemplate = "#tooltips:researchPage/module/status/%s" parentCD = vehicle.intCD if vehicle is not None else None _, _, need = getUnlockPrice(module.intCD, parentCD) if not nodeState & NODE_STATE.UNLOCKED: if not vehicle.isUnlocked: header, text = getComplexStatus(statusTemplate % "rootVehicleIsLocked") elif not nodeState & NODE_STATE.NEXT_2_UNLOCK: header, text = getComplexStatus(statusTemplate % "parentModuleIsLocked") elif need > 0: header, text = getComplexStatus(statusTemplate % "notEnoughXP") level = Vehicle.VEHICLE_STATE_LEVEL.CRITICAL return status(header, text, level) elif not vehicle.isInInventory: header, text = getComplexStatus(statusTemplate % "needToBuyTank") text %= {"vehiclename": vehicle.userName} return status(header, text, Vehicle.VEHICLE_STATE_LEVEL.WARNING) elif nodeState & NODE_STATE.INSTALLED: return status() else: if vehicle is not None: if vehicle.isInInventory: vState = vehicle.getState() if vState == "battle": header, text = getComplexStatus(statusTemplate % "vehicleIsInBattle") elif vState == "locked": header, text = getComplexStatus(statusTemplate % "vehicleIsReadyToFight") elif vState == "damaged" or vState == "exploded" or vState == "destroyed": header, text = getComplexStatus(statusTemplate % "vehicleIsBroken") if header is not None or text is not None: return status(header, text, level) return self._getStatus(module, configuration)
def _getResearchPageStatus(self): module = self.module configuration = self.configuration vehicle = configuration.vehicle node = configuration.node block = [] def status(title = None, desc = None): if title is not None or desc is not None: block.append(formatters.packTitleDescBlock(title=text_styles.middleTitle(title) if title is not None else '', desc=text_styles.main(desc) if desc is not None else '')) return block header, text = (None, None) nodeState = int(node.state) statusTemplate = '#tooltips:researchPage/module/status/%s' parentCD = vehicle.intCD if vehicle is not None else None _, _, need = getUnlockPrice(module.intCD, parentCD) if not nodeState & NODE_STATE.UNLOCKED: if not vehicle.isUnlocked: header, text = getComplexStatus(statusTemplate % 'rootVehicleIsLocked') elif not nodeState & NODE_STATE.NEXT_2_UNLOCK: header, text = getComplexStatus(statusTemplate % 'parentModuleIsLocked') elif need > 0: header, text = getComplexStatus(statusTemplate % 'notEnoughXP') return status(header, text) elif not vehicle.isInInventory: header, text = getComplexStatus(statusTemplate % 'needToBuyTank') text %= {'vehiclename': vehicle.userName} return status(header, text) elif nodeState & NODE_STATE.INSTALLED: return status() else: if vehicle is not None: if vehicle.isInInventory: vState = vehicle.getState() if vState == 'battle': header, text = getComplexStatus(statusTemplate % 'vehicleIsInBattle') elif vState == 'locked': header, text = getComplexStatus(statusTemplate % 'vehicleIsReadyToFight') elif vState == 'damaged' or vState == 'exploded' or vState == 'destroyed': header, text = getComplexStatus(statusTemplate % 'vehicleIsBroken') if header is not None or text is not None: return status(header, text) return self._getStatus()
def _getStatus(self, module, configuration): vehicle = configuration.vehicle slotIdx = configuration.slotIdx eqs = configuration.eqs checkBuying = configuration.checkBuying isEqOrDev = module.itemTypeID in GUI_ITEM_TYPE.ARTEFACTS isFit = True reason = '' if checkBuying: isFit, reason = module.mayPurchase(g_itemsCache.items.stats.money) if isFit and vehicle is not None and vehicle.isInInventory: currentVehicleEqs = list() if vehicle is not None and vehicle.isInInventory: currentVehicleEqs = list(vehicle.eqs) vehicle.eqs = [None, None, None] if eqs: for i, e in enumerate(eqs): if e is not None: intCD = int(e) eq = g_itemsCache.items.getItemByCD(intCD) vehicle.eqs[i] = eq isFit, reason = module.mayInstall(vehicle, slotIdx) vehicle.eqs = list(currentVehicleEqs) inventoryVehicles = g_itemsCache.items.getVehicles( REQ_CRITERIA.INVENTORY).itervalues() installedVehicles = map( lambda x: x.shortUserName, module.getInstalledVehicles( inventoryVehicles))[:self._tooltip.MAX_INSTALLED_LIST_LEN] messageLvl = InventoryVehicle.STATE_LEVEL.WARNING tooltipHeader = '' tooltipText = '' if not isFit: reason = reason.replace(' ', '_') tooltipHeader, tooltipText = getComplexStatus( '#tooltips:moduleFits/%s' % reason) if reason == 'credit_error' or reason == 'gold_error': messageLvl = InventoryVehicle.STATE_LEVEL.CRITICAL elif reason == 'not_with_installed_equipment': if vehicle is not None: conflictEqs = module.getConflictedEquipments(vehicle) tooltipText %= { 'eqs': ', '.join( [makeString(e.userName) for e in conflictEqs]) } elif reason == 'already_installed' and isEqOrDev and len( installedVehicles): tooltipHeader, _ = getComplexStatus( '#tooltips:deviceFits/already_installed' if module. itemTypeName == GUI_ITEM_TYPE.OPTIONALDEVICE else '#tooltips:moduleFits/already_installed') tooltipText = ', '.join(installedVehicles) elif len(installedVehicles): tooltipHeader, _ = getComplexStatus( '#tooltips:deviceFits/already_installed' if module. itemTypeName == GUI_ITEM_TYPE. OPTIONALDEVICE else '#tooltips:moduleFits/already_installed') tooltipText = ', '.join(installedVehicles) return { 'level': messageLvl, 'header': tooltipHeader, 'text': tooltipText }
def _getStatus(self): block = [] module = self.module configuration = self.configuration vehicle = configuration.vehicle slotIdx = configuration.slotIdx eqs = configuration.eqs checkBuying = configuration.checkBuying isEqOrDev = module.itemTypeID in GUI_ITEM_TYPE.ARTEFACTS isFit = True reason = '' titleFormatter = text_styles.middleTitle cachedEqs = RegularEquipmentConsumables() currentVehicleEqs = RegularEquipmentConsumables() if vehicle is not None and vehicle.isInInventory: if vehicle is not None and vehicle.isInInventory: currentVehicleEqs = vehicle.equipment.regularConsumables vehicle.equipment.setRegularConsumables(RegularEquipmentConsumables()) if eqs: for i, e in enumerate(eqs): if e is not None: intCD = int(e) eq = self.itemsCache.items.getItemByCD(intCD) cachedEqs[i] = eq vehicle.equipment.setRegularConsumables(cachedEqs) isFit, reason = module.mayInstall(vehicle, slotIdx) vehicle.equipment.setRegularConsumables(currentVehicleEqs) inventoryVehicles = self.itemsCache.items.getVehicles(REQ_CRITERIA.INVENTORY).itervalues() totalInstalledVehicles = map(lambda x: x.shortUserName, module.getInstalledVehicles(inventoryVehicles)) installedVehicles = totalInstalledVehicles[:self.MAX_INSTALLED_LIST_LEN] tooltipHeader = None tooltipText = None if not isFit: reason = reason.replace(' ', '_') tooltipHeader, tooltipText = getComplexStatus('#tooltips:moduleFits/%s' % reason) if reason == 'not_with_installed_equipment': if vehicle is not None: vehicle.equipment.setRegularConsumables(cachedEqs) conflictEqs = module.getConflictedEquipments(vehicle) tooltipText %= {'eqs': ', '.join([ _ms(e.userName) for e in conflictEqs ])} vehicle.equipment.setRegularConsumables(currentVehicleEqs) elif reason == 'already_installed' and isEqOrDev and installedVehicles: tooltipHeader, _ = getComplexStatus('#tooltips:deviceFits/already_installed' if module.itemTypeName == GUI_ITEM_TYPE.OPTIONALDEVICE else '#tooltips:moduleFits/already_installed') tooltipText = ', '.join(installedVehicles) elif installedVehicles: tooltipHeader, _ = getComplexStatus('#tooltips:deviceFits/already_installed' if module.itemTypeName == GUI_ITEM_TYPE.OPTIONALDEVICE else '#tooltips:moduleFits/already_installed') tooltipText = ', '.join(installedVehicles) if tooltipHeader is not None or tooltipText is not None: if len(totalInstalledVehicles) > self.MAX_INSTALLED_LIST_LEN: hiddenVehicleCount = len(totalInstalledVehicles) - self.MAX_INSTALLED_LIST_LEN hiddenTxt = '%s %s' % (text_styles.main(TOOLTIPS.SUITABLEVEHICLE_HIDDENVEHICLECOUNT), text_styles.stats(hiddenVehicleCount)) tooltipText = '%s\n%s' % (tooltipText, hiddenTxt) block.append(self._packStatusBlock(tooltipHeader, tooltipText, titleFormatter)) if checkBuying: isFit, reason = module.mayPurchase(self.itemsCache.items.stats.money) if not isFit: reason = reason.replace(' ', '_') if GUI_ITEM_ECONOMY_CODE.isMoneyError(reason): titleFormatter = text_styles.critical tooltipHeader, tooltipText = getComplexStatus('#tooltips:moduleFits/%s' % reason) if tooltipHeader is not None or tooltipText is not None: if block: padding = formatters.packPadding(bottom=15) block.insert(0, self._packStatusBlock(tooltipHeader, tooltipText, titleFormatter, padding)) else: block.append(self._packStatusBlock(tooltipHeader, tooltipText, titleFormatter)) return block