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:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
30
gui/builtinContextMenus/graphLockRange.py
Normal file
30
gui/builtinContextMenus/graphLockRange.py
Normal 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()
|
||||
@@ -521,6 +521,7 @@ class GraphSettings:
|
||||
'mobileDroneMode': GraphDpsDroneMode.auto,
|
||||
'ignoreDCR': False,
|
||||
'ignoreResists': True,
|
||||
'ignoreLockRange': True,
|
||||
'applyProjected': True}
|
||||
self.settings = SettingsProvider.getInstance().getSettings('graphSettings', defaults)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user