| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- using Content.Shared.CCVar;
- using Robust.Client;
- using Robust.Client.Graphics;
- using Robust.Shared;
- using Robust.Shared.Configuration;
- namespace Content.Client.GameTicking.Managers;
- public sealed class TitleWindowManager
- {
- [Dependency] private readonly IBaseClient _client = default!;
- [Dependency] private readonly IClyde _clyde = default!;
- [Dependency] private readonly IConfigurationManager _cfg = default!;
- [Dependency] private readonly IGameController _gameController = default!;
- public void Initialize()
- {
- _cfg.OnValueChanged(CVars.GameHostName, OnHostnameChange, true);
- _cfg.OnValueChanged(CCVars.GameHostnameInTitlebar, OnHostnameTitleChange, true);
- _client.RunLevelChanged += OnRunLevelChangedChange;
- }
- public void Shutdown()
- {
- _cfg.UnsubValueChanged(CVars.GameHostName, OnHostnameChange);
- _cfg.UnsubValueChanged(CCVars.GameHostnameInTitlebar, OnHostnameTitleChange);
- }
- private void OnHostnameChange(string hostname)
- {
- var defaultWindowTitle = _gameController.GameTitle();
- // Since the game assumes the server name is MyServer and that GameHostnameInTitlebar CCVar is true by default
- // Lets just... not show anything. This also is used to revert back to just the game title on disconnect.
- if (_client.RunLevel == ClientRunLevel.Initialize)
- {
- _clyde.SetWindowTitle(defaultWindowTitle);
- return;
- }
- if (_cfg.GetCVar(CCVars.GameHostnameInTitlebar))
- // If you really dislike the dash I guess change it here
- _clyde.SetWindowTitle(hostname + " - " + defaultWindowTitle);
- else
- _clyde.SetWindowTitle(defaultWindowTitle);
- }
- // Clients by default assume game.hostname_in_titlebar is true
- // but we need to clear it as soon as we join and actually receive the servers preference on this.
- // This will ensure we rerun OnHostnameChange and set the correct title bar name.
- private void OnHostnameTitleChange(bool colonthree)
- {
- OnHostnameChange(_cfg.GetCVar(CVars.GameHostName));
- }
- // This is just used we can rerun the hostname change function when we disconnect to revert back to just the games title.
- private void OnRunLevelChangedChange(object? sender, RunLevelChangedEventArgs runLevelChangedEventArgs)
- {
- OnHostnameChange(_cfg.GetCVar(CVars.GameHostName));
- }
- }
|