using CounterStrikeSharp.API.Core; using WASDSharedAPI; namespace WASDMenuAPI.Classes; public class WasdManager : IWasdMenuManager { public void OpenMainMenu(CCSPlayerController? player, IWasdMenu? menu) { if(!TryGetPlayer(player, out var menuPlayer)) return; menuPlayer.OpenMainMenu((WasdMenu?)menu); } public void CloseMenu(CCSPlayerController? player) { if (!TryGetPlayer(player, out var menuPlayer)) return; menuPlayer.OpenMainMenu(null); } public void CloseSubMenu(CCSPlayerController? player) { if (!TryGetPlayer(player, out var menuPlayer)) return; menuPlayer.CloseSubMenu(); } public void CloseAllSubMenus(CCSPlayerController? player) { if (!TryGetPlayer(player, out var menuPlayer)) return; menuPlayer.CloseAllSubMenus(); } public void OpenSubMenu(CCSPlayerController? player, IWasdMenu? menu) { if (!TryGetPlayer(player, out var menuPlayer)) return; menuPlayer.OpenSubMenu(menu); } public IWasdMenu CreateMenu(string title = "", string controlText = "") { WasdMenu menu = new WasdMenu { Title = title, ControlText = controlText }; return menu; } public bool HasMenu(CCSPlayerController? player) { return TryGetPlayer(player, out _); } public void UpdateActiveMenu(CCSPlayerController? player, Dictionary> list) { if (!TryGetPlayer(player, out var menuPlayer)) return; menuPlayer.UpdateActiveMenu(list); } private bool TryGetPlayer(CCSPlayerController? player, out WasdMenuPlayer menuPlayer) { menuPlayer = null!; if (player == null || !player.IsValid || player.IsBot || player.SteamID == 0) return false; return WASDMenuAPI.Players.TryGetValue(player.SteamID, out menuPlayer); } }