Implement damage pattern switching
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user