def _makeAdvancedParamVO(self, param): data = super(_VehParamsValuesGenerator, self)._makeAdvancedParamVO(param) if param.value: data['text'] = formatters.formatParameter(param.name, param.value, param.state, self.__bodyScheme, _CMP_FORMAT_SETTINGS) else: data['text'] = getUndefinedParam() return data
def getDeltaParams(self, paramName, paramValue): """ Calculates delta and return it in formatted HTML string :param paramName: parameter name as string ('damage', 'turretArmor', etc...) :param paramValue: parameter value :return: formatted HTML string """ params = self.getParams() if paramName in params: pInfo = getParamExtendedData(paramName, params[paramName], paramValue) states = pInfo.state if isinstance(pInfo.value, (tuple, list)): deltaVals = [] isTheSame = True for st in states: diff = st[1] isTheSame = isTheSame and diff == 0 deltaVals.append(diff) if isTheSame: return None else: deltaVals = states[1] return formatters.formatParameter(pInfo.name, deltaVals, states, _DELTA_PARAM_COLOR_SCHEME, _CMP_FORMAT_SETTINGS) else: return None
def getModuleParameters(module, vehicle, currentModule=None): moduleDescr = _getModuleDescr(module, vehicle) currModule = currentModule if currentModule is not None else _getCurrentModule( moduleDescr) comparator = _itemsComparator(moduleDescr.typeCD, moduleDescr.moduleParams, currModule, moduleDescr.vDescr) params = [] moduleData = getTreeModuleSettings(module) deltaParamsList = moduleData.deltaParams if moduleData is not None else tuple( ) for paramName in deltaParamsList: if paramName in moduleDescr.moduleParams: paramInfo = comparator.getExtendedData(paramName) fmtValue = params_formatters.formatParameterDelta( paramInfo, _DELTA_SCHEME, _CMP_FORMAT_DELTA_SETTINGS) if fmtValue is not None: params.append({ 'value': str(fmtValue), 'description': _formatModuleParamName(paramName) }) paramsList = moduleData.params if moduleData is not None else [] for paramName in paramsList: if paramName in moduleDescr.moduleParams: paramInfo = comparator.getExtendedData(paramName) fmtValue = params_formatters.formatParameter( paramName, paramInfo.value, paramInfo.state, _DELTA_SCHEME, _CMP_FORMAT_SETTINGS) if fmtValue is not None: params.append({ 'value': str(fmtValue), 'description': _formatModuleParamName(paramName) }) paramsDict = moduleData.constParams if moduleData else {} for paramName, paramVal in paramsDict.iteritems(): fmtValue = _makeTxtForBetter(paramVal) params.append({ 'value': str(fmtValue), 'description': _formatModuleParamName(paramName) }) return params
def _extendByModuleData(targetData, module, vehDescr): moduleType = module.itemTypeID if not moduleType in GUI_ITEM_TYPE.VEHICLE_MODULES: raise AssertionError values, names = [], [] paramsData = params_helper.getParameters(module) for paramName in _PARAMS_LISTS[moduleType]: value = paramsData.get(paramName) if value is not None: values.append(_formatValuesString(formatParameter(paramName, value))) names.append(formatModuleParamName(paramName)) targetData['level'] = module.level targetData['paramValues'] = '\n'.join(values) targetData['paramNames'] = '\n'.join(names) targetData['name'] = text_styles.middleTitle(module.userName) if moduleType == GUI_ITEM_TYPE.GUN: targetData[EXTRA_MODULE_INFO] = module.isClipGun(vehDescr) and CLIP_ICON_PATH elif moduleType == GUI_ITEM_TYPE.CHASSIS: if module.isHydraulicChassis(): targetData[EXTRA_MODULE_INFO] = HYDRAULIC_ICON_PATH return
def _extendByModuleData(targetData, vehicleModule, vehDescr): moduleType = vehicleModule.itemTypeID values, names = [], [] paramsData = params_helper.getParameters(vehicleModule, vehDescr) paramsList = _PARAMS_LISTS[moduleType] if vehicleModule.itemTypeID == GUI_ITEM_TYPE.GUN and vehicleModule.isAutoReloadable(vehDescr): paramsList = paramsList[:-1] + ('autoReloadTime',) serverSettings = dependency.instance(ISettingsCore).serverSettings if serverSettings.checkAutoReloadHighlights(): targetData['highlightedParameterIdx'] = 2 for paramName in paramsList: value = paramsData.get(paramName) if value is not None: values.append(_formatValuesString(formatParameter(paramName, value))) names.append(formatModuleParamName(paramName)) targetData['level'] = vehicleModule.level targetData['paramValues'] = '\n'.join(values) targetData['paramNames'] = '\n'.join(names) targetData['name'] = text_styles.middleTitle(vehicleModule.userName) targetData[EXTRA_MODULE_INFO] = vehicleModule.getExtraIconInfo(vehDescr) return
def CommonStatsBlockConstructor_construct(base, self): try: self.leftPadding = -15 vehicle = self.vehicle cache_result = carousel_tooltips_cache.get(vehicle.intCD) if cache_result: return cache_result result = [] if not config.get('tooltips/hideSimplifiedVehParams'): result.append( formatters.packTitleDescBlock(text_styles.middleTitle( i18n.makeString(TOOLTIPS.TANKCARUSEL_MAINPROPERTY)), padding=formatters.packPadding( left=0, right=self.rightPadding, bottom=8))) params = self.configuration.params veh_descr = vehicle.descriptor gun = vehicle.gun.descriptor turret = vehicle.turret.descriptor comparator = idealCrewComparator_helper(vehicle) vehicleCommonParams = getParameters_helper(vehicle) veh_type_inconfig = vehicle.type.replace('AT-SPG', 'TD') clipGunInfoShown = False premium_shells = {} for shell in vehicle.shells: premium_shells[shell.intCompactDescr] = shell.isPremium if params: values = config.get('tooltips/%s' % veh_type_inconfig) if values and len(values): params_list = values # overriding parameters else: params_list = self.PARAMS.get(vehicle.type, 'default') # original parameters paramInfo = None for paramName in params_list: if paramName is None: continue if paramName == 'rateOfFire': paramName = 'reloadTime' elif paramName == 'traverseLimits': paramName = 'gunYawLimits' if 'gunYawLimits' in vehicleCommonParams else 'turretYawLimits' elif paramName == 'radioRange': paramName = 'radioDistance' elif paramName == 'reloadTimeSecs' and (gun.clip[0] > 1): paramName = 'clipFireRate' elif paramName == 'turretRotationSpeed' and not vehicle.hasTurrets: paramName = 'gunRotationSpeed' if paramName in vehicleCommonParams: paramInfo = comparator.getExtendedData(paramName) if paramName == 'turretArmor' and not vehicle.hasTurrets: continue #maxHealth elif paramName == 'maxHealth': tooltip_add_param( self, result, i18n.makeString('#menu:vehicleInfo/params/maxHealth'), formatNumber(veh_descr.maxHealth)) #battle tiers elif paramName == 'battleTiers': (minTier, maxTier) = getTiers(vehicle.level, vehicle.type, vehicle.name) tooltip_add_param(self, result, l10n('Battle tiers'), '%s..%s' % (minTier, maxTier)) #explosionRadius elif paramName == 'explosionRadius': explosionRadiusMin = 999 explosionRadiusMax = 0 for shot in gun.shots: if shot.shell.kind == SHELL_TYPES.HIGH_EXPLOSIVE: explosionRadius = shot.shell.type.explosionRadius if explosionRadius < explosionRadiusMin: explosionRadiusMin = explosionRadius if explosionRadius > explosionRadiusMax: explosionRadiusMax = explosionRadius if explosionRadiusMax == 0: # no HE continue explosionRadius_str = formatNumber(explosionRadiusMin) if explosionRadiusMin != explosionRadiusMax: explosionRadius_str += '/%s' % gold_pad( formatNumber(explosionRadiusMax)) tooltip_add_param(self, result, getParameterValue(paramName), explosionRadius_str) #shellSpeedSummary elif paramName == 'shellSpeedSummary': shellSpeedSummary_arr = [] for shot in gun.shots: shellSpeed_str = '%g' % round(shot.speed * 1.25) if premium_shells[shot.shell.compactDescr]: shellSpeed_str = gold_pad(shellSpeed_str) shellSpeedSummary_arr.append(shellSpeed_str) shellSpeedSummary_str = '/'.join(shellSpeedSummary_arr) tooltip_add_param( self, result, tooltip_with_units(l10n('shellSpeed'), l10n('(m/sec)')), shellSpeedSummary_str) #piercingPowerAvg elif paramName == 'piercingPowerAvg': piercingPowerAvg = formatNumber( veh_descr.shot.piercingPower[0]) tooltip_add_param( self, result, replace_p( i18n.makeString( '#menu:moduleInfo/params/avgPiercingPower')), piercingPowerAvg) #piercingPowerAvgSummary elif paramName == 'piercingPowerAvgSummary': piercingPowerAvgSummary_arr = [] for shot in gun.shots: piercingPower_str = formatNumber(shot.piercingPower[0]) if premium_shells[shot.shell.compactDescr]: piercingPower_str = gold_pad(piercingPower_str) piercingPowerAvgSummary_arr.append(piercingPower_str) piercingPowerAvgSummary_str = '/'.join( piercingPowerAvgSummary_arr) tooltip_add_param( self, result, replace_p( i18n.makeString( '#menu:moduleInfo/params/avgPiercingPower')), piercingPowerAvgSummary_str) #damageAvgSummary elif paramName == 'damageAvgSummary': damageAvgSummary_arr = [] for shot in gun.shots: damageAvg_str = formatNumber(shot.shell.damage[0]) if premium_shells[shot.shell.compactDescr]: damageAvg_str = gold_pad(damageAvg_str) damageAvgSummary_arr.append(damageAvg_str) damageAvgSummary_str = '/'.join(damageAvgSummary_arr) tooltip_add_param( self, result, replace_p( i18n.makeString( '#menu:moduleInfo/params/avgDamage')), damageAvgSummary_str) #magazine loading # elif (paramName == 'reloadTimeSecs' or paramName == 'rateOfFire') and vehicle.gun.isClipGun(): # if clipGunInfoShown: # continue # (shellsCount, shellReloadingTime) = gun.clip # reloadMagazineTime = gun.reloadTime # shellReloadingTime_str = formatNumber(shellReloadingTime) # reloadMagazineTime_str = formatNumber(reloadMagazineTime) # tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/shellsCount')), shellsCount) # tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/shellReloadingTime')), shellReloadingTime_str) # tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/reloadMagazineTime')), reloadMagazineTime_str) # clipGunInfoShown = True #rate of fire # elif paramName == 'rateOfFire' and not vehicle.gun.isClipGun(): # rateOfFire_str = formatNumber(60 / gun.reloadTime) # tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/reloadTime')), rateOfFire_str) # gun traverse limits # elif paramName == 'traverseLimits' and gun.turretYawLimits: # (traverseMin, traverseMax) = gun.turretYawLimits # traverseLimits_str = '%g..+%g' % (round(degrees(traverseMin)), round(degrees(traverseMax))) # tooltip_add_param(self, result, l10n('traverseLimits'), traverseLimits_str) # elevation limits (front) # elif paramName == 'pitchLimits': # (pitchMax, pitchMin) = calcPitchLimitsFromDesc(0, gun.pitchLimits) # pitchLimits_str = '%g..+%g' % (round(degrees(-pitchMin)), round(degrees(-pitchMax))) # tooltip_add_param(self, result, l10n('pitchLimits'), pitchLimits_str) # elevation limits (side) elif paramName == 'pitchLimitsSide': if gun.turretYawLimits and abs( degrees(gun.turretYawLimits[0])) < 89: continue # can't look aside 90 degrees (pitchMax, pitchMin) = calcPitchLimitsFromDesc( pi / 2, gun.pitchLimits) pitchLimits_str = '%g..+%g' % (round( degrees(-pitchMin)), round(degrees(-pitchMax))) tooltip_add_param(self, result, l10n('pitchLimitsSide'), pitchLimits_str) # elevation limits (rear) elif paramName == 'pitchLimitsRear': if gun.turretYawLimits: continue # can't look back (pitchMax, pitchMin) = calcPitchLimitsFromDesc(pi, gun.pitchLimits) pitchLimits_str = '%g..+%g' % (round( degrees(-pitchMin)), round(degrees(-pitchMax))) tooltip_add_param(self, result, l10n('pitchLimitsRear'), pitchLimits_str) # shooting range elif paramName == 'shootingRadius': viewRange, shellRadius, artiRadius = _getRanges( turret, gun, vehicle.nationName, vehicle.type) if vehicle.type == 'SPG': tooltip_add_param( self, result, tooltip_with_units(l10n('shootingRadius'), l10n('(m)')), artiRadius) elif shellRadius < 707: tooltip_add_param( self, result, tooltip_with_units(l10n('shootingRadius'), l10n('(m)')), shellRadius) #reverse max speed elif paramName == 'speedLimits': (speedLimitForward, speedLimitReverse) = veh_descr.physics['speedLimits'] speedLimits_str = str(int( speedLimitForward * 3.6)) + '/' + str( int(speedLimitReverse * 3.6)) tooltip_add_param(self, result, getParameterValue(paramName), speedLimits_str) #turret rotation speed # elif paramName == 'turretRotationSpeed' or paramName == 'gunRotationSpeed': # if not vehicle.hasTurrets: # paramName = 'gunRotationSpeed' # turretRotationSpeed_str = str(int(degrees(veh_descr.turret.rotationSpeed))) # tooltip_add_param(self, result, tooltip_with_units(i18n.makeString('#menu:tank_params/%s' % paramName).rstrip(), i18n.makeString('#menu:tank_params/gps')), turretRotationSpeed_str) #terrain resistance elif paramName == 'terrainResistance': resistances_arr = [] for key in veh_descr.chassis.terrainResistance: resistances_arr.append(formatNumber(key)) terrainResistance_str = '/'.join(resistances_arr) tooltip_add_param(self, result, l10n('terrainResistance'), terrainResistance_str) #radioRange # elif paramName == 'radioRange': # radioRange_str = '%s' % int(vehicle.radio.descriptor.distance) # tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/radioDistance')), radioRange_str) #gravity elif paramName == 'gravity': gravity_str = formatNumber(veh_descr.shot.gravity) tooltip_add_param(self, result, l10n('gravity'), gravity_str) #inner name, for example - ussr:R100_SU122A elif paramName == 'innerName': tooltip_add_param(self, result, vehicle.name, '') #custom text elif paramName.startswith('TEXT:'): customtext = paramName[5:] tooltip_add_param(self, result, l10n(customtext), '') elif paramInfo is not None and paramName in paramInfo.name: valueStr = str( param_formatter.formatParameter( paramName, paramInfo.value)) tooltip_add_param(self, result, getParameterValue(paramName), valueStr) if vehicle.isInInventory: # optional devices icons, must be in the end if 'optDevicesIcons' in params_list: optDevicesIcons_arr = [] for key in vehicle.optDevices: if key: imgPath = 'img://gui' + key.icon.lstrip('.') else: imgPath = 'img://gui/maps/icons/artefact/empty.png' optDevicesIcons_arr.append( '<img src="%s" height="16" width="16">' % imgPath) optDevicesIcons_str = ' '.join(optDevicesIcons_arr) tooltip_add_param(self, result, optDevicesIcons_str, '') # equipment icons, must be in the end if 'equipmentIcons' in params_list: equipmentIcons_arr = [] for key in vehicle.equipment.regularConsumables.getInstalledItems( ): if key: imgPath = 'img://gui' + key.icon.lstrip('.') else: imgPath = 'img://gui/maps/icons/artefact/empty.png' equipmentIcons_arr.append( '<img src="%s" height="16" width="16">' % imgPath) for key in vehicle.equipment.battleBoosterConsumables.getInstalledItems( ): if key: imgPath = 'img://gui' + key.icon.lstrip('.') else: imgPath = 'img://gui/maps/icons/artefact/empty.png' equipmentIcons_arr.append( '<img src="%s" height="16" width="16">' % imgPath) equipmentIcons_str = ' '.join(equipmentIcons_arr) if config.get('tooltips/combineIcons') and optDevicesIcons_str: tmp_list = [] tooltip_add_param(self, tmp_list, equipmentIcons_str, '') result[-1]['data'][ 'name'] += ' ' + tmp_list[0]['data']['name'] else: tooltip_add_param(self, result, equipmentIcons_str, '') # crew roles icons, must be in the end if 'crewRolesIcons' in params_list: imgPath = 'img://../mods/shared_resources/xvm/res/icons/tooltips/roles' crewRolesIcons_arr = [] for tankman_role in vehicle.descriptor.type.crewRoles: crewRolesIcons_arr.append( '<img src="%s/%s.png" height="16" width="16">' % (imgPath, tankman_role[0])) crewRolesIcons_str = ''.join(crewRolesIcons_arr) tooltip_add_param(self, result, crewRolesIcons_str, '') if (len(result) > 30) and config.get('tooltips/hideBottomText'): # limitation result = result[:30] elif (len(result) > 29) and not config.get('tooltips/hideBottomText'): # limitation result = result[:29] carousel_tooltips_cache[vehicle.intCD] = result return result except Exception as ex: err(traceback.format_exc()) return base(self)
def _makeSimpleParamHeaderVO(self, param, isOpen, comparator): data = super(_VehParamsValuesGenerator, self)._makeSimpleParamHeaderVO(param, isOpen, comparator) data['text'] = formatters.formatParameter(param.name, param.value, param.state, self.__headerScheme, _CMP_FORMAT_SETTINGS, False) return data
def CommonStatsBlockConstructor_construct(base, self): try: self.leftPadding = -15 vehicle = self.vehicle cache_result = carousel_tooltips_cache.get(vehicle.intCD) if cache_result: return cache_result result = [] if not config.get('tooltips/hideSimplifiedVehParams'): result.append(formatters.packTitleDescBlock(text_styles.middleTitle(i18n.makeString(TOOLTIPS.TANKCARUSEL_MAINPROPERTY)), padding=formatters.packPadding(left=0, right=self.rightPadding, bottom=8))) params = self.configuration.params veh_descr = vehicle.descriptor gun = vehicle.gun.descriptor turret = vehicle.turret.descriptor comparator = idealCrewComparator_helper(vehicle) vehicleCommonParams = getParameters_helper(vehicle) veh_type_inconfig = vehicle.type.replace('AT-SPG', 'TD') clipGunInfoShown = False premium_shells = {} for shell in vehicle.shells: premium_shells[shell.intCompactDescr] = shell.isPremium if params: values = config.get('tooltips/%s' % veh_type_inconfig) if values and len(values): params_list = values # overriding parameters else: params_list = self.PARAMS.get(vehicle.type, 'default') # original parameters paramInfo = None for paramName in params_list: if paramName is None: continue if paramName == 'rateOfFire': paramName = 'reloadTime' elif paramName == 'traverseLimits': paramName = 'gunYawLimits' if 'gunYawLimits' in vehicleCommonParams else 'turretYawLimits' elif paramName == 'radioRange': paramName = 'radioDistance' elif paramName == 'reloadTimeSecs' and vehicle.gun.isClipGun(): paramName = 'clipFireRate' elif paramName == 'turretRotationSpeed' and not vehicle.hasTurrets: paramName = 'gunRotationSpeed' if paramName in vehicleCommonParams: paramInfo = comparator.getExtendedData(paramName) if paramName == 'turretArmor' and not vehicle.hasTurrets: continue #maxHealth elif paramName == 'maxHealth': tooltip_add_param(self, result, i18n.makeString('#menu:vehicleInfo/params/maxHealth'), formatNumber(veh_descr.maxHealth)) #battle tiers elif paramName == 'battleTiers': (minTier, maxTier) = getTiers(vehicle.level, vehicle.type, vehicle.name) tooltip_add_param(self, result, l10n('Battle tiers'), '%s..%s' % (minTier, maxTier)) #explosionRadius elif paramName == 'explosionRadius': explosionRadiusMin = 999 explosionRadiusMax = 0 for shot in gun['shots']: if 'explosionRadius' in shot['shell']: if shot['shell']['explosionRadius'] < explosionRadiusMin: explosionRadiusMin = shot['shell']['explosionRadius'] if shot['shell']['explosionRadius'] > explosionRadiusMax: explosionRadiusMax = shot['shell']['explosionRadius'] if explosionRadiusMax == 0: # no HE continue explosionRadius_str = formatNumber(explosionRadiusMin) if explosionRadiusMin != explosionRadiusMax: explosionRadius_str += '/%s' % gold_pad(formatNumber(explosionRadiusMax)) tooltip_add_param(self, result, getParameterValue(paramName), explosionRadius_str) #shellSpeedSummary elif paramName == 'shellSpeedSummary': shellSpeedSummary_arr = [] for shot in gun['shots']: shellSpeed_str = '%g' % round(shot['speed'] * 1.25) if premium_shells[shot['shell']['compactDescr']]: shellSpeed_str = gold_pad(shellSpeed_str) shellSpeedSummary_arr.append(shellSpeed_str) shellSpeedSummary_str = '/'.join(shellSpeedSummary_arr) tooltip_add_param(self, result, tooltip_with_units(l10n('shellSpeed'), l10n('(m/sec)')), shellSpeedSummary_str) #piercingPowerAvg elif paramName == 'piercingPowerAvg': piercingPowerAvg = formatNumber(veh_descr.shot['piercingPower'][0]) tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/avgPiercingPower')), piercingPowerAvg) #piercingPowerAvgSummary elif paramName == 'piercingPowerAvgSummary': piercingPowerAvgSummary_arr = [] for shot in gun['shots']: piercingPower_str = formatNumber(shot['piercingPower'][0]) if premium_shells[shot['shell']['compactDescr']]: piercingPower_str = gold_pad(piercingPower_str) piercingPowerAvgSummary_arr.append(piercingPower_str) piercingPowerAvgSummary_str = '/'.join(piercingPowerAvgSummary_arr) tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/avgPiercingPower')), piercingPowerAvgSummary_str) #damageAvgSummary elif paramName == 'damageAvgSummary': damageAvgSummary_arr = [] for shot in gun['shots']: damageAvg_str = formatNumber(shot['shell']['damage'][0]) if premium_shells[shot['shell']['compactDescr']]: damageAvg_str = gold_pad(damageAvg_str) damageAvgSummary_arr.append(damageAvg_str) damageAvgSummary_str = '/'.join(damageAvgSummary_arr) tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/avgDamage')), damageAvgSummary_str) #magazine loading # elif (paramName == 'reloadTimeSecs' or paramName == 'rateOfFire') and vehicle.gun.isClipGun(): # if clipGunInfoShown: # continue # (shellsCount, shellReloadingTime) = gun['clip'] # reloadMagazineTime = gun['reloadTime'] # shellReloadingTime_str = formatNumber(shellReloadingTime) # reloadMagazineTime_str = formatNumber(reloadMagazineTime) # tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/shellsCount')), shellsCount) # tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/shellReloadingTime')), shellReloadingTime_str) # tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/reloadMagazineTime')), reloadMagazineTime_str) # clipGunInfoShown = True #rate of fire # elif paramName == 'rateOfFire' and not vehicle.gun.isClipGun(): # rateOfFire_str = formatNumber(60 / gun['reloadTime']) # tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/reloadTime')), rateOfFire_str) # gun traverse limits # elif paramName == 'traverseLimits' and gun['turretYawLimits']: # (traverseMin, traverseMax) = gun['turretYawLimits'] # traverseLimits_str = '%g..+%g' % (round(degrees(traverseMin)), round(degrees(traverseMax))) # tooltip_add_param(self, result, l10n('traverseLimits'), traverseLimits_str) # elevation limits (front) # elif paramName == 'pitchLimits': # (pitchMax, pitchMin) = calcPitchLimitsFromDesc(0, gun['pitchLimits']) # pitchLimits_str = '%g..+%g' % (round(degrees(-pitchMin)), round(degrees(-pitchMax))) # tooltip_add_param(self, result, l10n('pitchLimits'), pitchLimits_str) # elevation limits (side) elif paramName == 'pitchLimitsSide': if gun['turretYawLimits'] and abs(degrees(gun['turretYawLimits'][0])) < 89: continue # can't look aside 90 degrees (pitchMax, pitchMin) = calcPitchLimitsFromDesc(pi / 2, gun['pitchLimits']) pitchLimits_str = '%g..+%g' % (round(degrees(-pitchMin)), round(degrees(-pitchMax))) tooltip_add_param(self, result, l10n('pitchLimitsSide'), pitchLimits_str) # elevation limits (rear) elif paramName == 'pitchLimitsRear': if gun['turretYawLimits']: continue # can't look back (pitchMax, pitchMin) = calcPitchLimitsFromDesc(pi, gun['pitchLimits']) pitchLimits_str = '%g..+%g' % (round(degrees(-pitchMin)), round(degrees(-pitchMax))) tooltip_add_param(self, result, l10n('pitchLimitsRear'), pitchLimits_str) # shooting range elif paramName == 'shootingRadius': viewRange, shellRadius, artiRadius = _getRanges(turret, gun, vehicle.nationName, vehicle.type) if vehicle.type == 'SPG': tooltip_add_param(self, result, tooltip_with_units(l10n('shootingRadius'), l10n('(m)')), artiRadius) elif shellRadius < 707: tooltip_add_param(self, result, tooltip_with_units(l10n('shootingRadius'), l10n('(m)')), shellRadius) #reverse max speed elif paramName == 'speedLimits': (speedLimitForward, speedLimitReverse) = veh_descr.physics['speedLimits'] speedLimits_str = str(int(speedLimitForward * 3.6)) + '/' + str(int(speedLimitReverse * 3.6)) tooltip_add_param(self, result, getParameterValue(paramName), speedLimits_str) #turret rotation speed # elif paramName == 'turretRotationSpeed' or paramName == 'gunRotationSpeed': # if not vehicle.hasTurrets: # paramName = 'gunRotationSpeed' # turretRotationSpeed_str = str(int(degrees(veh_descr.turret['rotationSpeed']))) # tooltip_add_param(self, result, tooltip_with_units(i18n.makeString('#menu:tank_params/%s' % paramName).rstrip(), i18n.makeString('#menu:tank_params/gps')), turretRotationSpeed_str) #terrain resistance elif paramName == 'terrainResistance': resistances_arr = [] for key in veh_descr.chassis['terrainResistance']: resistances_arr.append(formatNumber(key)) terrainResistance_str = '/'.join(resistances_arr) tooltip_add_param(self, result, l10n('terrainResistance'), terrainResistance_str) #radioRange # elif paramName == 'radioRange': # radioRange_str = '%s' % int(vehicle.radio.descriptor['distance']) # tooltip_add_param(self, result, replace_p(i18n.makeString('#menu:moduleInfo/params/radioDistance')), radioRange_str) #gravity elif paramName == 'gravity': gravity_str = formatNumber(veh_descr.shot['gravity']) tooltip_add_param(self, result, l10n('gravity'), gravity_str) #inner name, for example - ussr:R100_SU122A elif paramName == 'innerName': tooltip_add_param(self, result, vehicle.name, '') #custom text elif paramName.startswith('TEXT:'): customtext = paramName[5:] tooltip_add_param(self, result, l10n(customtext), '') elif paramInfo is not None and paramName in paramInfo.name: valueStr = str(param_formatter.formatParameter(paramName, paramInfo.value)) tooltip_add_param(self, result, getParameterValue(paramName), valueStr) if vehicle.isInInventory: # optional devices icons, must be in the end if 'optDevicesIcons' in params_list: optDevicesIcons_arr = [] for key in vehicle.optDevices: if key: imgPath = 'img://gui' + key.icon.lstrip('.') else: imgPath = 'img://gui/maps/icons/artefact/empty.png' optDevicesIcons_arr.append('<img src="%s" height="16" width="16">' % imgPath) optDevicesIcons_str = ' '.join(optDevicesIcons_arr) tooltip_add_param(self, result, optDevicesIcons_str, '') # equipment icons, must be in the end if 'equipmentIcons' in params_list: equipmentIcons_arr = [] for key in vehicle.eqs: if key: imgPath = 'img://gui' + key.icon.lstrip('.') else: imgPath = 'img://gui/maps/icons/artefact/empty.png' equipmentIcons_arr.append('<img src="%s" height="16" width="16">' % imgPath) equipmentIcons_str = ' '.join(equipmentIcons_arr) if config.get('tooltips/combineIcons') and optDevicesIcons_str: tmp_list = [] tooltip_add_param(self, tmp_list, equipmentIcons_str, '') result[-1]['data']['name'] += ' ' + tmp_list[0]['data']['name'] else: tooltip_add_param(self, result, equipmentIcons_str, '') # crew roles icons, must be in the end if 'crewRolesIcons' in params_list: imgPath = 'img://../mods/shared_resources/xvm/res/icons/tooltips/roles' crewRolesIcons_arr = [] for tankman_role in vehicle.descriptor.type.crewRoles: crewRolesIcons_arr.append('<img src="%s/%s.png" height="16" width="16">' % (imgPath, tankman_role[0])) crewRolesIcons_str = ''.join(crewRolesIcons_arr) tooltip_add_param(self, result, crewRolesIcons_str, '') if (len(result) > 30) and config.get('tooltips/hideBottomText'): # limitation result = result[:30] elif (len(result) > 29) and not config.get('tooltips/hideBottomText'): # limitation result = result[:29] carousel_tooltips_cache[vehicle.intCD] = result return result except Exception as ex: err(traceback.format_exc()) return base(self)
def construct(self): module = self.module block = [] title = module.userName imgPaddingLeft = 27 imgPaddingTop = 0 txtOffset = 130 - self.leftPadding desc = '' if module.itemTypeName in VEHICLE_COMPONENT_TYPE_NAMES: desc = text_styles.concatStylesWithSpace( text_styles.stats(_ms(TOOLTIPS.level(str(module.level)))), text_styles.standard(_ms(TOOLTIPS.VEHICLE_LEVEL))) imgPaddingLeft = 22 elif module.itemTypeID in GUI_ITEM_TYPE.ARTEFACTS: imgPaddingLeft = 7 imgPaddingTop = 5 txtOffset = 90 - self.leftPadding moduleParams = params_helper.getParameters(module) weightUnits = text_styles.standard(TOOLTIPS.PARAMETER_WEIGHTUNITS) paramName = ModuleTooltipBlockConstructor.WEIGHT_MODULE_PARAM paramValue = params_formatters.formatParameter( paramName, moduleParams[paramName]) if paramName in moduleParams else None if paramValue is not None: desc = text_styles.main( TOOLTIPS.PARAMETER_WEIGHT) + text_styles.credits( paramValue) + weightUnits else: desc = text_styles.standard(desc) overlayPath, overlayPadding, blockPadding = self.__getOverlayData() block.append( formatters.packItemTitleDescBlockData( title=text_styles.highTitle(title), desc=desc, img=module.icon, imgPadding=formatters.packPadding(left=imgPaddingLeft, top=imgPaddingTop), txtGap=-3, txtOffset=txtOffset, padding=blockPadding, overlayPath=overlayPath, overlayPadding=overlayPadding)) if module.itemTypeID == GUI_ITEM_TYPE.GUN: vehicle = self.configuration.vehicle vDescr = vehicle.descriptor if vehicle is not None else None if module.isClipGun(vDescr): block.append( formatters.packImageTextBlockData( title=text_styles.standard( MENU.MODULEINFO_CLIPGUNLABEL), desc='', img=RES_ICONS.MAPS_ICONS_MODULES_MAGAZINEGUNICON, imgPadding=formatters.packPadding(top=3), padding=formatters.packPadding(left=108, top=9))) elif module.itemTypeID == GUI_ITEM_TYPE.CHASSIS: if module.isHydraulicChassis(): block.append( formatters.packImageTextBlockData( title=text_styles.standard( MENU.MODULEINFO_HYDRAULICCHASSISLABEL), desc='', img=RES_ICONS.MAPS_ICONS_MODULES_HYDRAULICCHASSISICON, imgPadding=formatters.packPadding(top=3), padding=formatters.packPadding(left=108, top=9))) return block
def _makeSimpleParamHeaderVO(self, param, isOpen, comparator): data = super(_VehParamsValuesGenerator, self)._makeSimpleParamHeaderVO(param, isOpen, comparator) data['text'] = formatters.formatParameter(param.name, param.value, param.state, self.__headerScheme, _CMP_FORMAT_SETTINGS) return data