def __requestAvailableItems(self, type): myVehicles = yield Requester('vehicle').getFromInventory() modulesAllVehicle = VehicleItemsRequester(myVehicles).getItems([type]) oldStyleVehicle = None for v in myVehicles: if v.inventoryId == g_currentVehicle.invID: oldStyleVehicle = v break newStyleVehicle = g_currentVehicle.item modulesAllInventory = yield Requester(type).getFromInventory() data = yield AvailableItemsRequester(oldStyleVehicle, type).request() if type in AmmunitionPanel.__ARTEFACTS_SLOTS: unlocks = [ m for m in data if m.isCurrent ] else: unlocks = yield StatsRequester().getUnlocks() data.sort(reverse=True) if type in AmmunitionPanel.__ARTEFACTS_SLOTS: dataProvider = [[], [], []] else: dataProvider = [] credits, gold = g_itemsCache.items.stats.money for module in data: price = yield module.getPrice() inventoryCount, vehicleCount = self.__getModuleInventoryAndVehicleCounts(modulesAllVehicle, modulesAllInventory, module, type) moduleData = {'id': gui_items.compactItem(module), 'type': type, 'name': module.name if type in AmmunitionPanel.__ARTEFACTS_SLOTS else module.longName, 'desc': module.getTableName(oldStyleVehicle), 'target': 2 if type == ITEM_TYPE_NAMES[3] and not oldStyleVehicle.hasTurrets else module.target, 'price': price[0] if price[1] == 0 else price[1], 'currency': 'credits' if price[1] == 0 else 'gold', 'icon': module.icon if type in AmmunitionPanel.__ARTEFACTS_SLOTS else module.level, 'inventoryCount': inventoryCount, 'vehicleCount': vehicleCount} if type == ITEM_TYPE_NAMES[4]: if module.isClipGun(oldStyleVehicle.descriptor): moduleData[EXTRA_MODULE_INFO] = CLIP_ICON_PATH if type in AmmunitionPanel.__ARTEFACTS_SLOTS: moduleData['removable'] = module.isRemovable moduleData['slotIndex'] = module.index for i in xrange(3): md = moduleData.copy() fits = isModuleFitVehicle(module, newStyleVehicle, price, (credits, gold), unlocks, i) if md.get('target') == 1: md['status'] = MENU.MODULEFITS_WRONG_SLOT if i != md.get('slotIndex') else fits[1] md['isSelected'] = i == md.get('slotIndex') else: md['status'] = fits[1] md['isSelected'] = False md['slotIndex'] = i dataProvider[i].append(md) else: fits = isModuleFitVehicle(module, newStyleVehicle, price, (credits, gold), unlocks) moduleData['removable'] = True moduleData['isSelected'] = moduleData.get('target') == 1 moduleData['status'] = fits[1] dataProvider.append(moduleData) self.as_setDataS(dataProvider, type) 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
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