From fe68ffacfefdba70bf4e75c9de5f4c8df00c838c Mon Sep 17 00:00:00 2001 From: cncfanatics Date: Mon, 11 Oct 2010 10:11:24 +0200 Subject: [PATCH] Implement damage pattern switching --- gui/builtinContextMenus/damagePattern.py | 12 ++++++++++-- gui/builtinStatsViews/resistancesViewFull.py | 5 ++++- service/fit.py | 10 ++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/gui/builtinContextMenus/damagePattern.py b/gui/builtinContextMenus/damagePattern.py index 5d358d9a8..d2e4cd05f 100755 --- a/gui/builtinContextMenus/damagePattern.py +++ b/gui/builtinContextMenus/damagePattern.py @@ -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() diff --git a/gui/builtinStatsViews/resistancesViewFull.py b/gui/builtinStatsViews/resistancesViewFull.py index 2453c0704..e89cb9562 100644 --- a/gui/builtinStatsViews/resistancesViewFull.py +++ b/gui/builtinStatsViews/resistancesViewFull.py @@ -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) diff --git a/service/fit.py b/service/fit.py index 3533ec4f3..e7a1fa10f 100644 --- a/service/fit.py +++ b/service/fit.py @@ -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()