using CounterStrikeSharp.API.Core; using CS2_SimpleAdmin.Models; using CS2_SimpleAdminApi; using Menu; using Menu.Enums; namespace CS2_SimpleAdmin.Menus; public static class ReasonMenu { public static void OpenMenu( CCSPlayerController admin, PenaltyType penaltyType, string menuName, CCSPlayerController player, Action onSelectAction) { var reasons = penaltyType switch { PenaltyType.Ban => CS2_SimpleAdmin.Instance.Config.MenuConfigs.BanReasons, PenaltyType.Kick => CS2_SimpleAdmin.Instance.Config.MenuConfigs.KickReasons, PenaltyType.Mute => CS2_SimpleAdmin.Instance.Config.MenuConfigs.MuteReasons, PenaltyType.Warn => CS2_SimpleAdmin.Instance.Config.MenuConfigs.WarnReasons, PenaltyType.Gag => CS2_SimpleAdmin.Instance.Config.MenuConfigs.MuteReasons, PenaltyType.Silence => CS2_SimpleAdmin.Instance.Config.MenuConfigs.MuteReasons, _ => CS2_SimpleAdmin.Instance.Config.MenuConfigs.BanReasons }; var items = new List(); for (int i = 0; i < reasons.Count; i++) { items.Add(new MenuItem(MenuItemType.Button, [new MenuValue(reasons[i])])); } if (items.Count == 0) return; CS2_SimpleAdmin.Menu?.ShowScrollableMenu( admin, menuName, items, (buttons, menu, selected) => { if (selected == null) return; if (buttons == MenuButtons.Select && selected.Option >= 0 && selected.Option < reasons.Count) { onSelectAction(admin, player, reasons[selected.Option]); } }, true, freezePlayer: false, disableDeveloper: true); } public static void OpenMenu( CCSPlayerController admin, PenaltyType penaltyType, string menuName, DisconnectedPlayer player, Action onSelectAction) { var reasons = penaltyType switch { PenaltyType.Ban => CS2_SimpleAdmin.Instance.Config.MenuConfigs.BanReasons, PenaltyType.Kick => CS2_SimpleAdmin.Instance.Config.MenuConfigs.KickReasons, PenaltyType.Mute => CS2_SimpleAdmin.Instance.Config.MenuConfigs.MuteReasons, PenaltyType.Warn => CS2_SimpleAdmin.Instance.Config.MenuConfigs.WarnReasons, _ => CS2_SimpleAdmin.Instance.Config.MenuConfigs.BanReasons }; var items = new List(); for (int i = 0; i < reasons.Count; i++) { items.Add(new MenuItem(MenuItemType.Button, [new MenuValue(reasons[i])])); } if (items.Count == 0) return; CS2_SimpleAdmin.Menu?.ShowScrollableMenu( admin, menuName, items, (buttons, menu, selected) => { if (selected == null) return; if (buttons == MenuButtons.Select && selected.Option >= 0 && selected.Option < reasons.Count) { onSelectAction(admin, player, reasons[selected.Option]); } }, true, freezePlayer: false, disableDeveloper: true); } }