Merge branch 'master' into ammo_graph
This commit is contained in:
@@ -322,20 +322,12 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
maxRange = self.getModifiedItemAttr(attr, None)
|
||||
if maxRange is not None:
|
||||
return maxRange
|
||||
if self.charge is not None:
|
||||
try:
|
||||
chargeName = self.charge.group.name
|
||||
except AttributeError:
|
||||
pass
|
||||
else:
|
||||
if chargeName in ("Scanner Probe", "Survey Probe"):
|
||||
return None
|
||||
missileMaxRangeData = self.missileMaxRangeData
|
||||
if missileMaxRangeData is None:
|
||||
return None
|
||||
lowerRange, higherRange, higherChance = missileMaxRangeData
|
||||
maxRange = lowerRange * (1 - higherChance) + higherRange * higherChance
|
||||
return maxRange
|
||||
missileMaxRangeData = self.missileMaxRangeData
|
||||
if missileMaxRangeData is None:
|
||||
return None
|
||||
lowerRange, higherRange, higherChance = missileMaxRangeData
|
||||
maxRange = lowerRange * (1 - higherChance) + higherRange * higherChance
|
||||
return maxRange
|
||||
|
||||
@property
|
||||
def missileMaxRangeData(self):
|
||||
@@ -361,7 +353,11 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
return maxRange
|
||||
|
||||
maxVelocity = self.getModifiedChargeAttr("maxVelocity")
|
||||
flightTime = floatUnerr(self.getModifiedChargeAttr("explosionDelay") / 1000.0)
|
||||
if not maxVelocity:
|
||||
return None
|
||||
shipRadius = self.owner.ship.getModifiedItemAttr("radius")
|
||||
# Flight time has bonus based on ship radius, see https://github.com/pyfa-org/Pyfa/issues/2083
|
||||
flightTime = floatUnerr(self.getModifiedChargeAttr("explosionDelay") / 1000 + shipRadius / maxVelocity)
|
||||
mass = self.getModifiedChargeAttr("mass")
|
||||
agility = self.getModifiedChargeAttr("agility")
|
||||
lowerTime = math.floor(flightTime)
|
||||
@@ -375,7 +371,6 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
lowerRange = min(lowerRange, rangeLimit)
|
||||
higherRange = min(higherRange, rangeLimit)
|
||||
# Make range center-to-surface, as missiles spawn in the center of the ship
|
||||
shipRadius = self.owner.ship.getModifiedItemAttr("radius")
|
||||
lowerRange = max(0, lowerRange - shipRadius)
|
||||
higherRange = max(0, higherRange - shipRadius)
|
||||
higherChance = flightTime - lowerTime
|
||||
|
||||
@@ -24,7 +24,7 @@ from eos.saveddata.mode import Mode
|
||||
from service.attribute import Attribute
|
||||
from gui.viewColumn import ViewColumn
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.utils.numberFormatter import formatAmount
|
||||
from gui.utils.numberFormatter import formatAmount, roundToPrec
|
||||
|
||||
|
||||
class MaxRange(ViewColumn):
|
||||
@@ -77,7 +77,21 @@ class MaxRange(ViewColumn):
|
||||
return ("displayName", bool, False), ("showIcon", bool, True)
|
||||
|
||||
def getToolTip(self, mod):
|
||||
return "Optimal + Falloff"
|
||||
lines = []
|
||||
missileRangeData = mod.missileMaxRangeData if hasattr(mod, "missileMaxRangeData") else None
|
||||
if missileRangeData is not None:
|
||||
lines.append('Missile flight range')
|
||||
lowerRange, higherRange, higherChance = missileRangeData
|
||||
if roundToPrec(higherChance, 3) not in (0, 1):
|
||||
lines.append('{}% chance to fly {}'.format(
|
||||
formatAmount((1 - higherChance) * 100, prec=3, lowest=0, highest=0),
|
||||
formatAmount(lowerRange, prec=3, lowest=0, highest=3, unitName='m')))
|
||||
lines.append('{}% chance to fly {}'.format(
|
||||
formatAmount(higherChance * 100, prec=3, lowest=0, highest=0),
|
||||
formatAmount(higherRange, prec=3, lowest=0, highest=3, unitName='m')))
|
||||
else:
|
||||
lines.append("Optimal + Falloff")
|
||||
return '\n'.join(lines)
|
||||
|
||||
|
||||
MaxRange.register()
|
||||
|
||||
@@ -74,7 +74,7 @@ class CopySelectDialog(wx.Dialog):
|
||||
continue
|
||||
defaultFormatOptions[formatId] = {opt[0]: opt[3] for opt in formatOptions}
|
||||
|
||||
self.settings = SettingsProvider.getInstance().getSettings("pyfaExport", {"format": 0, "options": defaultFormatOptions})
|
||||
self.settings = SettingsProvider.getInstance().getSettings("pyfaExport", {"format": self.copyFormatEft, "options": defaultFormatOptions})
|
||||
# Options used to be stored as int (EFT export options only),
|
||||
# overwrite them with new format when needed
|
||||
if isinstance(self.settings["options"], int):
|
||||
@@ -83,6 +83,7 @@ class CopySelectDialog(wx.Dialog):
|
||||
self.options = {}
|
||||
|
||||
initialized = False
|
||||
self.copyFormat = self.copyFormatEft
|
||||
for formatName, formatData in self.copyFormats.items():
|
||||
formatId, formatOptions = formatData
|
||||
if not initialized:
|
||||
|
||||
Reference in New Issue
Block a user