From 0cca38b10b57ba56e2b300ce350f5ab6065ba34c Mon Sep 17 00:00:00 2001 From: Valentin Barat Date: Sat, 16 Mar 2024 16:08:28 +0100 Subject: [PATCH] Improved player selection in menus --- Menus/ManageAdminsMenu.cs | 10 +++++----- Menus/ManagePlayersMenu.cs | 8 ++++---- Menus/PlayersMenu.cs | 14 +++++++++++++- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/Menus/ManageAdminsMenu.cs b/Menus/ManageAdminsMenu.cs index c7cfbff..ac4127f 100644 --- a/Menus/ManageAdminsMenu.cs +++ b/Menus/ManageAdminsMenu.cs @@ -24,9 +24,9 @@ namespace CS2_SimpleAdmin.Menus // TODO: Localize options // options added in order - options.Add(new ChatMenuOptionData("Add Admin", () => PlayersMenu.OpenAliveMenu(admin, "Add Admin", AddAdminMenu))); - options.Add(new ChatMenuOptionData("Remove Admin", () => PlayersMenu.OpenAliveMenu(admin, "Remove Admin", RemoveAdmin, player => player != admin && admin.CanTarget(player)))); - options.Add(new ChatMenuOptionData("Reload Admins", ReloadAdmins)); + options.Add(new ChatMenuOptionData("Add Admin", () => PlayersMenu.OpenRealPlayersMenu(admin, "Add Admin", AddAdminMenu))); + options.Add(new ChatMenuOptionData("Remove Admin", () => PlayersMenu.OpenAdminPlayersMenu(admin, "Remove Admin", RemoveAdmin, player => player != admin && admin.CanTarget(player)))); + options.Add(new ChatMenuOptionData("Reload Admins", () => ReloadAdmins(admin))); foreach (ChatMenuOptionData menuOptionData in options) { @@ -77,9 +77,9 @@ namespace CS2_SimpleAdmin.Menus CS2_SimpleAdmin.Instance.RemoveAdmin(admin, player.SteamID.ToString()); } - private static void ReloadAdmins() + private static void ReloadAdmins(CCSPlayerController admin) { - CS2_SimpleAdmin.Instance.ReloadAdmins(); + CS2_SimpleAdmin.Instance.ReloadAdmins(admin); } } } \ No newline at end of file diff --git a/Menus/ManagePlayersMenu.cs b/Menus/ManagePlayersMenu.cs index 33a44fc..399080f 100644 --- a/Menus/ManagePlayersMenu.cs +++ b/Menus/ManagePlayersMenu.cs @@ -44,14 +44,14 @@ namespace CS2_SimpleAdmin.Menus if (hasBan) { - options.Add(new ChatMenuOptionData("Ban", () => PlayersMenu.OpenMenu(admin, "Ban", (admin, player) => DurationMenu.OpenMenu(admin, $"Ban: {player.PlayerName}", player, BanMenu)))); + options.Add(new ChatMenuOptionData("Ban", () => PlayersMenu.OpenRealPlayersMenu(admin, "Ban", (admin, player) => DurationMenu.OpenMenu(admin, $"Ban: {player.PlayerName}", player, BanMenu)))); } if (hasChat) { - options.Add(new ChatMenuOptionData("Gag", () => PlayersMenu.OpenMenu(admin, "Gag", (admin, player) => DurationMenu.OpenMenu(admin, $"Gag: {player.PlayerName}", player, GagMenu)))); - options.Add(new ChatMenuOptionData("Mute", () => PlayersMenu.OpenMenu(admin, "Mute", (admin, player) => DurationMenu.OpenMenu(admin, $"Mute: {player.PlayerName}", player, MuteMenu)))); - options.Add(new ChatMenuOptionData("Silence", () => PlayersMenu.OpenMenu(admin, "Silence", (admin, player) => DurationMenu.OpenMenu(admin, $"Silence: {player.PlayerName}", player, SilenceMenu)))); + options.Add(new ChatMenuOptionData("Gag", () => PlayersMenu.OpenRealPlayersMenu(admin, "Gag", (admin, player) => DurationMenu.OpenMenu(admin, $"Gag: {player.PlayerName}", player, GagMenu)))); + options.Add(new ChatMenuOptionData("Mute", () => PlayersMenu.OpenRealPlayersMenu(admin, "Mute", (admin, player) => DurationMenu.OpenMenu(admin, $"Mute: {player.PlayerName}", player, MuteMenu)))); + options.Add(new ChatMenuOptionData("Silence", () => PlayersMenu.OpenRealPlayersMenu(admin, "Silence", (admin, player) => DurationMenu.OpenMenu(admin, $"Silence: {player.PlayerName}", player, SilenceMenu)))); } if (hasKick) diff --git a/Menus/PlayersMenu.cs b/Menus/PlayersMenu.cs index c3f8332..8fd20f4 100644 --- a/Menus/PlayersMenu.cs +++ b/Menus/PlayersMenu.cs @@ -1,10 +1,21 @@ using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Admin; using CounterStrikeSharp.API.Modules.Menu; namespace CS2_SimpleAdmin.Menus { public static class PlayersMenu { + public static void OpenRealPlayersMenu(CCSPlayerController admin, string menuName, Action onSelectAction, Func? enableFilter = null) + { + OpenMenu(admin, menuName, onSelectAction, p => p.IsBot == false); + } + + public static void OpenAdminPlayersMenu(CCSPlayerController admin, string menuName, Action onSelectAction, Func? enableFilter = null) + { + OpenMenu(admin, menuName, onSelectAction, p => AdminManager.GetPlayerAdminData(p)?.Flags?.Count > 0); + } + public static void OpenAliveMenu(CCSPlayerController admin, string menuName, Action onSelectAction, Func? enableFilter = null) { OpenMenu(admin, menuName, onSelectAction, p => p.PawnIsAlive); @@ -23,9 +34,10 @@ namespace CS2_SimpleAdmin.Menus foreach (CCSPlayerController player in players) { string optionName = player.PlayerName; - bool enabled = admin.CanTarget(player); if (enableFilter != null && enableFilter(player) == false) continue; + + bool enabled = admin.CanTarget(player); menu.AddMenuOption(optionName, (_, _) => { onSelectAction?.Invoke(admin, player); }, enabled == false); }