Get mutations to save

This commit is contained in:
blitzmann
2018-06-11 23:44:34 -04:00
parent 994521f654
commit bceaa0d1d5
3 changed files with 35 additions and 19 deletions

View File

@@ -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):

View File

@@ -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)

View File

@@ -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)