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:
parent
3473b2c592
commit
90595a8ebe
|
|
@ -173,19 +173,30 @@ class ProjectStatsDialog(QDialog):
|
||||||
class SettingsDialog(QDialog):
|
class SettingsDialog(QDialog):
|
||||||
"""Dialog for application settings."""
|
"""Dialog for application settings."""
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None, current_player_name: str = ""):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self.setWindowTitle("Settings")
|
self.setWindowTitle("Settings")
|
||||||
self.setMinimumWidth(400)
|
self.setMinimumWidth(400)
|
||||||
|
self.player_name = current_player_name
|
||||||
self.setup_ui()
|
self.setup_ui()
|
||||||
|
|
||||||
def setup_ui(self):
|
def setup_ui(self):
|
||||||
layout = QVBoxLayout(self)
|
layout = QVBoxLayout(self)
|
||||||
|
|
||||||
info_label = QLabel("Settings configuration would go here.")
|
# Player Settings Group
|
||||||
info_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
player_group = QGroupBox("Player Settings")
|
||||||
layout.addWidget(info_label)
|
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()
|
layout.addStretch()
|
||||||
|
|
||||||
button_box = QDialogButtonBox(
|
button_box = QDialogButtonBox(
|
||||||
|
|
@ -194,6 +205,10 @@ class SettingsDialog(QDialog):
|
||||||
button_box.accepted.connect(self.accept)
|
button_box.accepted.connect(self.accept)
|
||||||
button_box.rejected.connect(self.reject)
|
button_box.rejected.connect(self.reject)
|
||||||
layout.addWidget(button_box)
|
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.session_state = SessionState.IDLE
|
||||||
self.current_session_id: Optional[int] = None
|
self.current_session_id: Optional[int] = None
|
||||||
self._current_db_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
|
# Selected gear
|
||||||
self._selected_weapon: Optional[str] = None
|
self._selected_weapon: Optional[str] = None
|
||||||
|
|
@ -1048,9 +1066,20 @@ class MainWindow(QMainWindow):
|
||||||
"""Handle personal global events (only your globals)."""
|
"""Handle personal global events (only your globals)."""
|
||||||
value_ped = event.data.get('value_ped', Decimal('0.0'))
|
value_ped = event.data.get('value_ped', Decimal('0.0'))
|
||||||
creature = event.data.get('creature', 'Unknown')
|
creature = event.data.get('creature', 'Unknown')
|
||||||
# Only count personal globals in HUD stats
|
player = event.data.get('player_name', 'Unknown')
|
||||||
self.hud.on_personal_global(value_ped)
|
|
||||||
self.log_info("Global", f"🎉 YOUR GLOBAL: {creature} for {value_ped} PED!!!")
|
# 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):
|
def on_hof(event):
|
||||||
"""Handle HoF events."""
|
"""Handle HoF events."""
|
||||||
|
|
@ -1452,8 +1481,13 @@ class MainWindow(QMainWindow):
|
||||||
|
|
||||||
def on_settings(self):
|
def on_settings(self):
|
||||||
"""Open settings dialog."""
|
"""Open settings dialog."""
|
||||||
dialog = SettingsDialog(self)
|
dialog = SettingsDialog(self, self.player_name)
|
||||||
dialog.exec()
|
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):
|
def on_loadout_manager(self):
|
||||||
"""Open Loadout Manager dialog."""
|
"""Open Loadout Manager dialog."""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue