def applyNewParameters(self, index, vehicle, crewLvl, crewSkills, selectedShellIndex=0): vehCompareData = self.__vehicles[index] if vehCompareData.getVehicleCD() != vehicle.intCD: raise SoftException('Int-type compact descriptor are different') isChanged = False copyVehicle = Vehicle(_makeStrCD(vehicle), proxy=self.itemsCache.items) copyVehicle.setOutfits(vehicle) hasCamouflage = _isVehHasCamouflage(copyVehicle) if hasCamouflage: _removeVehicleCamouflages(copyVehicle) vehCompareData.setHasCamouflage(hasCamouflage) newStrCD = _makeStrCD(copyVehicle) if vehCompareData.getVehicleStrCD() != newStrCD: isChanged = True vehCompareData.setVehicleStrCD(newStrCD) if vehicle.battleBoosters.installed.getCapacity() > 0: newBattleBooster = vehicle.battleBoosters.installed[0] if vehCompareData.getBattleBooster() != newBattleBooster: isChanged = True vehCompareData.setBattleBooster(newBattleBooster) newEqs = _getVehicleEquipment(vehicle) if vehCompareData.getEquipment() != newEqs: isChanged = True vehCompareData.setEquipment(newEqs) if crewLvl != CrewTypes.SKILL_100 and crewLvl != CrewTypes.CURRENT: crewSkills = _NO_CREW_SKILLS.copy() if vehCompareData.getCrewData() != (crewLvl, crewSkills): vehCompareData.setCrewData(crewLvl, crewSkills) isChanged = True if vehCompareData.getSelectedShellIndex() != selectedShellIndex: vehCompareData.setSelectedShellIndex(selectedShellIndex) isChanged = True if vehCompareData.getDynSlotType() != vehicle.optDevices.dynSlotType: vehCompareData.setDynSlotType(vehicle.optDevices.dynSlotType) isChanged = True if vehCompareData.getPostProgressionState( ) != vehicle.postProgression.getState(implicitCopy=False): vehCompareData.setPostProgressionState( vehicle.postProgression.getState()) isChanged = True if isChanged: self.onParametersChange((index, )) else: LOG_DEBUG( 'Modules has not been applied because they are not different.')
def applyNewParameters(self, index, vehicle, crewLvl, crewSkills, selectedShellIndex = 0): """ :param index: int item index in self.__vehicles list :param vehicle: gui.shared.gui_items.Vehicle :param crewLvl: the common level of crew skill CREW_TYPES.* :param crewSkills: set(), the set of crew skills affected on vehicle parameters :param selectedShellIndex: the index of selected shell """ vehCompareData = self.__vehicles[index] if not vehCompareData.getVehicleCD() == vehicle.intCD: raise AssertionError isChanged = False copyVehicle = Vehicle(_makeStrCD(vehicle), proxy=self.itemsCache.items) copyVehicle.setOutfits(vehicle) hasCamouflage = _isVehHasCamouflage(copyVehicle) if hasCamouflage: _removeVehicleCamouflages(copyVehicle) vehCompareData.setHasCamouflage(hasCamouflage) newStrCD = _makeStrCD(copyVehicle) if vehCompareData.getVehicleStrCD() != newStrCD: isChanged = True vehCompareData.setVehicleStrCD(newStrCD) newBattleBooster = vehicle.equipment.battleBoosterConsumables[0] if vehCompareData.getBattleBooster() != newBattleBooster: isChanged = True vehCompareData.setBattleBooster(newBattleBooster) newEqs = _getVehicleEquipment(vehicle) if vehCompareData.getEquipment() != newEqs: isChanged = True vehCompareData.setEquipment(newEqs) if crewLvl != CREW_TYPES.SKILL_100 and crewLvl != CREW_TYPES.CURRENT: crewSkills = _NO_CREW_SKILLS.copy() if vehCompareData.getCrewData() != (crewLvl, crewSkills): vehCompareData.setCrewData(crewLvl, crewSkills) isChanged = True if vehCompareData.getSelectedShellIndex() != selectedShellIndex: vehCompareData.setSelectedShellIndex(selectedShellIndex) isChanged = True isChanged and self.onParametersChange((index,)) else: LOG_DEBUG('Modules has not been applied because they are not different.')