mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-17 13:37:47 +03:00
# Description I didn't make 2 PRs because the queue kinda depends on Discord auth and I didn't wanna spend the time splitting them up. The queue puts everyone except admins/whitelisted/previously in-game players into a queue after the soft max players is reached, hard cap still denies new connections (and queues) from everyone. Priority queuing is simple to add and I'll do that when I make donator benefits or whatever similar system. --- <details><summary><h1>Media</h1></summary> <p> Too big to embed and I don't wanna compress it :) https://youtu.be/NBqN6Piv94w </p> </details> --- # Changelog 🆑 - add: Added a queue for players so you don't need to spam reconnect and hope you join when someone leaves.
55 lines
1.2 KiB
C#
55 lines
1.2 KiB
C#
using Content.Shared.JoinQueue;
|
|
using Robust.Client.Audio;
|
|
using Robust.Client.Console;
|
|
using Robust.Client.State;
|
|
using Robust.Client.UserInterface;
|
|
using Robust.Shared.Player;
|
|
|
|
namespace Content.Client.JoinQueue;
|
|
|
|
public sealed class QueueState : State
|
|
{
|
|
[Dependency] private readonly IUserInterfaceManager _userInterface = default!;
|
|
[Dependency] private readonly IClientConsoleHost _console = default!;
|
|
|
|
|
|
private const string JoinSoundPath = "/Audio/Effects/newplayerping.ogg";
|
|
|
|
private QueueGui? _gui;
|
|
|
|
|
|
protected override void Startup()
|
|
{
|
|
_gui = new QueueGui();
|
|
_userInterface.StateRoot.AddChild(_gui);
|
|
|
|
_gui.QuitPressed += OnQuitPressed;
|
|
}
|
|
|
|
protected override void Shutdown()
|
|
{
|
|
_gui!.QuitPressed -= OnQuitPressed;
|
|
_gui.Dispose();
|
|
|
|
Ding();
|
|
}
|
|
|
|
|
|
public void OnQueueUpdate(QueueUpdateMessage msg)
|
|
{
|
|
_gui?.UpdateInfo(msg.Total, msg.Position);
|
|
}
|
|
|
|
private void OnQuitPressed()
|
|
{
|
|
_console.ExecuteCommand("quit");
|
|
}
|
|
|
|
|
|
private void Ding()
|
|
{
|
|
if (IoCManager.Resolve<IEntityManager>().TrySystem<AudioSystem>(out var audio))
|
|
audio.PlayGlobal(JoinSoundPath, Filter.Local(), false);
|
|
}
|
|
}
|