def itemOnVehicleComparator(vehicle, item): vehicleParams = params.VehicleParams(vehicle).getParamsDict() withItemParams = vehicleParams mayInstall, reason = vehicle.descriptor.mayInstallComponent(item.intCD) if item.itemTypeID == ITEM_TYPES.vehicleTurret: mayInstall, reason = vehicle.descriptor.mayInstallTurret(item.intCD, vehicle.gun.intCD) if not mayInstall: properGun = findFirst(lambda gun: vehicle.descriptor.mayInstallComponent(gun['compactDescr'])[0], item.descriptor['guns']) if properGun is not None: removedModules = vehicle.descriptor.installTurret(item.intCD, properGun['compactDescr']) withItemParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installTurret(*removedModules) else: LOG_ERROR('not possible to install turret', item, reason) else: removedModules = vehicle.descriptor.installTurret(item.intCD, vehicle.gun.intCD) withItemParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installTurret(*removedModules) elif not mayInstall and reason == 'not for current vehicle' and item.itemTypeID == ITEM_TYPES.vehicleGun: turret = g_paramsCache.getPrecachedParameters(item.intCD).getTurretsForVehicle(vehicle.intCD)[0] removedModules = vehicle.descriptor.installTurret(turret, vehicle.gun.intCD) vehicleParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installTurret(turret, item.intCD) withItemParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installTurret(*removedModules) else: removedModule = vehicle.descriptor.installComponent(item.intCD) withItemParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installComponent(removedModule[0]) return VehiclesComparator(withItemParams, vehicleParams)
def itemOnVehicleComparator(vehicle, item): vehicleParams = params.VehicleParams(vehicle).getParamsDict() withItemParams = vehicleParams mayInstall, reason = vehicle.descriptor.mayInstallComponent(item.intCD) if item.itemTypeID == ITEM_TYPES.vehicleTurret: mayInstall, reason = vehicle.descriptor.mayInstallTurret(item.intCD, vehicle.gun.intCD) if not mayInstall: properGun = findFirst(lambda gun: vehicle.descriptor.mayInstallComponent(gun.compactDescr)[0], item.descriptor.guns) if properGun is not None: removedModules = vehicle.descriptor.installTurret(item.intCD, properGun.compactDescr) withItemParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installTurret(*removedModules) else: LOG_ERROR('not possible to install turret', item, reason) else: removedModules = vehicle.descriptor.installTurret(item.intCD, vehicle.gun.intCD) withItemParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installTurret(*removedModules) elif not mayInstall: if reason == 'not for current vehicle' and item.itemTypeID == ITEM_TYPES.vehicleGun: turret = g_paramsCache.getPrecachedParameters(item.intCD).getTurretsForVehicle(vehicle.intCD)[0] removedModules = vehicle.descriptor.installTurret(turret, vehicle.gun.intCD) vehicleParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installTurret(turret, item.intCD) withItemParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installTurret(*removedModules) else: LOG_WARNING('Module {} cannot be installed on vehicle {}'.format(item, vehicle)) return VehiclesComparator(withItemParams, vehicleParams) else: removedModule = vehicle.descriptor.installComponent(item.intCD) withItemParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installComponent(removedModule[0]) return VehiclesComparator(withItemParams, vehicleParams)
def __getSuitableModulesForGun(self, gunIntCD, vehicle): """ Get suitable turrets and chassis for particular gun. Turrets also may be unsuitable because of high weight, in that case need to find suitable chassis :param gunIntCD: int compact descriptor of gun module :param gui.shared.gui_items.Vehicle: :return: tuple: (turrets int compact descriptors, chassis int compact descriptors) """ chassisCDs = [] turretsCDs = g_paramsCache.getPrecachedParameters( gunIntCD).getTurretsForVehicle(vehicle.intCD) for turretIntCS in turretsCDs: suitableTurret = _getModule(turretIntCS) isFit, reason = suitableTurret.mayInstall(vehicle) if not isFit: if reason == 'too heavy': chassisCDs = map(lambda ch: ch.intCD, getSuitableChassis(vehicle)) else: currentTurret = vehicle.turret _installModule(vehicle, suitableTurret) gun = _getModule(gunIntCD) isFit, reason = gun.mayInstall(vehicle) if not isFit: if reason == 'too heavy': chassisCDs = _getSuitableChassisIDs(vehicle) _installModule(vehicle, currentTurret) return (turretsCDs, chassisCDs)
def itemOnVehicleComparator(vehicle, item): vehicleParams = params.VehicleParams(vehicle).getParamsDict() mayInstall, reason = vehicle.descriptor.mayInstallComponent(item.intCD) if item.itemTypeID == ITEM_TYPES.vehicleTurret: removedModules = vehicle.descriptor.installTurret(item.intCD, vehicle.gun.intCD) withItemParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installTurret(*removedModules) elif not mayInstall and reason == 'not for current vehicle' and item.itemTypeID == ITEM_TYPES.vehicleGun: turret = g_paramsCache.getPrecachedParameters(item.intCD).getTurretsForVehicle(vehicle.intCD)[0] removedModules = vehicle.descriptor.installTurret(turret, vehicle.gun.intCD) vehicleParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installTurret(turret, item.intCD) withItemParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installTurret(*removedModules) else: removedModule = vehicle.descriptor.installComponent(item.intCD) withItemParams = params.VehicleParams(vehicle).getParamsDict() vehicle.descriptor.installComponent(removedModule[0]) return VehiclesComparator(withItemParams, vehicleParams)
def __getSuitableModulesForGun(self, gunIntCD, vehicle): """ Get suitable turrets and chassis for particular gun. Turrets also may be unsuitable because of high weight, in that case need to find suitable chassis :param gunIntCD: int compact descriptor of gun module :param gui.shared.gui_items.Vehicle: :return: tuple: (turrets int compact descriptors, chassis int compact descriptors) """ chassisCDs = [] turretsCDs = g_paramsCache.getPrecachedParameters(gunIntCD).getTurretsForVehicle(vehicle.intCD) for turretIntCS in turretsCDs: turret = _getModule(turretIntCS) isFit, reason = turret.mayInstall(vehicle) if not isFit: if reason == 'too heavy': chassisCDs = map(lambda ch: ch.intCD, getSuitableChassis(vehicle)) return (turretsCDs, chassisCDs)
def __getSuitableModulesForGun(self, gunIntCD, vehicle): chassisCDs = [] turretsCDs = g_paramsCache.getPrecachedParameters( gunIntCD).getTurretsForVehicle(vehicle.intCD) for turretIntCS in turretsCDs: suitableTurret = _getModule(turretIntCS) isFit, reason = suitableTurret.mayInstall(vehicle) if not isFit: if reason == 'too heavy': chassisCDs = [ ch.intCD for ch in getSuitableChassis(vehicle) ] currentTurret = vehicle.turret _installModule(vehicle, suitableTurret) gun = _getModule(gunIntCD) isFit, reason = gun.mayInstall(vehicle) if not isFit: if reason == 'too heavy': chassisCDs = _getSuitableChassisIDs(vehicle) _installModule(vehicle, currentTurret) return (turretsCDs, chassisCDs)
def precachedParams(self): if self.__preCached is None: self.__preCached = g_paramsCache.getPrecachedParameters(self._itemDescr['compactDescr']) return self.__preCached
def _getPrecachedInfo(self): if self.__preCachedInfo is None: self.__preCachedInfo = g_paramsCache.getPrecachedParameters(self._itemDescr.compactDescr) return self.__preCachedInfo
def precachedParams(self): if self.__preCached is None: self.__preCached = g_paramsCache.getPrecachedParameters( self._itemDescr['compactDescr']) return self.__preCached