Skip to content

Commit dbb61a8

Browse files
committed
Change presentation of mining info
1 parent b12adca commit dbb61a8

File tree

5 files changed

+68
-58
lines changed

5 files changed

+68
-58
lines changed

eos/saveddata/drone.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def build(self):
8282
self.__baseVolley = None
8383
self.__baseRRAmount = None
8484
self.__miningYield = None
85-
self.__miningWaste = None
85+
self.__miningDrain = None
8686
self.__ehp = None
8787
self.__itemModifiedAttributes = ModifiedAttributeDict()
8888
self.__itemModifiedAttributes.original = self._item.attributes
@@ -240,15 +240,15 @@ def getMiningYPS(self, ignoreState=False):
240240
if not ignoreState and self.amountActive <= 0:
241241
return 0
242242
if self.__miningYield is None:
243-
self.__miningYield, self.__miningWaste = self.__calculateMining()
243+
self.__miningYield, self.__miningDrain = self.__calculateMining()
244244
return self.__miningYield
245245

246-
def getMiningWPS(self, ignoreState=False):
246+
def getMiningDPS(self, ignoreState=False):
247247
if not ignoreState and self.amountActive <= 0:
248248
return 0
249-
if self.__miningWaste is None:
250-
self.__miningYield, self.__miningWaste = self.__calculateMining()
251-
return self.__miningWaste
249+
if self.__miningDrain is None:
250+
self.__miningYield, self.__miningDrain = self.__calculateMining()
251+
return self.__miningDrain
252252

253253
def __calculateMining(self):
254254
if self.mines is True:
@@ -262,8 +262,8 @@ def __calculateMining(self):
262262
yps = yield_ / (cycleTime / 1000.0)
263263
wasteChance = self.getModifiedItemAttr("miningWasteProbability")
264264
wasteMult = self.getModifiedItemAttr("miningWastedVolumeMultiplier")
265-
wps = yps * max(0, min(1, wasteChance / 100)) * wasteMult
266-
return yps, wps
265+
dps = yps * (1 + max(0, min(1, wasteChance / 100)) * wasteMult)
266+
return yps, dps
267267
else:
268268
return 0, 0
269269

@@ -335,7 +335,7 @@ def clear(self):
335335
self.__baseVolley = None
336336
self.__baseRRAmount = None
337337
self.__miningYield = None
338-
self.__miningWaste = None
338+
self.__miningDrain = None
339339
self.__ehp = None
340340
self.itemModifiedAttributes.clear()
341341
self.chargeModifiedAttributes.clear()

eos/saveddata/fit.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ def build(self):
140140
self.__remoteRepMap = {}
141141
self.__minerYield = None
142142
self.__droneYield = None
143-
self.__minerWaste = None
144-
self.__droneWaste = None
143+
self.__minerDrain = None
144+
self.__droneDrain = None
145145
self.__droneDps = None
146146
self.__droneVolley = None
147147
self.__sustainableTank = None
@@ -378,11 +378,11 @@ def minerYield(self):
378378
return self.__minerYield
379379

380380
@property
381-
def minerWaste(self):
382-
if self.__minerWaste is None:
381+
def minerDrain(self):
382+
if self.__minerDrain is None:
383383
self.calculatemining()
384384

385-
return self.__minerWaste
385+
return self.__minerDrain
386386

387387
@property
388388
def droneYield(self):
@@ -392,19 +392,19 @@ def droneYield(self):
392392
return self.__droneYield
393393

394394
@property
395-
def droneWaste(self):
396-
if self.__droneWaste is None:
395+
def droneDrain(self):
396+
if self.__droneDrain is None:
397397
self.calculatemining()
398398

399-
return self.__droneWaste
399+
return self.__droneDrain
400400

401401
@property
402402
def totalYield(self):
403403
return self.droneYield + self.minerYield
404404

405405
@property
406-
def totalWaste(self):
407-
return self.droneWaste + self.minerWaste
406+
def totalDrain(self):
407+
return self.droneDrain + self.minerDrain
408408

409409
@property
410410
def maxTargets(self):
@@ -518,8 +518,8 @@ def clear(self, projected=False, command=False):
518518
self.__remoteRepMap = {}
519519
self.__minerYield = None
520520
self.__droneYield = None
521-
self.__minerWaste = None
522-
self.__droneWaste = None
521+
self.__minerDrain = None
522+
self.__droneDrain = None
523523
self.__effectiveSustainableTank = None
524524
self.__sustainableTank = None
525525
self.__droneDps = None
@@ -1734,21 +1734,21 @@ def calculateLockTime(self, radius):
17341734

17351735
def calculatemining(self):
17361736
minerYield = 0
1737-
minerWaste = 0
1737+
minerDrain = 0
17381738
droneYield = 0
1739-
droneWaste = 0
1739+
droneDrain = 0
17401740

17411741
for mod in self.modules:
17421742
minerYield += mod.getMiningYPS()
1743-
minerWaste += mod.getMiningWPS()
1743+
minerDrain += mod.getMiningDPS()
17441744
for drone in self.drones:
17451745
droneYield += drone.getMiningYPS()
1746-
droneWaste += drone.getMiningWPS()
1746+
droneDrain += drone.getMiningDPS()
17471747

17481748
self.__minerYield = minerYield
1749-
self.__minerWaste = minerWaste
1749+
self.__minerDrain = minerDrain
17501750
self.__droneYield = droneYield
1751-
self.__droneWaste = droneWaste
1751+
self.__droneDrain = droneDrain
17521752

17531753
def calculateWeaponDmgStats(self, spoolOptions):
17541754
weaponVolley = DmgTypes.default()

eos/saveddata/module.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def build(self):
127127
self.__baseVolley = None
128128
self.__baseRRAmount = None
129129
self.__miningYield = None
130-
self.__miningWaste = None
130+
self.__miningDrain = None
131131
self.__reloadTime = None
132132
self.__reloadForce = None
133133
self.__chargeCycles = None
@@ -418,17 +418,17 @@ def getMiningYPS(self, ignoreState=False):
418418
if not ignoreState and self.state < FittingModuleState.ACTIVE:
419419
return 0
420420
if self.__miningYield is None:
421-
self.__miningYield, self.__miningWaste = self.__calculateMining()
421+
self.__miningYield, self.__miningDrain = self.__calculateMining()
422422
return self.__miningYield
423423

424-
def getMiningWPS(self, ignoreState=False):
424+
def getMiningDPS(self, ignoreState=False):
425425
if self.isEmpty:
426426
return 0
427427
if not ignoreState and self.state < FittingModuleState.ACTIVE:
428428
return 0
429-
if self.__miningWaste is None:
430-
self.__miningYield, self.__miningWaste = self.__calculateMining()
431-
return self.__miningWaste
429+
if self.__miningDrain is None:
430+
self.__miningYield, self.__miningDrain = self.__calculateMining()
431+
return self.__miningDrain
432432

433433
def __calculateMining(self):
434434
yield_ = self.getModifiedItemAttr("miningAmount")
@@ -443,11 +443,11 @@ def __calculateMining(self):
443443
yps = 0
444444
wasteChance = self.getModifiedItemAttr("miningWasteProbability")
445445
wasteMult = self.getModifiedItemAttr("miningWastedVolumeMultiplier")
446-
wps = yps * max(0, min(1, wasteChance / 100)) * wasteMult
446+
dps = yps * (1 + max(0, min(1, wasteChance / 100)) * wasteMult)
447447
critChance = self.getModifiedItemAttr("miningCritChance")
448448
critBonusMult = self.getModifiedItemAttr("miningCritBonusYield")
449449
yps += yps * critChance * critBonusMult
450-
return yps, wps
450+
return yps, dps
451451

452452
def isDealingDamage(self, ignoreState=False):
453453
volleyParams = self.getVolleyParameters(ignoreState=ignoreState)
@@ -897,7 +897,7 @@ def clear(self):
897897
self.__baseVolley = None
898898
self.__baseRRAmount = None
899899
self.__miningYield = None
900-
self.__miningWaste = None
900+
self.__miningDrain = None
901901
self.__reloadTime = None
902902
self.__reloadForce = None
903903
self.__chargeCycles = None

gui/builtinStatsViews/miningyieldViewFull.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -130,33 +130,36 @@ def switchToFirepowerView(self, event):
130130
def refreshPanel(self, fit):
131131
# If we did anything intresting, we'd update our labels to reflect the new fit's stats here
132132

133-
stats = (("labelFullminingyieldMiner", lambda: fit.minerYield, lambda: fit.minerWaste, 3, 0, 0, "{}{} m\u00B3/s", None),
134-
("labelFullminingyieldDrone", lambda: fit.droneYield, lambda: fit.droneWaste, 3, 0, 0, "{}{} m\u00B3/s", None),
135-
("labelFullminingyieldTotal", lambda: fit.totalYield, lambda: fit.totalWaste, 3, 0, 0, "{}{} m\u00B3/s", None))
133+
stats = (("labelFullminingyieldMiner", lambda: fit.minerYield, lambda: fit.minerDrain, 3, 0, 0, "{} m\u00B3/s", None),
134+
("labelFullminingyieldDrone", lambda: fit.droneYield, lambda: fit.droneDrain, 3, 0, 0, "{} m\u00B3/s", None),
135+
("labelFullminingyieldTotal", lambda: fit.totalYield, lambda: fit.totalDrain, 3, 0, 0, "{} m\u00B3/s", None))
136136

137137
def processValue(value):
138138
value = value() if fit is not None else 0
139139
value = value if value is not None else 0
140140
return value
141141

142142
counter = 0
143-
for labelName, yieldValue, wasteValue, prec, lowest, highest, valueFormat, altFormat in stats:
143+
for labelName, yieldValue, drainValue, prec, lowest, highest, valueFormat, altFormat in stats:
144144
label = getattr(self, labelName)
145145
yieldValue = processValue(yieldValue)
146-
wasteValue = processValue(wasteValue)
147-
if self._cachedValues[counter] != (yieldValue, wasteValue):
146+
drainValue = processValue(drainValue)
147+
if self._cachedValues[counter] != (yieldValue, drainValue):
148+
try:
149+
efficiency = '{}%'.format(formatAmount(yieldValue / drainValue * 100, 4, 0, 0))
150+
except ZeroDivisionError:
151+
efficiency = '0%'
148152
yps = formatAmount(yieldValue, prec, lowest, highest)
149153
yph = formatAmount(yieldValue * 3600, prec, lowest, highest)
150-
wps = formatAmount(wasteValue, prec, lowest, highest)
151-
wph = formatAmount(wasteValue * 3600, prec, lowest, highest)
152-
wasteSuffix = '\u02b7' if wasteValue > 0 else ''
153-
label.SetLabel(valueFormat.format(yps, wasteSuffix))
154+
dps = formatAmount(drainValue, prec, lowest, highest)
155+
dph = formatAmount(drainValue * 3600, prec, lowest, highest)
156+
label.SetLabel(valueFormat.format(yps))
154157
tipLines = []
155-
tipLines.append("{} m\u00B3 mining yield per second ({} m\u00B3 per hour)".format(yps, yph))
156-
if wasteValue > 0:
157-
tipLines.append("{} m\u00B3 mining waste per second ({} m\u00B3 per hour)".format(wps, wph))
158+
tipLines.append("{} m\u00B3 yield per second ({} m\u00B3 per hour)".format(yps, yph))
159+
tipLines.append("{} m\u00B3 drain per second ({} m\u00B3 per hour)".format(dps, dph))
160+
tipLines.append(f'{efficiency} efficiency')
158161
label.SetToolTip(wx.ToolTip('\n'.join(tipLines)))
159-
self._cachedValues[counter] = (yieldValue, wasteValue)
162+
self._cachedValues[counter] = (yieldValue, drainValue)
160163
counter += 1
161164
self.panel.Layout()
162165
self.headerPanel.Layout()

gui/builtinViewColumns/misc.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from gui.bitmap_loader import BitmapLoader
2828
from gui.utils.numberFormatter import formatAmount
2929
from gui.utils.listFormatter import formatList
30+
from eos.utils.float import floatUnerr
3031
from eos.utils.spoolSupport import SpoolType, SpoolOptions
3132
import eos.config
3233

@@ -547,18 +548,24 @@ def __getData(self, stuff):
547548
if not yps:
548549
return "", None
549550
yph = yps * 3600
550-
wps = stuff.getMiningWPS(ignoreState=True)
551-
wph = wps * 3600
551+
dps = stuff.getMiningDPS(ignoreState=True)
552+
dph = dps * 3600
553+
try:
554+
efficiency = yps / dps
555+
except ZeroDivisionError:
556+
efficiency = 0
552557
textParts = []
553-
textParts.append(formatAmount(yps, 3, 0, 3))
554558
tipLines = []
559+
textParts.append('{} m\u00B3/s'.format(formatAmount(yps, 3, 0, 3)))
555560
tipLines.append("{} m\u00B3 mining yield per second ({} m\u00B3 per hour)".format(
556561
formatAmount(yps, 3, 0, 3), formatAmount(yph, 3, 0, 3)))
557-
if wps > 0:
558-
textParts.append(formatAmount(wps, 3, 0, 3))
559-
tipLines.append("{} m\u00B3 mining waste per second ({} m\u00B3 per hour)".format(
560-
formatAmount(wps, 3, 0, 3), formatAmount(wph, 3, 0, 3)))
561-
text = '{} m\u00B3/s'.format('+'.join(textParts))
562+
tipLines.append("{} m\u00B3 mining drain per second ({} m\u00B3 per hour)".format(
563+
formatAmount(dps, 3, 0, 3), formatAmount(dph, 3, 0, 3)))
564+
if floatUnerr(efficiency) != 1:
565+
eff_text = '{}%'.format(formatAmount(efficiency * 100, 4, 0, 0))
566+
textParts.append(eff_text)
567+
tipLines.append(f"{eff_text} mining efficiency")
568+
text = '{}'.format(' | '.join(textParts))
562569
tooltip = '\n'.join(tipLines)
563570
return text, tooltip
564571
elif itemGroup == "Logistic Drone":

0 commit comments

Comments
 (0)