Exemple #1
0
 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}
Exemple #2
0
 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}
Exemple #3
0
    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
Exemple #4
0
    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}
Exemple #5
0
 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}
Exemple #6
0
 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}
Exemple #7
0
 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}
Exemple #8
0
 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}
Exemple #9
0
 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}
Exemple #10
0
 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}
Exemple #11
0
 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}
Exemple #12
0
 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}
Exemple #13
0
    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()
Exemple #14
0
 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
Exemple #15
0
 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
Exemple #16
0
 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}
Exemple #17
0
 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}
Exemple #18
0
    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)
Exemple #19
0
    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)
Exemple #20
0
    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)
Exemple #21
0
    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()
Exemple #22
0
    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
        }
Exemple #23
0
    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