v1.2.3.b3 - HUD auto-hide

This commit is contained in:
Juzlus 2026-08-02 00:09:46 +02:00
parent 8bb69c1ea1
commit 20f1ba212a
10 changed files with 31 additions and 10 deletions

View file

@ -60,6 +60,16 @@ public class WasdManager : IWasdMenuManager
menuPlayer?.UpdateActiveMenu(list);
}
public bool SetMenuPaused(CCSPlayerController? player, bool pause)
{
if (TryGetPlayer(player, out var menuPlayer) && menuPlayer != null)
{
menuPlayer.Paused = pause;
return true;
}
return false;
}
private static bool TryGetPlayer(CCSPlayerController? player, out WasdMenuPlayer? menuPlayer)
{
menuPlayer = null!;

View file

@ -15,6 +15,7 @@ public class WasdMenuPlayer
public string CenterHtml = "";
public int VisibleOptions = 3;
public PlayerButtons Buttons { get; set; }
public bool Paused = false;
public int scrollIndex = 0;
public int maxLength = 21;
@ -128,6 +129,8 @@ public class WasdMenuPlayer
string endControl = "";
LinkedListNode<IWasdMenuOption>? option = MenuStart;
builder.AppendLine("<jRS/>");
if (!string.IsNullOrEmpty(option?.Value?.Parent?.Title))
builder.AppendLine(option.Value.Parent?.Title ?? "");

View file

@ -18,4 +18,5 @@ public interface IWasdMenuManager
public IWasdMenu CreateMenu(string title, string itemText, string itemHoverText, string ControlText);
public bool HasMenu(CCSPlayerController? player);
public void UpdateActiveMenu(CCSPlayerController? player, Dictionary<string, Action<CCSPlayerController, IWasdMenuOption>> list);
public bool SetMenuPaused(CCSPlayerController? player, bool pause);
}

View file

@ -47,18 +47,15 @@ public class WASDMenuAPI
{
foreach (var player in Players.Values.Where(p => p.MainMenu != null && p.Player?.IsValid == true))
{
if (player.Paused)
return;
if ((player.Buttons & PlayerButtons.Forward) == 0 && (player.Player.Buttons & PlayerButtons.Forward) != 0)
{
player.ScrollUp();
}
else if((player.Buttons & PlayerButtons.Back) == 0 && (player.Player.Buttons & PlayerButtons.Back) != 0)
{
player.ScrollDown();
}
else if((player.Buttons & PlayerButtons.Use) == 0 && (player.Player.Buttons & PlayerButtons.Use) != 0)
{
player.Choose();
}
player.Buttons = player.Player.Buttons;
if (!string.IsNullOrEmpty(player.CenterHtml))

View file

@ -2,7 +2,6 @@ using CounterStrikeSharp.API;
using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Modules.Admin;
using CounterStrikeSharp.API.Modules.Commands;
using CounterStrikeSharp.API.Modules.Entities;
using CounterStrikeSharp.API.Modules.Entities.Constants;
using CounterStrikeSharp.API.Modules.Utils;
using src.menu;
@ -444,7 +443,7 @@ namespace src.command
bool isDisplayHUD = playerInfo.HideHUD < tickCount;
playerInfo.HideHUD = isDisplayHUD ? int.MaxValue : int.MinValue;
SkillUtils.CloseMenu(player);
SkillUtils.SetMenuPaused(player, isDisplayHUD);
player.PrintToChat($" {(!isDisplayHUD ? ChatColors.Green : ChatColors.Red)}{player.GetTranslation(!isDisplayHUD ? "hud_on" : "hud_off")}");
}

View file

@ -241,7 +241,7 @@ namespace src.player
if (isOtherPlugin && playerInfo.HideHUD != int.MaxValue)
{
playerInfo.HideHUD = tickCount + 15;
SkillUtils.CloseMenu(player);
SkillUtils.SetMenuPaused(player, true);
}
}

View file

@ -86,7 +86,11 @@ namespace src.player
if (player.PawnIsAlive && skillPlayer.SkillHudExpired < now && string.IsNullOrEmpty(skillPlayer.PrintHTML)) return;
if (SkillUtils.HasMenu(player)) return;
if (SkillUtils.HasMenu(player))
{
SkillUtils.SetMenuPaused(player, false);
return;
}
string infoLine = string.Empty;
string skillLine = string.Empty;

View file

@ -786,6 +786,13 @@ namespace src.utils
return manager.HasMenu(player);
}
public static bool SetMenuPaused(CCSPlayerController? player, bool pause)
{
var manager = GetMenuManager();
if (manager == null) return false;
return manager.SetMenuPaused(player, pause);
}
private static string GetInvisibleSignature(string id)
{
if (string.IsNullOrEmpty(id)) return "";