From: Vigers Ray <60344369+VigersRay@users.noreply.github.com> Date: Sat, 6 Jan 2024 06:06:49 +0000 (+0300) Subject: Login tips (#22234) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=5492cc5fd12dad0f387c1315f466c28bc75d2401;p=space-station-14.git Login tips (#22234) * Init coomit * meh * okay * Revert "okay" This reverts commit bb638aa4baa8dbd0e285c3435aabf83171a4806a. * enable-d * Update Content.Client/Launcher/LauncherConnectingGui.xaml.cs Co-authored-by: Kara * review --------- Co-authored-by: Kara Co-authored-by: metalgearsloth --- diff --git a/Content.Client/Launcher/LauncherConnecting.cs b/Content.Client/Launcher/LauncherConnecting.cs index 101a63a800..9625f9e31c 100644 --- a/Content.Client/Launcher/LauncherConnecting.cs +++ b/Content.Client/Launcher/LauncherConnecting.cs @@ -1,9 +1,12 @@ using System; using Robust.Client; using Robust.Client.UserInterface; +using Robust.Shared.Configuration; using Robust.Shared.IoC; using Robust.Shared.Log; using Robust.Shared.Network; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; namespace Content.Client.Launcher { @@ -13,6 +16,9 @@ namespace Content.Client.Launcher [Dependency] private readonly IClientNetManager _clientNetManager = default!; [Dependency] private readonly IGameController _gameController = default!; [Dependency] private readonly IBaseClient _baseClient = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; private LauncherConnectingGui? _control; @@ -51,7 +57,7 @@ namespace Content.Client.Launcher protected override void Startup() { - _control = new LauncherConnectingGui(this); + _control = new LauncherConnectingGui(this, _random, _prototypeManager, _cfg); _userInterfaceManager.StateRoot.AddChild(_control); diff --git a/Content.Client/Launcher/LauncherConnectingGui.xaml b/Content.Client/Launcher/LauncherConnectingGui.xaml index 430ae58d6e..083e4ca871 100644 --- a/Content.Client/Launcher/LauncherConnectingGui.xaml +++ b/Content.Client/Launcher/LauncherConnectingGui.xaml @@ -54,4 +54,17 @@ + + + + + + + + + + + + diff --git a/Content.Client/Launcher/LauncherConnectingGui.xaml.cs b/Content.Client/Launcher/LauncherConnectingGui.xaml.cs index 8a34da6898..79fba7c285 100644 --- a/Content.Client/Launcher/LauncherConnectingGui.xaml.cs +++ b/Content.Client/Launcher/LauncherConnectingGui.xaml.cs @@ -1,12 +1,18 @@ +using System.Linq; using Content.Client.Stylesheets; +using Content.Shared.CCVar; +using Content.Shared.Dataset; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; +using Robust.Shared.Configuration; using Robust.Shared.IoC; using Robust.Shared.Timing; using Robust.Shared.Localization; using Robust.Shared.Network; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; namespace Content.Client.Launcher { @@ -15,11 +21,19 @@ namespace Content.Client.Launcher { private const float RedialWaitTimeSeconds = 15f; private readonly LauncherConnecting _state; + private readonly IRobustRandom _random; + private readonly IPrototypeManager _prototype; + private readonly IConfigurationManager _cfg; + private float _redialWaitTime = RedialWaitTimeSeconds; - public LauncherConnectingGui(LauncherConnecting state) + public LauncherConnectingGui(LauncherConnecting state, IRobustRandom random, + IPrototypeManager prototype, IConfigurationManager config) { _state = state; + _random = random; + _prototype = prototype; + _cfg = config; RobustXamlLoader.Load(this); @@ -27,6 +41,7 @@ namespace Content.Client.Launcher Stylesheet = IoCManager.Resolve().SheetSpace; + ChangeLoginTip(); ReconnectButton.OnPressed += _ => _state.RetryConnect(); // Redial shouldn't fail, but if it does, try a reconnect (maybe we're being run from debug) RedialButton.OnPressed += _ => @@ -67,6 +82,29 @@ namespace Content.Client.Launcher ReconnectButton.Visible = !redialFlag; } + private void ChangeLoginTip() + { + var tipsDataset = _cfg.GetCVar(CCVars.LoginTipsDataset); + var loginTipsEnabled = _prototype.TryIndex(tipsDataset, out var tips); + + LoginTips.Visible = loginTipsEnabled; + if (!loginTipsEnabled) + { + return; + } + + var tipList = tips!.Values; + + if (tipList.Count == 0) + return; + + var randomIndex = _random.Next(tipList.Count); + var tip = tipList[randomIndex]; + LoginTip.SetMessage(tip); + + LoginTipTitle.Text = Loc.GetString("connecting-window-tip", ("numberTip", randomIndex)); + } + protected override void FrameUpdate(FrameEventArgs args) { base.FrameUpdate(args); diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index a65bf1a420..5a315f7055 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -352,7 +352,7 @@ namespace Content.Shared.CCVar CVarDef.Create("game.round_restart_time", 120f, CVar.SERVERONLY); /// - /// The prototype to use for secret weights. + /// The prototype to use for secret weights. /// public static readonly CVarDef SecretWeightPrototype = CVarDef.Create("game.secret_weight_prototype", "Secret", CVar.SERVERONLY); @@ -504,6 +504,9 @@ namespace Content.Shared.CCVar public static readonly CVarDef TipFrequencyInRound = CVarDef.Create("tips.in_game_frequency", 60f * 60); + public static readonly CVarDef LoginTipsDataset = + CVarDef.Create("tips.login_dataset", "Tips"); + /* * Console */ @@ -813,7 +816,7 @@ namespace Content.Shared.CCVar /// /// The threshold of minutes to appear as a "new player" in the ahelp menu - /// If 0, appearing as a new player is disabled. + /// If 0, appearing as a new player is disabled. /// public static readonly CVarDef NewPlayerThreshold = CVarDef.Create("admin.new_player_threshold", 0, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); diff --git a/Resources/Locale/en-US/launcher/launcher-connecting.ftl b/Resources/Locale/en-US/launcher/launcher-connecting.ftl index c4fb51d266..f9dff0c46a 100644 --- a/Resources/Locale/en-US/launcher/launcher-connecting.ftl +++ b/Resources/Locale/en-US/launcher/launcher-connecting.ftl @@ -9,6 +9,7 @@ connecting-redial-wait = Please wait: { TOSTRING($time, "G3") } connecting-in-progress = Connecting to server... connecting-disconnected = Disconnected from server: connecting-tip = Don't die! +connecting-window-tip = Tip { $numberTip } connecting-version = ver 0.1 connecting-fail-reason = Failed to connect to server: { $reason }