示例#1
0
    def _collectResponse(self, response, requestType):
        self._responsesCount += 1
        if requestType == 'shop':
            for item1 in response:
                isIn = False
                for item2 in self._response:
                    if item1 == item2:
                        item2.priceOrder = item1.priceOrder
                        isIn = True
                        break

                if not isIn:
                    self._response.append(item1)

        else:
            for item1 in response:
                for item2 in self._response:
                    if item1 == item2:
                        item1.priceOrder = item2.priceOrder
                        self._response.remove(item2)
                        break

                self._response.append(item1)

        if self._responsesCount == self._requestsCount:
            values = []
            components = _getComponentsByType(self._vehicle, self._itemTypeId)
            descriptors = components.keys()
            for item in self._response:
                if self._itemTypeId not in _ARTEFACTS_ITEMS:
                    if item.compactDescr not in descriptors:
                        continue
                elif not item.descriptor.checkCompatibilityWithVehicle(
                        self._vehicle.descriptor)[0]:
                    continue
                isCurrentOrIndex = components.get(item.compactDescr, False)
                isCurrent = isCurrentOrIndex if isinstance(
                    isCurrentOrIndex, bool) else True
                if isCurrent and isinstance(item, ShopItem):
                    item = InventoryItem(itemTypeName=item.itemTypeName,
                                         compactDescr=item.compactDescr,
                                         priceOrder=item.priceOrder,
                                         count=1)
                item.isCurrent = isCurrent
                if not isinstance(isCurrentOrIndex, bool):
                    item.index = isCurrentOrIndex
                values.append(item)

            if self._callback is not None:
                self._callback(values)
        return
示例#2
0
    def _collectResponse(self, response, requestType):
        self._responsesCount += 1
        if requestType == 'shop':
            for item1 in response:
                isIn = False
                for item2 in self._response:
                    if item1 == item2:
                        item2.priceOrder = item1.priceOrder
                        isIn = True
                        break

                if not isIn:
                    self._response.append(item1)

        else:
            for item1 in response:
                for item2 in self._response:
                    if item1 == item2:
                        item1.priceOrder = item2.priceOrder
                        self._response.remove(item2)
                        break

                self._response.append(item1)

        if self._responsesCount == self._requestsCount:
            values = []
            components = _getComponentsByType(self._vehicle, self._itemTypeId)
            descriptors = components.keys()
            for item in self._response:
                if self._itemTypeId not in _ARTEFACTS_ITEMS:
                    if item.compactDescr not in descriptors:
                        continue
                elif not item.descriptor.checkCompatibilityWithVehicle(self._vehicle.descriptor)[0]:
                    continue
                isCurrentOrIndex = components.get(item.compactDescr, False)
                isCurrent = isCurrentOrIndex if isinstance(isCurrentOrIndex, bool) else True
                if isCurrent and isinstance(item, ShopItem):
                    item = InventoryItem(itemTypeName=item.itemTypeName, compactDescr=item.compactDescr, priceOrder=item.priceOrder, count=1)
                item.isCurrent = isCurrent
                if not isinstance(isCurrentOrIndex, bool):
                    item.index = isCurrentOrIndex
                values.append(item)

            if self._callback is not None:
                self._callback(values)
        return
示例#3
0
    def parseModules(data, itemTypeID):
        if data is None:
            return []
        modules = []
        for descriptor, count in data.items():
            modules.append(
                InventoryItem(itemTypeName=ITEM_TYPE_NAMES[itemTypeID],
                              compactDescr=descriptor,
                              count=count))

        return modules
示例#4
0
    def invoke(self, content, varID):
        self._gui.showWaiting('request-item-params')
        itemCD = self.getVar(varID)
        if itemCD is None:
            return
        itemTypeID, nationID, compTypeID = vehicles.parseIntCompactDescr(itemCD)
        assert itemTypeID != ITEM_TYPE_NAMES[1]
        try:
            guiItem = InventoryItem(itemTypeName=ITEM_TYPE_NAMES[itemTypeID], compactDescr=itemCD)
            content['itemTypeName'] = guiItem.itemTypeName
            content['itemLevel'] = guiItem.level
            params = guiItem.getParams(g_currentVehicle.item)
            itemParams = []
            for param in params['parameters']:
                itemParams.extend(param)

            content['itemParams'] = itemParams
        except Exception:
            LOG_CURRENT_EXCEPTION()

        self._gui.hideWaiting('request-item-params')
    def populateTechnicalMaintenanceEquipment(self,
                                              eId1=None,
                                              currency1=None,
                                              eId2=None,
                                              currency2=None,
                                              eId3=None,
                                              currency3=None,
                                              slotIndex=None):
        shopRqs = yield ShopRequester().request()
        goldEqsForCredits = shopRqs.isEnabledBuyingGoldEqsForCredits
        credits, gold = g_itemsCache.items.stats.money
        myVehicles = yield Requester('vehicle').getFromInventory()
        modulesAllVehicle = VehicleItemsRequester(myVehicles).getItems(
            ['equipment'])
        oldStyleVehicle = None
        for v in myVehicles:
            if v.inventoryId == g_currentVehicle.invID:
                oldStyleVehicle = v
                break

        newStyleVehicle = g_currentVehicle.item
        availableData = yield AvailableItemsRequester(oldStyleVehicle,
                                                      'equipment').request()
        shopEqs = yield Requester('equipment').getFromShop()
        invEqs = yield Requester('equipment').getFromInventory()
        eqs = oldStyleVehicle.equipmentsLayout

        def getShopModule(module):
            for eq in shopEqs:
                if eq == module:
                    return eq

            return None

        def getInventoryModule(module):
            for eq in invEqs:
                if eq == module:
                    return eq

            return None

        def getModuleByCD(compactDescr):
            for eq in availableData:
                if eq.compactDescr == compactDescr:
                    return eq

            return None

        installed = [m for m in availableData if m.isCurrent]
        currencies = [None, None, None]
        if eId1 is not None or eId2 is not None or eId3 is not None or slotIndex is not None:
            installed = [
                getModuleByCD(id) for id in (eId1, eId2, eId3)
                if id is not None
            ]
            currencies = [currency1, currency2, currency3]
        data = []
        for item in availableData:
            if item in installed:
                invEq = getInventoryModule(item)
                shopModule = getShopModule(item)
                i = InventoryItem(
                    itemTypeName='equipment',
                    compactDescr=item.compactDescr,
                    count=invEq.count if invEq is not None else 0,
                    priceOrder=shopModule.priceOrder
                    if shopModule is not None else (0, 0))
                if item == getModuleByCD(eId1):
                    i.index = 0
                elif item == getModuleByCD(eId2):
                    i.index = 1
                elif item == getModuleByCD(eId3):
                    i.index = 2
                else:
                    i.index = item.index
                i.isCurrent = True
            elif isinstance(item, InventoryItem):
                i = InventoryItem(itemTypeName='equipment',
                                  compactDescr=item.compactDescr,
                                  count=item.count,
                                  priceOrder=item.priceOrder)
            else:
                i = item
            data.append(i)

        unlocks = [m for m in data if m.isCurrent]
        data.sort(reverse=True)
        installed = [0, 0, 0]
        for m in availableData:
            if m.isCurrent:
                installed[m.index] = m.compactDescr

        setup = [0, 0, 0]
        modules = []
        if len(eqs):
            setup = eqs
        for module in data:
            vehCount = 0
            try:
                vehCount = modulesAllVehicle[modulesAllVehicle.index(
                    module)].count
            except Exception:
                pass

            invCount = 0
            try:
                invCount = invEqs[invEqs.index(module)].count
            except Exception:
                pass

            shopModule = getShopModule(module)
            price = (yield
                     shopModule.getPrice()) if shopModule is not None else (0,
                                                                            0)
            if goldEqsForCredits:
                price = (price[0] +
                         price[1] * shopRqs.exchangeRateForShellsAndEqs,
                         price[1])
            priceCurrency = 'gold'
            if not price[1]:
                priceCurrency = 'credits'
            elif goldEqsForCredits and module.index is not None:
                if module.index < len(eqs) and eqs[module.index] < 0:
                    priceCurrency = 'credits'
                elif currencies[module.index] is not None:
                    priceCurrency = currencies[module.index]
            fits = []
            for i in xrange(3):
                fits.append(
                    isModuleFitVehicle(module, newStyleVehicle, price,
                                       (credits, gold), unlocks, i)[1])

            modules.append({
                'id':
                compactItem(module),
                'name':
                module.name,
                'desc':
                getShortDescr(module.getTableName(oldStyleVehicle)),
                'target':
                module.target,
                'compactDescr':
                module.compactDescr,
                'prices':
                list(price)[:2],
                'currency':
                priceCurrency,
                'icon':
                module.icon,
                'index':
                module.index,
                'inventoryCount':
                invCount,
                'vehicleCount':
                vehCount,
                'count':
                module.count if isinstance(module, InventoryItem) else 0,
                'fits':
                fits,
                'goldEqsForCredits':
                goldEqsForCredits
            })

        self.as_setEquipmentS(installed, setup, modules)
        return
    def populateTechnicalMaintenanceEquipment(self, eId1 = None, currency1 = None, eId2 = None, currency2 = None, eId3 = None, currency3 = None, slotIndex = None):
        shopRqs = yield ShopRequester().request()
        goldEqsForCredits = shopRqs.isEnabledBuyingGoldEqsForCredits
        credits, gold = g_itemsCache.items.stats.money
        myVehicles = yield Requester('vehicle').getFromInventory()
        modulesAllVehicle = VehicleItemsRequester(myVehicles).getItems(['equipment'])
        oldStyleVehicle = None
        for v in myVehicles:
            if v.inventoryId == g_currentVehicle.invID:
                oldStyleVehicle = v
                break

        newStyleVehicle = g_currentVehicle.item
        availableData = yield AvailableItemsRequester(oldStyleVehicle, 'equipment').request()
        shopEqs = yield Requester('equipment').getFromShop()
        invEqs = yield Requester('equipment').getFromInventory()
        eqs = oldStyleVehicle.equipmentsLayout

        def getShopModule(module):
            for eq in shopEqs:
                if eq == module:
                    return eq

            return None

        def getInventoryModule(module):
            for eq in invEqs:
                if eq == module:
                    return eq

            return None

        def getModuleByCD(compactDescr):
            for eq in availableData:
                if eq.compactDescr == compactDescr:
                    return eq

            return None

        installed = [ m for m in availableData if m.isCurrent ]
        currencies = [None, None, None]
        if eId1 is not None or eId2 is not None or eId3 is not None or slotIndex is not None:
            installed = [ getModuleByCD(id) for id in (eId1, eId2, eId3) if id is not None ]
            currencies = [currency1, currency2, currency3]
        data = []
        for item in availableData:
            if item in installed:
                invEq = getInventoryModule(item)
                shopModule = getShopModule(item)
                i = InventoryItem(itemTypeName='equipment', compactDescr=item.compactDescr, count=invEq.count if invEq is not None else 0, priceOrder=shopModule.priceOrder if shopModule is not None else (0, 0))
                if item == getModuleByCD(eId1):
                    i.index = 0
                elif item == getModuleByCD(eId2):
                    i.index = 1
                elif item == getModuleByCD(eId3):
                    i.index = 2
                else:
                    i.index = item.index
                i.isCurrent = True
            elif isinstance(item, InventoryItem):
                i = InventoryItem(itemTypeName='equipment', compactDescr=item.compactDescr, count=item.count, priceOrder=item.priceOrder)
            else:
                i = item
            data.append(i)

        unlocks = [ m for m in data if m.isCurrent ]
        data.sort(reverse=True)
        installed = [0, 0, 0]
        for m in availableData:
            if m.isCurrent:
                installed[m.index] = m.compactDescr

        setup = [0, 0, 0]
        modules = []
        if len(eqs):
            setup = eqs
        for module in data:
            vehCount = 0
            try:
                vehCount = modulesAllVehicle[modulesAllVehicle.index(module)].count
            except Exception:
                pass

            invCount = 0
            try:
                invCount = invEqs[invEqs.index(module)].count
            except Exception:
                pass

            shopModule = getShopModule(module)
            price = (yield shopModule.getPrice()) if shopModule is not None else (0, 0)
            if goldEqsForCredits:
                price = (price[0] + price[1] * shopRqs.exchangeRateForShellsAndEqs, price[1])
            priceCurrency = 'gold'
            if not price[1]:
                priceCurrency = 'credits'
            elif goldEqsForCredits and module.index is not None:
                if module.index < len(eqs) and eqs[module.index] < 0:
                    priceCurrency = 'credits'
                elif currencies[module.index] is not None:
                    priceCurrency = currencies[module.index]
            fits = []
            for i in xrange(3):
                fits.append(isModuleFitVehicle(module, newStyleVehicle, price, (credits, gold), unlocks, i)[1])

            modules.append({'id': compactItem(module),
             'name': module.name,
             'desc': getShortDescr(module.getTableName(oldStyleVehicle)),
             'target': module.target,
             'compactDescr': module.compactDescr,
             'prices': list(price)[:2],
             'currency': priceCurrency,
             'icon': module.icon,
             'index': module.index,
             'inventoryCount': invCount,
             'vehicleCount': vehCount,
             'count': module.count if isinstance(module, InventoryItem) else 0,
             'fits': fits,
             'goldEqsForCredits': goldEqsForCredits})

        self.as_setEquipmentS(installed, setup, modules)
        return