Implement damage pattern switching

This commit is contained in:
cncfanatics
2010-10-11 10:11:24 +02:00
parent 85a8e561ae
commit fe68ffacfe
3 changed files with 24 additions and 3 deletions

View File

@@ -3,6 +3,8 @@ from gui.itemStats import ItemStatsDialog
from gui.patternEditor import DmgPatternEditorDlg
import gui.mainFrame
import service
import gui.fittingView
import wx
class DamagePattern(ContextMenu):
def __init__(self):
@@ -13,9 +15,15 @@ class DamagePattern(ContextMenu):
def getText(self, context, selection):
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):
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()

View File

@@ -166,10 +166,13 @@ class ResistancesViewFull(StatsView):
self.labelEhp.SetToolTip(wx.ToolTip("Effective: %d" % total))
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"):
lbl = getattr(self, "gaugeResistanceDamagepattern%s" % damageType.capitalize())
if damagePattern is not None:
lbl.SetValue(getattr(damagePattern, "%sAmount" % damageType))
lbl.SetValue(getattr(damagePattern, "%sAmount" % damageType) / float(total) * 100)
else:
lbl.SetValue(0)

View File

@@ -254,3 +254,13 @@ class Fit(object):
fit.clear()
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()