| 28 | |
| 29 | |
| 30 | class FitEwarStatsGraph(FitGraph): |
| 31 | # UI stuff |
| 32 | internalName = 'ewarStatsGraph' |
| 33 | name = _t('Electronic Warfare Stats') |
| 34 | xDefs = [XDef(handle='distance', unit='km', label=_t('Distance'), mainInput=('distance', 'km'))] |
| 35 | yDefs = [ |
| 36 | YDef(handle='neutStr', unit=None, label=_t('Cap neutralized per second'), selectorLabel=_t('Neuts: cap per second')), |
| 37 | YDef(handle='webStr', unit='%', label=_t('Speed reduction'), selectorLabel=_t('Webs: speed reduction')), |
| 38 | YDef(handle='ecmStrMax', unit=None, label=_t('Combined ECM strength'), selectorLabel=_t('ECM: combined strength')), |
| 39 | YDef(handle='dampStrLockRange', unit='%', label=_t('Lock range reduction'), selectorLabel=_t('Damps: lock range reduction')), |
| 40 | YDef(handle='tdStrOptimal', unit='%', label=_t('Turret optimal range reduction'), selectorLabel=_t('TDs: turret optimal range reduction')), |
| 41 | YDef(handle='gdStrRange', unit='%', label=_t('Missile flight range reduction'), selectorLabel=_t('GDs: missile flight range reduction')), |
| 42 | YDef(handle='tpStr', unit='%', label=_t('Signature radius increase'), selectorLabel=_t('TPs: signature radius increase'))] |
| 43 | inputs = [ |
| 44 | Input(handle='distance', unit='km', label=_t('Distance'), iconID=1391, defaultValue=None, defaultRange=(0, 100)), |
| 45 | Input(handle='resist', unit='%', label=_t('Target resistance'), iconID=1393, defaultValue=0, defaultRange=(0, 100))] |
| 46 | |
| 47 | # Calculation stuff |
| 48 | _normalizers = { |
| 49 | ('distance', 'km'): lambda v, src, tgt: None if v is None else v * 1000, |
| 50 | ('resist', '%'): lambda v, src, tgt: None if v is None else v / 100} |
| 51 | _limiters = {'resist': lambda src, tgt: (0, 1)} |
| 52 | _getters = { |
| 53 | ('distance', 'neutStr'): Distance2NeutingStrGetter, |
| 54 | ('distance', 'webStr'): Distance2WebbingStrGetter, |
| 55 | ('distance', 'ecmStrMax'): Distance2EcmStrMaxGetter, |
| 56 | ('distance', 'dampStrLockRange'): Distance2DampStrLockRangeGetter, |
| 57 | ('distance', 'tdStrOptimal'): Distance2TdStrOptimalGetter, |
| 58 | ('distance', 'gdStrRange'): Distance2GdStrRangeGetter, |
| 59 | ('distance', 'tpStr'): Distance2TpStrGetter} |
| 60 | _denormalizers = {('distance', 'km'): lambda v, src, tgt: None if v is None else v / 1000} |