Get mutations to save
This commit is contained in:
@@ -9,12 +9,16 @@ _ValueChanged, EVT_VALUE_CHANGED = wx.lib.newevent.NewEvent()
|
||||
|
||||
|
||||
class AttributeSliderChangeEvent:
|
||||
def __init__(self, old_value, new_value, old_percentage, new_percentage):
|
||||
def __init__(self, obj, old_value, new_value, old_percentage, new_percentage):
|
||||
self.__obj = obj
|
||||
self.__old = old_value
|
||||
self.__new = new_value
|
||||
self.__old_percent = old_percentage
|
||||
self.__new_percent = new_percentage
|
||||
|
||||
def GetObj(self):
|
||||
return self.__obj
|
||||
|
||||
def GetOldValue(self):
|
||||
return self.__old
|
||||
|
||||
@@ -27,6 +31,7 @@ class AttributeSliderChangeEvent:
|
||||
def GetPercentage(self):
|
||||
return self.__new_percent
|
||||
|
||||
Object = property(GetObj)
|
||||
OldValue = property(GetOldValue)
|
||||
Value = property(GetValue)
|
||||
OldPercentage = property(GetOldPercentage)
|
||||
@@ -34,17 +39,17 @@ class AttributeSliderChangeEvent:
|
||||
|
||||
|
||||
class ValueChanged(_ValueChanged, AttributeSliderChangeEvent):
|
||||
def __init__(self, old_value, new_value, old_percentage, new_percentage):
|
||||
def __init__(self, obj, old_value, new_value, old_percentage, new_percentage):
|
||||
_ValueChanged.__init__(self)
|
||||
AttributeSliderChangeEvent.__init__(self, old_value, new_value, old_percentage, new_percentage)
|
||||
AttributeSliderChangeEvent.__init__(self, obj, old_value, new_value, old_percentage, new_percentage)
|
||||
|
||||
|
||||
class AttributeSlider(wx.Panel):
|
||||
# Slider which abstracts users values from internal values (because the built in slider does not deal with floats
|
||||
# and the like), based on http://wxpython-users.wxwidgets.narkive.com/ekgBzA7u/anyone-ever-thought-of-a-floating-point-slider
|
||||
|
||||
def __init__(self, parent, baseValue, minMod, maxMod, inverse=False):
|
||||
wx.Panel.__init__(self, parent)
|
||||
def __init__(self, parent, baseValue, minMod, maxMod, inverse=False, id=-1):
|
||||
wx.Panel.__init__(self, parent, id=id)
|
||||
|
||||
self.parent = parent
|
||||
|
||||
@@ -88,7 +93,7 @@ class AttributeSlider(wx.Panel):
|
||||
self.SetValue(self.ctrl.GetValue())
|
||||
evt.Skip()
|
||||
|
||||
def SetValue(self, value):
|
||||
def SetValue(self, value, post_event=True):
|
||||
# todo: check this against values that might be 2.5x and whatnot
|
||||
mod = value / self.base_value
|
||||
self.ctrl.SetValue(value)
|
||||
@@ -103,7 +108,8 @@ class AttributeSlider(wx.Panel):
|
||||
if self.inverse:
|
||||
slider_percentage *= -1
|
||||
self.slider.SetValue(slider_percentage)
|
||||
wx.PostEvent(self, ValueChanged(None, value, None, slider_percentage))
|
||||
if post_event:
|
||||
wx.PostEvent(self, ValueChanged(self, None, value, None, slider_percentage))
|
||||
|
||||
class TestAttributeSlider(wx.Frame):
|
||||
|
||||
|
||||
@@ -1,17 +1,8 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
|
||||
from eos.saveddata.mode import Mode
|
||||
from eos.saveddata.character import Skill
|
||||
from eos.saveddata.implant import Implant
|
||||
from eos.saveddata.booster import Booster
|
||||
from eos.saveddata.drone import Drone
|
||||
from eos.saveddata.fighter import Fighter
|
||||
from eos.saveddata.module import Module
|
||||
from eos.saveddata.ship import Ship
|
||||
from eos.saveddata.citadel import Citadel
|
||||
from eos.saveddata.fit import Fit
|
||||
from .attributeSlider import AttributeSlider
|
||||
from service.fit import Fit
|
||||
from .attributeSlider import AttributeSlider, EVT_VALUE_CHANGED
|
||||
|
||||
import gui.mainFrame
|
||||
from gui.contextMenu import ContextMenu
|
||||
@@ -31,9 +22,13 @@ class ItemMutator(wx.Panel):
|
||||
self.goodColor = wx.Colour(96, 191, 0)
|
||||
self.badColor = wx.Colour(255, 64, 0)
|
||||
|
||||
self.event_mapping = {}
|
||||
|
||||
for m in sorted(stuff.mutators.values(), key=lambda x: x.attribute.displayName):
|
||||
slider = AttributeSlider(self, m.baseValue, m.minMod, m.maxMod, not m.highIsGood)
|
||||
slider.SetValue(m.value)
|
||||
slider.SetValue(m.value, False)
|
||||
slider.Bind(EVT_VALUE_CHANGED, self.changeMutatedValue)
|
||||
self.event_mapping[slider] = m
|
||||
headingSizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||
|
||||
# create array for the two ranges
|
||||
@@ -102,3 +97,11 @@ class ItemMutator(wx.Panel):
|
||||
|
||||
self.SetSizer(mainSizer)
|
||||
self.Layout()
|
||||
|
||||
def changeMutatedValue(self, evt):
|
||||
m = self.event_mapping[evt.Object]
|
||||
value = evt.Value
|
||||
sFit = Fit.getInstance()
|
||||
|
||||
sFit.changeMutatedValue(m, value)
|
||||
|
||||
|
||||
@@ -517,6 +517,13 @@ class Fit(object):
|
||||
eos.db.commit()
|
||||
self.recalc(fit)
|
||||
|
||||
def changeMutatedValue(self, mutator, value):
|
||||
pyfalog.debug("Changing mutated value for {} / {}: {} => {}".format(mutator.module, mutator.module.mutaplasmid, mutator.value, value))
|
||||
mutator.value = value
|
||||
|
||||
eos.db.commit()
|
||||
#self.recalc(fit)
|
||||
|
||||
def appendModule(self, fitID, itemID):
|
||||
pyfalog.debug("Appending module for fit ({0}) using item: {1}", fitID, itemID)
|
||||
fit = eos.db.getFit(fitID)
|
||||
|
||||
Reference in New Issue
Block a user