Add context menu which controls if graphs ignore drone control range or not, and add support for this option to RR graph

This commit is contained in:
DarkPhoenix
2019-09-27 18:40:33 +03:00
parent a43f9930de
commit 865978fcc1
4 changed files with 48 additions and 11 deletions

View File

@@ -28,21 +28,26 @@ def getApplicationPerKey(src, distance):
for mod in src.item.activeModulesIter():
if not mod.isRemoteRepping():
continue
applicationMap[mod] = 1 if distance is None else calculateRangeFactor(
srcOptimalRange=mod.maxRange or 0,
srcFalloffRange=mod.falloff or 0,
distance=distance)
if distance is None:
applicationMap[mod] = 1
elif not GraphSettings.getInstance().get('ignoreLockRange') and distance > src.item.maxTargetRange:
applicationMap[mod] = 0
else:
applicationMap[mod] = calculateRangeFactor(
srcOptimalRange=mod.maxRange or 0,
srcFalloffRange=mod.falloff or 0,
distance=distance)
for drone in src.item.activeDronesIter():
if not drone.isRemoteRepping():
continue
if (
distance is None or
GraphSettings.getInstance().get('ignoreDCR') or
distance <= src.item.extraAttributes['droneControlRange']
):
if distance is None:
applicationMap[drone] = 1
else:
elif not GraphSettings.getInstance().get('ignoreDCR') and distance > src.item.extraAttributes['droneControlRange']:
applicationMap[drone] = 0
elif not GraphSettings.getInstance().get('ignoreLockRange') and distance > src.item.maxTargetRange:
applicationMap[drone] = 0
else:
applicationMap[drone] = 1
# Ensure consistent results - round off a little to avoid float errors
for k, v in applicationMap.items():
applicationMap[k] = floatUnerr(v)

View File

@@ -44,8 +44,9 @@ from gui.builtinContextMenus import damagePatternChange
from gui.builtinContextMenus import factorReload
from gui.builtinContextMenus.targetProfile import switcher
# Graph extra options
from gui.builtinContextMenus import graphDmgIgnoreResists
from gui.builtinContextMenus import graphDmgApplyProjected
from gui.builtinContextMenus import graphDmgIgnoreResists
from gui.builtinContextMenus import graphLockRange
from gui.builtinContextMenus import graphDroneControlRange
from gui.builtinContextMenus import graphDmgDroneMode
# Additions panel menus

View File

@@ -0,0 +1,30 @@
# noinspection PyPackageRequirements
import wx
import gui.globalEvents as GE
import gui.mainFrame
from gui.contextMenu import ContextMenuUnconditional
from service.settings import GraphSettings
class GraphIgnoreLockRangeMenu(ContextMenuUnconditional):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.settings = GraphSettings.getInstance()
def display(self, callingWindow, srcContext):
return srcContext in ('dmgStatsGraph', 'remoteRepsGraph', 'ewarStatsGraph')
def getText(self, callingWindow, itmContext):
return 'Ignore Lock Range'
def activate(self, callingWindow, fullContext, i):
self.settings.set('ignoreLockRange', not self.settings.get('ignoreLockRange'))
wx.PostEvent(self.mainFrame, GE.GraphOptionChanged())
def isChecked(self, i):
return self.settings.get('ignoreLockRange')
GraphIgnoreLockRangeMenu.register()

View File

@@ -521,6 +521,7 @@ class GraphSettings:
'mobileDroneMode': GraphDpsDroneMode.auto,
'ignoreDCR': False,
'ignoreResists': True,
'ignoreLockRange': True,
'applyProjected': True}
self.settings = SettingsProvider.getInstance().getSettings('graphSettings', defaults)