From d5cedede4e151448699bd50917eac0ac0f104997 Mon Sep 17 00:00:00 2001 From: cncfanatics Date: Sat, 28 Aug 2010 13:29:20 +0200 Subject: [PATCH] Finish up filling all the labels in the stats pane and the mini stats pane. All except best tank (in mini) and price (in both) is done now. --- eos | 2 +- gui/statsPane.py | 79 +++++++++++++++++++++++++++++++++++++----------- 2 files changed, 62 insertions(+), 19 deletions(-) diff --git a/eos b/eos index 899f6a28e..67fa35bc5 160000 --- a/eos +++ b/eos @@ -1 +1 @@ -Subproject commit 899f6a28e5adffc7acf895ac65560b80c04a0906 +Subproject commit 67fa35bc519449798a06a0f435ed27c11ae30276 diff --git a/gui/statsPane.py b/gui/statsPane.py index fa2a94f11..f6b1d3753 100644 --- a/gui/statsPane.py +++ b/gui/statsPane.py @@ -40,7 +40,6 @@ class StatsPane(wx.Panel): def fitChanged(self, event): cFit = controller.Fit.getInstance() fit = cFit.getFit(event.fitID) - ehp = fit.getEhp() statsMiniFull = (("label%sUsedTurretHardpoints", lambda: fit.getHardpointsUsed(Hardpoint.TURRET), 0), ("label%sTotalTurretHardpoints", lambda: fit.ship.getModifiedItemAttr('turretSlotsLeft'), 0), ("label%sUsedLauncherHardpoints", lambda: fit.getHardpointsUsed(Hardpoint.MISSILE), 0), @@ -52,17 +51,28 @@ class StatsPane(wx.Panel): ("label%sTotalPg", lambda: fit.ship.getModifiedItemAttr("powerOutput"), 1), ("label%sTotalCpu", lambda: fit.ship.getModifiedItemAttr("cpuOutput"), 1), ("label%sVolleyTotal", lambda: fit.weaponVolley, 1), - ("label%sDpsTotal", lambda: fit.weaponDPS + fit.droneDPS, 1), + ("label%sDpsTotal", lambda: fit.totalDPS, 1), ("label%sCapacitorCapacity", lambda: fit.ship.getModifiedItemAttr("capacitorCapacity"), 1), ("label%sCapacitorState", lambda: "Stable at " if fit.capState else "Lasts ", 0), ("label%sCapacitorTime", lambda: ("%.1f%%" if fit.capStable else "%ds") % fit.capState, 0), ("label%sCapacitorRecharge", lambda: fit.capRecharge, 1), - ("label%sCapacitorDischarge", lambda: fit.capUsed, 1)) + ("label%sCapacitorDischarge", lambda: fit.capUsed, 1), + ("label%sSpeed", lambda: fit.ship.getModifiedItemAttr("maxVelocity"), 1), + ("label%sAlignTime", lambda: 0, 1)) stats = (("labelFullUsedDroneBay", lambda: fit.droneBayUsed, 0), ("labelFullUsedDroneBandwidth", lambda: fit.droneBandwidthUsed, 0), ("labelFullTotalDroneBay", lambda: fit.ship.getModifiedItemAttr("droneCapacity"), 0), - ("labelFullTotalDroneBandwidth", lambda: fit.ship.getModifiedItemAttr("droneBandwidth"), 0)) + ("labelFullTotalDroneBandwidth", lambda: fit.ship.getModifiedItemAttr("droneBandwidth"), 0), + ("labelFullDpsWeapon", lambda: fit.weaponDPS, 1), + ("labelFullDpsDrone", lambda: fit.droneDPS, 1), + ("labelTankSustainedShieldPassive", lambda: fit.calculateShieldRecharge(), 1), + ("labelTargets", lambda: fit.maxTargets, 0), + ("labelRange", lambda: fit.ship.getModifiedItemAttr('maxTargetRange') / 1000, 1), + ("labelScanRes", lambda: fit.ship.getModifiedItemAttr('scanResolution'), 0), + ("labelSensorStr", lambda: fit.scanStrength, 0), + ("labelFullCargo", lambda: fit.extraAttributes["capacity"], 1), + ("labelFullSigRadius", lambda: fit.ship.getModifiedItemAttr("signatureRadius"), 0)) for panel in ("Mini", "Full"): for labelName, value, rounding in statsMiniFull: @@ -91,6 +101,38 @@ class StatsPane(wx.Panel): lbl = getattr(self, "labelResistance%s%s" % (tankType.capitalize(), damageType.capitalize())) lbl.SetLabel("%.2f" % resonance) + ehp = fit.ehp if fit is not None else None + for tankType in ("shield", "armor", "hull"): + lbl = getattr(self, "labelResistance%sEhp" % tankType.capitalize()) + if ehp is not None: + lbl.SetLabel("%.0f" % ehp[tankType]) + else: + lbl.SetLabel("0") + + damagePattern = fit.damagePattern if fit is not None else None + for damageType in ("em", "thermal", "kinetic", "explosive"): + lbl = getattr(self, "labelResistanceDamagepattern%s" % damageType.capitalize()) + if damagePattern: + lbl.SetLabel("%.2f" % getattr(damagePattern, "%sAmount" % damageType)) + else: + lbl.SetLabel("0.00") + + + for stability in ("reinforced", "sustained"): + if stability == "reinforced" and fit != None: + tank = fit.sustainableTank + elif stability == "sustained" and fit != None: + tank = fit.extraAttributes + else: + tank = None + + for name in ("shield", "armor", "hull"): + lbl = getattr(self, "labelTank%s%sActive" % (stability.capitalize(), name.capitalize())) + if tank is not None: + lbl.SetLabel("%.1f" % tank["%sRepair" % name]) + else: + lbl.SetLabel("0.0") + self.Layout() event.Skip() @@ -118,7 +160,7 @@ class StatsPane(wx.Panel): self.pickerSizer.Add(self.fullPanel, 1, wx.EXPAND) self.miniSize = wx.Size() - self.miniSize.SetWidth(100) + self.miniSize.SetWidth(120) self.miniPanel = wx.Panel(self) self.miniPanel.Hide() self.miniPanel.SetMinSize(self.miniSize) @@ -201,7 +243,7 @@ class StatsPane(wx.Panel): stats = wx.BoxSizer(wx.VERTICAL) absolute = wx.BoxSizer(wx.HORIZONTAL) - stats.Add(absolute, 0, wx.ALIGN_CENTER) + stats.Add(absolute, 0, wx.ALIGN_RIGHT if panel == "full" else wx.ALIGN_CENTER) if panel == "full": b = wx.BoxSizer(wx.HORIZONTAL) @@ -213,18 +255,15 @@ class StatsPane(wx.Panel): else: main.Add(stats, 0, wx.ALIGN_CENTER) - - - lbl = wx.StaticText(parent, wx.ID_ANY, "0") setattr(self, "label%sUsed%s" % (panel.capitalize(), capitalizedType), lbl) - absolute.Add(lbl, 0, wx.ALIGN_CENTER) + absolute.Add(lbl, 0, wx.ALIGN_LEFT) - absolute.Add(wx.StaticText(parent, wx.ID_ANY, "/"), 0, wx.ALIGN_CENTER) + absolute.Add(wx.StaticText(parent, wx.ID_ANY, "/"), 0, wx.ALIGN_LEFT) lbl = wx.StaticText(parent, wx.ID_ANY, "0") setattr(self, "label%sTotal%s" % (panel.capitalize(), capitalizedType), lbl) - absolute.Add(lbl, 0, wx.ALIGN_CENTER) + absolute.Add(lbl, 0, wx.ALIGN_LEFT) gauge = wx.Gauge(parent, wx.ID_ANY, 100) gauge.SetMinSize((80, 20)) @@ -285,7 +324,7 @@ class StatsPane(wx.Panel): lbl = wx.StaticText(self.fullPanel, wx.ID_ANY, "0" if tankType != "damagePattern" else "") - setattr(self, "labelResistance%sEhp" % tankType, lbl) + setattr(self, "labelResistance%sEhp" % tankType.capitalize(), lbl) sizerResistances.Add(lbl, 0, wx.ALIGN_CENTER) @@ -313,6 +352,10 @@ class StatsPane(wx.Panel): for stability in ("reinforced", "sustained"): sizerTankStats.Add(bitmapLoader.getStaticBitmap("regen%s_big" % stability.capitalize(), self.fullPanel, "icons"), 0, wx.ALIGN_CENTER) for tankType in ("shieldPassive", "shieldActive", "armorActive", "hullActive"): + if stability == "reinforced" and tankType == "shieldPassive": + sizerTankStats.Add(wx.StaticText(self.fullPanel, wx.ID_ANY, "")) + continue + tankTypeCap = tankType[0].capitalize() + tankType[1:] lbl = wx.StaticText(self.fullPanel, wx.ID_ANY, "0.0") setattr(self, "labelTank%s%s" % (stability.capitalize(), tankTypeCap), lbl) @@ -571,11 +614,11 @@ class StatsPane(wx.Panel): gridMisc.Add(box, 0, wx.ALIGN_LEFT) lbl = wx.StaticText(self.fullPanel, wx.ID_ANY, "0") - setattr(self, "label%s" % labelShort, lbl) + setattr(self, "labelFull%s" % labelShort, lbl) box.Add(lbl, 0, wx.ALIGN_LEFT) lblUnit = wx.StaticText(self.fullPanel, wx.ID_ANY, " %s" % unit) - setattr(self, "labelUnit%s" % labelShort, lblUnit) + setattr(self, "labelFullUnit%s" % labelShort, lblUnit) box.Add(lblUnit, 0, wx.ALIGN_LEFT) @@ -584,7 +627,7 @@ class StatsPane(wx.Panel): labelManeuverability.SetFont(boldFont) self.minSizerBase.Add(labelManeuverability, 0, wx.ALIGN_CENTER) - labels = (("Speed", "Speed", "m/s"), + labels = (("Vel", "Speed", "m/s"), ("Align", "AlignTime", "s")) for header, labelShort, unit in labels: @@ -597,11 +640,11 @@ class StatsPane(wx.Panel): sizer.Add(box, 0, wx.ALIGN_LEFT) lbl = wx.StaticText(self.miniPanel, wx.ID_ANY, "0") - setattr(self, "label%s" % labelShort, lbl) + setattr(self, "labelMini%s" % labelShort, lbl) box.Add(lbl, 0, wx.ALIGN_LEFT) lblUnit = wx.StaticText(self.miniPanel, wx.ID_ANY, " %s" % unit) - setattr(self, "labelUnit%s" % labelShort, lblUnit) + setattr(self, "labelMiniUnit%s" % labelShort, lblUnit) box.Add(lblUnit, 0, wx.ALIGN_LEFT) self.minSizerBase.Add(wx.StaticLine(parent, wx.ID_ANY, style=wx.HORIZONTAL), 0, wx.EXPAND)