Implement damage pattern switching
This commit is contained in:
@@ -3,6 +3,8 @@ from gui.itemStats import ItemStatsDialog
|
|||||||
from gui.patternEditor import DmgPatternEditorDlg
|
from gui.patternEditor import DmgPatternEditorDlg
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
import service
|
||||||
|
import gui.fittingView
|
||||||
|
import wx
|
||||||
|
|
||||||
class DamagePattern(ContextMenu):
|
class DamagePattern(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -13,9 +15,15 @@ class DamagePattern(ContextMenu):
|
|||||||
|
|
||||||
def getText(self, context, selection):
|
def getText(self, context, selection):
|
||||||
sDP = service.DamagePattern.getInstance()
|
sDP = service.DamagePattern.getInstance()
|
||||||
return map(lambda p: p.name, sDP.getDamagePatternList())
|
self.patterns = sDP.getDamagePatternList()
|
||||||
|
self.patterns.sort(key=lambda p: p.name)
|
||||||
|
return map(lambda p: p.name, self.patterns)
|
||||||
|
|
||||||
def activate(self, context, selection, i):
|
def activate(self, context, selection, i):
|
||||||
pass
|
sDP = service.DamagePattern.getInstance()
|
||||||
|
sFit = service.Fit.getInstance()
|
||||||
|
fitID = self.mainFrame.getActiveFit()
|
||||||
|
sFit.setDamagePattern(fitID, self.patterns[i])
|
||||||
|
wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
DamagePattern.register()
|
DamagePattern.register()
|
||||||
|
|||||||
@@ -166,10 +166,13 @@ class ResistancesViewFull(StatsView):
|
|||||||
self.labelEhp.SetToolTip(wx.ToolTip("Effective: %d" % total))
|
self.labelEhp.SetToolTip(wx.ToolTip("Effective: %d" % total))
|
||||||
|
|
||||||
damagePattern = fit.damagePattern if fit is not None else None
|
damagePattern = fit.damagePattern if fit is not None else None
|
||||||
|
total = sum((damagePattern.emAmount, damagePattern.thermalAmount,
|
||||||
|
damagePattern.kineticAmount, damagePattern.explosiveAmount)) if damagePattern is not None else 0
|
||||||
|
|
||||||
for damageType in ("em", "thermal", "kinetic", "explosive"):
|
for damageType in ("em", "thermal", "kinetic", "explosive"):
|
||||||
lbl = getattr(self, "gaugeResistanceDamagepattern%s" % damageType.capitalize())
|
lbl = getattr(self, "gaugeResistanceDamagepattern%s" % damageType.capitalize())
|
||||||
if damagePattern is not None:
|
if damagePattern is not None:
|
||||||
lbl.SetValue(getattr(damagePattern, "%sAmount" % damageType))
|
lbl.SetValue(getattr(damagePattern, "%sAmount" % damageType) / float(total) * 100)
|
||||||
else:
|
else:
|
||||||
lbl.SetValue(0)
|
lbl.SetValue(0)
|
||||||
|
|
||||||
|
|||||||
@@ -254,3 +254,13 @@ class Fit(object):
|
|||||||
|
|
||||||
fit.clear()
|
fit.clear()
|
||||||
fit.calculateModifiedAttributes()
|
fit.calculateModifiedAttributes()
|
||||||
|
|
||||||
|
def setDamagePattern(self, fitID, pattern):
|
||||||
|
if fitID is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
fit = eos.db.getFit(fitID)
|
||||||
|
fit.damagePattern = pattern
|
||||||
|
eos.db.save(fit)
|
||||||
|
fit.clear()
|
||||||
|
fit.calculateModifiedAttributes()
|
||||||
|
|||||||
Reference in New Issue
Block a user