Added requested feature from ticket #99

This commit is contained in:
HomeWorld
2010-10-12 09:30:18 +03:00
parent 37c34a32f3
commit 1cd2202db0
2 changed files with 43 additions and 5 deletions

View File

@@ -9,6 +9,7 @@ class DamagePattern(ContextMenu):
def __init__(self): def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def display(self, context, selection): def display(self, context, selection):
return context in ("resistancesViewFull",) and self.mainFrame.getActiveFit() is not None return context in ("resistancesViewFull",) and self.mainFrame.getActiveFit() is not None
@@ -24,6 +25,7 @@ class DamagePattern(ContextMenu):
sFit = service.Fit.getInstance() sFit = service.Fit.getInstance()
fitID = self.mainFrame.getActiveFit() fitID = self.mainFrame.getActiveFit()
sFit.setDamagePattern(fitID, self.patterns[i]) sFit.setDamagePattern(fitID, self.patterns[i])
setattr(self.mainFrame,"_activeDmgPattern",self.patterns[i])
wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=fitID)) wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=fitID))
def getBitmap(self, context, selection): def getBitmap(self, context, selection):

View File

@@ -23,6 +23,8 @@ from gui import builtinStatsViews
from gui import bitmapLoader from gui import bitmapLoader
from gui import pygauge as PG from gui import pygauge as PG
from util import formatAmount from util import formatAmount
import service
import gui.mainFrame
class ResistancesViewFull(StatsView): class ResistancesViewFull(StatsView):
name = "resistancesViewFull" name = "resistancesViewFull"
@@ -30,6 +32,9 @@ class ResistancesViewFull(StatsView):
StatsView.__init__(self) StatsView.__init__(self)
self.parent = parent self.parent = parent
self._cachedValues = [] self._cachedValues = []
self._toggleEHP = 1
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def getHeaderText(self, fit): def getHeaderText(self, fit):
return "Resistances" return "Resistances"
@@ -47,9 +52,9 @@ class ResistancesViewFull(StatsView):
headerContentSizer = wx.BoxSizer(wx.HORIZONTAL) headerContentSizer = wx.BoxSizer(wx.HORIZONTAL)
hsizer = headerPanel.GetSizer() hsizer = headerPanel.GetSizer()
hsizer.Add(headerContentSizer,0,0,0) hsizer.Add(headerContentSizer,0,0,0)
stEff = wx.StaticText(headerPanel, wx.ID_ANY, "( Effective HP: ") self.stEff = wx.StaticText(headerPanel, wx.ID_ANY, "( Effective HP: ")
headerContentSizer.Add(stEff) headerContentSizer.Add(self.stEff)
headerPanel.GetParent().AddToggleItem(stEff) headerPanel.GetParent().AddToggleItem(self.stEff)
self.labelEhp = wx.StaticText(headerPanel, wx.ID_ANY, "0") self.labelEhp = wx.StaticText(headerPanel, wx.ID_ANY, "0")
headerContentSizer.Add(self.labelEhp, 0) headerContentSizer.Add(self.labelEhp, 0)
@@ -76,8 +81,13 @@ class ResistancesViewFull(StatsView):
for damageType in ("em", "thermal", "kinetic", "explosive"): for damageType in ("em", "thermal", "kinetic", "explosive"):
sizerResistances.Add(bitmapLoader.getStaticBitmap("%s_big" % damageType, contentPanel, "icons"), wx.GBPosition( row, col ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER) sizerResistances.Add(bitmapLoader.getStaticBitmap("%s_big" % damageType, contentPanel, "icons"), wx.GBPosition( row, col ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER)
col+=1 col+=1
self.stEHPs = wx.StaticText(contentPanel, wx.ID_ANY, "EHP")
self.stEHPs.SetToolTip(wx.ToolTip("Click to toggle between effective HP and raw HP"))
sizerResistances.Add(wx.StaticText(contentPanel, wx.ID_ANY, "EHP"), wx.GBPosition( row, col ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER) self.stEHPs.Bind(wx.EVT_LEFT_UP, self.toggleEHP)
sizerResistances.Add(self.stEHPs, wx.GBPosition( row, col ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER)
col=0 col=0
row+=1 row+=1
@@ -131,10 +141,30 @@ class ResistancesViewFull(StatsView):
row+=1 row+=1
col=0 col=0
def toggleEHP(self,event):
self._toggleEHP *= -1
self.refreshPanel(self._currentFit)
def refreshPanel(self, fit): def refreshPanel(self, fit):
#If we did anything intresting, we'd update our labels to reflect the new fit's stats here #If we did anything intresting, we'd update our labels to reflect the new fit's stats here
self._currentFit = fit
sDP = service.DamagePattern.getInstance()
sFit = service.Fit.getInstance()
fitID = self.mainFrame.getActiveFit()
if self._toggleEHP == 1:
activeDmgPattern = getattr(self.mainFrame,"_activeDmgPattern", sDP.getDamagePattern("Uniform"))
sFit.setDamagePattern(fitID, activeDmgPattern)
self.stEHPs.SetLabel("EHP")
else:
sFit.setDamagePattern(fitID, None)
self.stEHPs.SetLabel("RAW HP")
self.stEHPs.SetToolTip(wx.ToolTip("Click to toggle between effective HP and raw HP"))
for tankType in ("shield", "armor", "hull"): for tankType in ("shield", "armor", "hull"):
for damageType in ("em", "thermal", "kinetic", "explosive"): for damageType in ("em", "thermal", "kinetic", "explosive"):
@@ -163,7 +193,13 @@ class ResistancesViewFull(StatsView):
self.labelEhp.SetLabel("%s" % formatAmount(total, 3, 0, 9)) self.labelEhp.SetLabel("%s" % formatAmount(total, 3, 0, 9))
self.labelEhp.SetToolTip(wx.ToolTip("Effective: %d" % total)) if self._toggleEHP == 1:
self.stEff.SetLabel("( Effective HP: ")
self.labelEhp.SetToolTip(wx.ToolTip("Effective: %d HP" % total))
else:
self.stEff.SetLabel("( Raw HP: ")
self.labelEhp.SetToolTip(wx.ToolTip("Raw: %d HP" % 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, total = sum((damagePattern.emAmount, damagePattern.thermalAmount,