feat: add player name setting for accurate global tracking

- Settings dialog now has Avatar Name field
- Store player_name in MainWindow
- Filter personal globals to only count if player name matches
- Warn user if no player name is configured
- Log other players' globals separately
This commit is contained in:
LemonNexus 2026-02-10 13:40:42 +00:00
parent 3473b2c592
commit 90595a8ebe
1 changed files with 45 additions and 11 deletions

View File

@ -173,19 +173,30 @@ class ProjectStatsDialog(QDialog):
class SettingsDialog(QDialog):
"""Dialog for application settings."""
def __init__(self, parent=None):
def __init__(self, parent=None, current_player_name: str = ""):
super().__init__(parent)
self.setWindowTitle("Settings")
self.setMinimumWidth(400)
self.player_name = current_player_name
self.setup_ui()
def setup_ui(self):
layout = QVBoxLayout(self)
info_label = QLabel("Settings configuration would go here.")
info_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
layout.addWidget(info_label)
# Player Settings Group
player_group = QGroupBox("Player Settings")
player_layout = QFormLayout(player_group)
self.player_name_edit = QLineEdit()
self.player_name_edit.setText(self.player_name)
self.player_name_edit.setPlaceholderText("Your avatar name in Entropia Universe")
player_layout.addRow("Avatar Name:", self.player_name_edit)
help_label = QLabel("Set your avatar name to track your globals correctly.")
help_label.setStyleSheet("color: #888; font-size: 11px;")
player_layout.addRow(help_label)
layout.addWidget(player_group)
layout.addStretch()
button_box = QDialogButtonBox(
@ -194,6 +205,10 @@ class SettingsDialog(QDialog):
button_box.accepted.connect(self.accept)
button_box.rejected.connect(self.reject)
layout.addWidget(button_box)
def get_player_name(self) -> str:
"""Get the configured player name."""
return self.player_name_edit.text().strip()
# ============================================================================
@ -250,6 +265,9 @@ class MainWindow(QMainWindow):
self.session_state = SessionState.IDLE
self.current_session_id: Optional[int] = None
self._current_db_session_id: Optional[int] = None
# Player settings
self.player_name: str = "" # Set via Settings dialog
# Selected gear
self._selected_weapon: Optional[str] = None
@ -1048,9 +1066,20 @@ class MainWindow(QMainWindow):
"""Handle personal global events (only your globals)."""
value_ped = event.data.get('value_ped', Decimal('0.0'))
creature = event.data.get('creature', 'Unknown')
# Only count personal globals in HUD stats
self.hud.on_personal_global(value_ped)
self.log_info("Global", f"🎉 YOUR GLOBAL: {creature} for {value_ped} PED!!!")
player = event.data.get('player_name', 'Unknown')
# Only count if it matches our configured player name
if self.player_name and player.lower() == self.player_name.lower():
# Only count personal globals in HUD stats
self.hud.on_personal_global(value_ped)
self.log_info("Global", f"🎉 YOUR GLOBAL: {creature} for {value_ped} PED!!!")
else:
# Log but don't count - might be another player if names are similar
self.log_info("Global", f"{player} got global: {creature} for {value_ped} PED")
# If no player name set, warn user
if not self.player_name:
self.log_info("Config", "⚠️ Set your avatar name in Settings to track your globals correctly")
def on_hof(event):
"""Handle HoF events."""
@ -1452,8 +1481,13 @@ class MainWindow(QMainWindow):
def on_settings(self):
"""Open settings dialog."""
dialog = SettingsDialog(self)
dialog.exec()
dialog = SettingsDialog(self, self.player_name)
if dialog.exec() == QDialog.DialogCode.Accepted:
self.player_name = dialog.get_player_name()
if self.player_name:
self.log_info("Settings", f"Avatar name set to: {self.player_name}")
else:
self.log_info("Settings", "Warning: No avatar name set. Global tracking may not work correctly.")
def on_loadout_manager(self):
"""Open Loadout Manager dialog."""