refactor: remove separate shrapnel display option

- Shrapnel is now integrated in the loot summary box (S: prefix)
- Remove show_shrapnel config option
- Remove shrapnel UI section from _setup_ui
- Remove shrapnel checkbox from settings dialog
- Update window size calculation
- Keep shrapnel data in HUDStats for internal tracking
This commit is contained in:
LemonNexus 2026-02-09 23:12:13 +00:00
parent e356b037ac
commit 61c45fac8b
1 changed files with 21 additions and 52 deletions

View File

@ -46,7 +46,7 @@ class HUDConfig:
show_combat_stats: bool = False # Kills, Globals, DPP
show_damage_stats: bool = False # Damage dealt/taken
show_cost_metrics: bool = True # Cost per shot/hit/heal
show_shrapnel: bool = False
show_shrapnel: bool = False # Deprecated - now integrated in loot summary
show_gear_info: bool = True
compact_mode: bool = False
@ -61,7 +61,6 @@ class HUDConfig:
'show_combat_stats': self.show_combat_stats,
'show_damage_stats': self.show_damage_stats,
'show_cost_metrics': self.show_cost_metrics,
'show_shrapnel': self.show_shrapnel,
'show_gear_info': self.show_gear_info,
'compact_mode': self.compact_mode,
}
@ -77,7 +76,6 @@ class HUDConfig:
show_combat_stats=data.get('show_combat_stats', False),
show_damage_stats=data.get('show_damage_stats', False),
show_cost_metrics=data.get('show_cost_metrics', True),
show_shrapnel=data.get('show_shrapnel', False),
show_gear_info=data.get('show_gear_info', True),
compact_mode=data.get('compact_mode', False),
)
@ -111,14 +109,14 @@ class HUDStats:
# Shrapnel (optional)
shrapnel_total: Decimal = Decimal('0.0')
loot_other: Decimal = Decimal('0.0') # Non-shrapnel loot
# Session records
highest_loot: Decimal = Decimal('0.0') # Highest total loot from single kill
# Kill tracking buffer
_current_kill_loot: Decimal = Decimal('0.0')
_last_loot_time: Optional[datetime] = None
# Cost metrics (core)
cost_per_shot: Decimal = Decimal('0.0')
cost_per_hit: Decimal = Decimal('0.0')
@ -228,11 +226,7 @@ class HUDSettingsDialog(QDialog):
self.cb_damage = QCheckBox("Damage Stats (Dealt/Taken)")
self.cb_damage.setChecked(self.config.show_damage_stats)
form.addRow(self.cb_damage)
self.cb_shrapnel = QCheckBox("Shrapnel Amount")
self.cb_shrapnel.setChecked(self.config.show_shrapnel)
form.addRow(self.cb_shrapnel)
# Display mode
form.addRow(QLabel("<b>Display Mode</b>"))
@ -267,7 +261,6 @@ class HUDSettingsDialog(QDialog):
self.config.show_cost_breakdown = self.cb_cost_breakdown.isChecked()
self.config.show_combat_stats = self.cb_combat.isChecked()
self.config.show_damage_stats = self.cb_damage.isChecked()
self.config.show_shrapnel = self.cb_shrapnel.isChecked()
self.config.compact_mode = self.cb_compact.isChecked()
self.accept()
@ -445,7 +438,7 @@ class HUDOverlay(QWidget):
summary_layout = QVBoxLayout(summary_frame)
summary_layout.setContentsMargins(8, 4, 8, 4)
summary_layout.setSpacing(2)
# Cost row
cost_layout = QHBoxLayout()
self.total_cost_label = QLabel("Cost: 0.00")
@ -453,26 +446,26 @@ class HUDOverlay(QWidget):
cost_layout.addWidget(self.total_cost_label)
cost_layout.addStretch()
summary_layout.addLayout(cost_layout)
# Loot breakdown row
loot_layout = QHBoxLayout()
self.total_loot_label = QLabel("Total: 0.00")
self.total_loot_label.setStyleSheet("font-size: 11px; color: #AAFFAA;")
self.shrapnel_value_label = QLabel("S: 0.00")
self.shrapnel_value_label.setStyleSheet("font-size: 11px; color: #87CEEB;")
self.regular_loot_label = QLabel("R: 0.00")
self.regular_loot_label.setStyleSheet("font-size: 11px; color: #FFD700;")
loot_layout.addWidget(self.total_loot_label)
loot_layout.addStretch()
loot_layout.addWidget(self.shrapnel_value_label)
loot_layout.addWidget(self.regular_loot_label)
summary_layout.addLayout(loot_layout)
# Highest loot row
highest_layout = QHBoxLayout()
self.highest_loot_label = QLabel("Highest: 0.00")
@ -480,7 +473,7 @@ class HUDOverlay(QWidget):
highest_layout.addWidget(self.highest_loot_label)
highest_layout.addStretch()
summary_layout.addLayout(highest_layout)
layout.addWidget(summary_frame)
# Separator before cost metrics
@ -589,28 +582,6 @@ class HUDOverlay(QWidget):
sep_footer.setStyleSheet("background-color: rgba(255, 215, 0, 50);")
sep_footer.setFixedHeight(1)
layout.addWidget(sep_footer)
damage_layout.setContentsMargins(0, 0, 0, 0)
self.damage_dealt_label = QLabel("Dealt: 0")
self.damage_taken_label = QLabel("Taken: 0")
damage_layout.addWidget(self.damage_dealt_label)
damage_layout.addStretch()
damage_layout.addWidget(self.damage_taken_label)
layout.addWidget(damage_frame)
# === OPTIONAL: Shrapnel ===
if self.hud_config.show_shrapnel:
shrapnel_frame = QFrame()
shrapnel_layout = QHBoxLayout(shrapnel_frame)
shrapnel_layout.setContentsMargins(0, 0, 0, 0)
self.shrapnel_label = QLabel("💎 Shrapnel: 0.00 PED")
shrapnel_layout.addWidget(self.shrapnel_label)
shrapnel_layout.addStretch()
layout.addWidget(shrapnel_frame)
# === FOOTER: Session Time + Drag Hint ===
footer = QHBoxLayout()
@ -668,8 +639,6 @@ class HUDOverlay(QWidget):
height += 25
if self.hud_config.show_damage_stats:
height += 25
if self.hud_config.show_shrapnel:
height += 25
if self.hud_config.show_session_time:
height += 20
@ -731,11 +700,11 @@ class HUDOverlay(QWidget):
self._stats.cost_per_shot = cost_per_shot
self._stats.cost_per_hit = cost_per_hit
self._stats.cost_per_heal = cost_per_heal
# Initialize kill tracking
self._stats._current_kill_loot = Decimal('0.0')
self._stats._last_loot_time = None
self.session_active = True
self._timer.start(1000)
@ -753,7 +722,7 @@ class HUDOverlay(QWidget):
if self._stats._current_kill_loot > self._stats.highest_loot:
self._stats.highest_loot = self._stats._current_kill_loot
self._refresh_display()
self.session_active = False
self._timer.stop()
self.status_label.setText("● Stopped")
@ -846,7 +815,7 @@ class HUDOverlay(QWidget):
"""Update loot value - tracks per-kill totals for highest loot."""
if self.session_active:
now = datetime.now()
# Check if this is a new kill (gap of >2 seconds since last loot)
if self._stats._last_loot_time is not None:
time_since_last = (now - self._stats._last_loot_time).total_seconds()
@ -862,15 +831,15 @@ class HUDOverlay(QWidget):
else:
# First loot of session
self._stats._current_kill_loot = value_ped
self._stats._last_loot_time = now
# Add to totals
if is_shrapnel:
self._stats.shrapnel_total += value_ped
else:
self._stats.loot_other += value_ped
self._stats.recalculate()
self._refresh_display()