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