def _getOptionalDeviceCD(name): if name is None: return opts = g_itemsCache.items.getItems( GUI_ITEM_TYPE.OPTIONALDEVICE, REQ_CRITERIA.CUSTOM(lambda opt: name in opt.name)) if opts: result, _ = opts.popitem() else: result = None return result
def _getEquipmentForCreditsCD(tag): if tag is None: return equipments = g_itemsCache.items.getItems( GUI_ITEM_TYPE.EQUIPMENT, REQ_CRITERIA.CUSTOM(lambda eq: tag in eq.tags and eq.buyPrice[0] > 0)) if equipments: result, _ = equipments.popitem() else: result = None return result
def _getRequestParameters(self, nation, type, filter): checkExtra = False extra = [] requestCriteria = super(Shop, self)._getRequestParameters(nation, type, filter) inventoryVehicles = g_itemsCache.items.getVehicles(requestCriteria | REQ_CRITERIA.INVENTORY).values() requestCriteria = requestCriteria | ~REQ_CRITERIA.HIDDEN if type == self._MODULE: typeSize = int(filter.pop(0)) requestType = filter[0:typeSize] requestTypeIds = map(lambda x: ITEM_TYPE_INDICES[x], requestType) filter = filter[typeSize:] fitsType = filter.pop(0) compact = filter.pop(0) if not compact: LOG_ERROR('compact value has invalid value: ', compact) Waiting.hide('updateShop') return checkExtra = True extra = filter[:] itemTypeID = tuple(requestTypeIds) if fitsType == 'myVehicle': vehicle = g_itemsCache.items.getItemByCD(int(compact)) requestCriteria |= REQ_CRITERIA.VEHICLE.SUITABLE([vehicle], requestTypeIds) elif fitsType != 'otherVehicles': requestCriteria |= REQ_CRITERIA.VEHICLE.SUITABLE(inventoryVehicles, requestTypeIds) elif type == self._SHELL: filterSize = int(filter.pop(0)) requestType = filter[0:filterSize] filter = filter[filterSize:] fitsType = filter.pop(0) compact = filter.pop(0) if not compact: LOG_ERROR('compact value has invalid value: ', compact) Waiting.hide('updateShop') return itemTypeID = GUI_ITEM_TYPE.SHELL requestCriteria |= REQ_CRITERIA.CUSTOM(lambda item: item.type in requestType) if fitsType == 'myVehicleGun': vehicle = g_itemsCache.items.getItemByCD(int(compact)) shellsList = map(lambda x: x.intCD, vehicle.gun.defaultAmmo) requestCriteria |= REQ_CRITERIA.IN_CD_LIST(shellsList) elif fitsType != 'otherGuns': shellsList = set() myGuns = g_itemsCache.items.getItems(GUI_ITEM_TYPE.GUN, REQ_CRITERIA.INVENTORY).values() for gun in myGuns: shellsList.update(map(lambda x: x.intCD, gun.defaultAmmo)) for vehicle in inventoryVehicles: shellsList.update(map(lambda x: x.intCD, vehicle.gun.defaultAmmo)) requestCriteria |= REQ_CRITERIA.IN_CD_LIST(shellsList) elif type == self._VEHICLE: requestCriteria |= ~REQ_CRITERIA.VEHICLE.IS_PREMIUM_IGR typeSize = int(filter.pop(0)) requestType = filter[0:typeSize] extra = filter[typeSize:] checkExtra = True if 'all' not in requestType: requestType = map(lambda x: x.lower(), requestType) requestCriteria |= REQ_CRITERIA.CUSTOM(lambda item: item.type.lower() in requestType) itemTypeID = GUI_ITEM_TYPE.VEHICLE else: fitsType = filter.pop(0) compact = filter.pop(0) if not compact: LOG_ERROR('compact value has invalid value: ', compact) Waiting.hide('updateShop') return extra = filter checkExtra = type in (self._OPTIONAL_DEVICE, self._EQUIPMENT) itemTypeID = GUI_ITEM_TYPE_INDICES[type] if fitsType == 'myVehicle': vehicle = g_itemsCache.items.getItemByCD(int(compact)) requestCriteria |= REQ_CRITERIA.VEHICLE.SUITABLE([vehicle], [itemTypeID]) elif fitsType != 'otherVehicles': requestCriteria |= REQ_CRITERIA.VEHICLE.SUITABLE(inventoryVehicles, [itemTypeID]) return (itemTypeID, requestCriteria, inventoryVehicles, checkExtra, extra)