Use unit as part of key again will be useful in warp graph

This commit is contained in:
DarkPhoenix
2019-06-27 13:15:22 +03:00
parent 7ef79eaa79
commit fe50372b12
3 changed files with 22 additions and 19 deletions

View File

@@ -117,7 +117,7 @@ class Graph(metaclass=ABCMeta):
YDef = namedtuple('YDef', ('handle', 'unit', 'label', 'eosGraph'))
XDef = namedtuple('XDef', ('handle', 'unit', 'label', 'mainInput'))
Input = namedtuple('Input', ('handle', 'unit', 'label', 'iconID', 'defaultValue', 'defaultRange', 'mainOnly'))
VectorDef = namedtuple('VectorDef', ('lengthHandle', 'angleHandle', 'label'))
VectorDef = namedtuple('VectorDef', ('lengthHandle', 'lengthUnit', 'angleHandle', 'angleUnit', 'label'))
# noinspection PyUnresolvedReferences

View File

@@ -59,11 +59,11 @@ class FitDamageStatsGraph(Graph):
@property
def srcVectorDef(self):
return VectorDef(lengthHandle='atkSpeed', angleHandle='atkAngle', label='Attacker')
return VectorDef(lengthHandle='atkSpeed', lengthUnit='%', angleHandle='atkAngle', angleUnit='degrees', label='Attacker')
@property
def tgtVectorDef(self):
return VectorDef(lengthHandle='tgtSpeed', angleHandle='tgtAngle', label='Target')
return VectorDef(lengthHandle='tgtSpeed', lengthUnit='%', angleHandle='tgtAngle', angleUnit='degrees', label='Target')
@property
def hasTargets(self):

View File

@@ -157,13 +157,13 @@ class GraphControlPanel(wx.Panel):
handledHandles.add(vectorDef.lengthHandle)
handledHandles.add(vectorDef.angleHandle)
try:
storedLength = self._storedConsts[vectorDef.lengthHandle]
storedLength = self._storedConsts[(vectorDef.lengthHandle, vectorDef.lengthUnit)]
except KeyError:
pass
else:
vector.SetLength(storedLength / 100)
try:
storedAngle = self._storedConsts[vectorDef.angleHandle]
storedAngle = self._storedConsts[(vectorDef.angleHandle, vectorDef.angleUnit)]
except KeyError:
pass
else:
@@ -183,9 +183,9 @@ class GraphControlPanel(wx.Panel):
handledHandles.add(inputDef.handle)
fieldSizer = wx.BoxSizer(wx.HORIZONTAL)
if mainInput:
fieldTextBox = RangeBox(self, self._storedRanges.get(inputDef.handle, inputDef.defaultRange))
fieldTextBox = RangeBox(self, self._storedRanges.get((inputDef.handle, inputDef.unit), inputDef.defaultRange))
else:
fieldTextBox = ConstantBox(self, self._storedConsts.get(inputDef.handle, inputDef.defaultValue))
fieldTextBox = ConstantBox(self, self._storedConsts.get((inputDef.handle, inputDef.unit), inputDef.defaultValue))
fieldTextBox.Bind(wx.EVT_TEXT, self.OnFieldChanged)
fieldSizer.Add(fieldTextBox, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5)
fieldIcon = None
@@ -197,7 +197,7 @@ class GraphControlPanel(wx.Panel):
fieldSizer.Add(fieldIcon, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 3)
fieldLabel = wx.StaticText(self, wx.ID_ANY, self._formatLabel(inputDef))
fieldSizer.Add(fieldLabel, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 0)
self._inputs[inputDef.handle] = (fieldTextBox, fieldIcon, fieldLabel)
self._inputs[(inputDef.handle, inputDef.unit)] = (fieldTextBox, fieldIcon, fieldLabel)
self.inputsSizer.Add(fieldSizer, 0, wx.EXPAND | wx.BOTTOM, 5)
addInputField(view.inputMap[selectedX.mainInput], handledHandles, mainInput=True)
@@ -240,20 +240,21 @@ class GraphControlPanel(wx.Panel):
srcVectorDef = view.srcVectorDef
if srcVectorDef is not None:
if not self.srcVector.IsDirectionOnly:
values[srcVectorDef.lengthHandle] = self.srcVector.GetLength() * 100
values[srcVectorDef.angleHandle] = self.srcVector.GetAngle()
values[srcVectorDef.lengthHandle] = (self.srcVector.GetLength() * 100, srcVectorDef.lengthUnit)
values[srcVectorDef.angleHandle] = (self.srcVector.GetAngle(), srcVectorDef.angleUnit)
tgtVectorDef = view.tgtVectorDef
if tgtVectorDef is not None:
if not self.tgtVector.IsDirectionOnly:
values[tgtVectorDef.lengthHandle] = self.tgtVector.GetLength() * 100
values[tgtVectorDef.angleHandle] = self.tgtVector.GetAngle()
values[tgtVectorDef.lengthHandle] = (self.tgtVector.GetLength() * 100, tgtVectorDef.lengthUnit)
values[tgtVectorDef.angleHandle] = (self.tgtVector.GetAngle(), tgtVectorDef.angleUnit)
# Input boxes
for inputHandle, inputData in self._inputs.items():
inputBox = inputData[0]
for k, v in self._inputs.items():
inputHandle, inputUnit = k
inputBox = v[0]
if isinstance(inputBox, RangeBox):
values[inputHandle] = inputBox.GetValueRange()
values[inputHandle] = (inputBox.GetValueRange(), inputUnit)
elif isinstance(inputBox, ConstantBox):
values[inputHandle] = inputBox.GetValueFloat()
values[inputHandle] = (inputBox.GetValueFloat(), inputUnit)
return values
@property
@@ -277,11 +278,13 @@ class GraphControlPanel(wx.Panel):
return '{}, {}'.format(axisDef.label, axisDef.unit)
def _storeCurrentValues(self):
for handle, value in self.getValues().items():
for k, v in self.getValues().items():
handle = k
value, unit = v
if isinstance(value, (tuple, list)):
self._storedRanges[handle] = value
self._storedRanges[(handle, unit)] = value
else:
self._storedConsts[handle] = value
self._storedConsts[(handle, unit)] = value
def _clearStoredValues(self):
self._storedRanges.clear()