mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-17 18:39:07 +00:00
78 lines
2.6 KiB
C#
78 lines
2.6 KiB
C#
using CounterStrikeSharp.API.Core;
|
|
using CounterStrikeSharp.API.Modules.Admin;
|
|
|
|
namespace CS2_SimpleAdmin.Menus
|
|
{
|
|
public static class ManageServerMenu
|
|
{
|
|
public static void OpenMenu(CCSPlayerController admin)
|
|
{
|
|
if (admin.IsValid == false)
|
|
return;
|
|
|
|
var localizer = CS2_SimpleAdmin._localizer;
|
|
if (AdminManager.PlayerHasPermissions(admin, "@css/generic") == false)
|
|
{
|
|
admin.PrintToChat(localizer?["sa_prefix"] ??
|
|
"[SimpleAdmin] " +
|
|
(localizer?["sa_no_permission"] ?? "You do not have permissions to use this command")
|
|
);
|
|
return;
|
|
}
|
|
|
|
var menu = AdminMenu.CreateMenu(localizer?["sa_menu_server_manage"] ?? "Server Manage");
|
|
List<ChatMenuOptionData> options = [];
|
|
|
|
|
|
// permissions
|
|
var hasMap = AdminManager.CommandIsOverriden("css_map") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_map")) : AdminManager.PlayerHasPermissions(admin, "@css/changemap");
|
|
|
|
//bool hasMap = AdminManager.PlayerHasPermissions(admin, "@css/changemap");
|
|
|
|
// options added in order
|
|
|
|
if (hasMap)
|
|
{
|
|
options.Add(new ChatMenuOptionData(localizer?["sa_changemap"] ?? "Change Map", () => ChangeMapMenu(admin)));
|
|
}
|
|
|
|
options.Add(new ChatMenuOptionData(localizer?["sa_restart_game"] ?? "Restart Game", () => CS2_SimpleAdmin.RestartGame(admin)));
|
|
|
|
foreach (var menuOptionData in options)
|
|
{
|
|
var menuName = menuOptionData.Name;
|
|
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.Action.Invoke(); }, menuOptionData.Disabled);
|
|
}
|
|
|
|
AdminMenu.OpenMenu(admin, menu);
|
|
}
|
|
|
|
private static void ChangeMapMenu(CCSPlayerController admin)
|
|
{
|
|
var menu = AdminMenu.CreateMenu(CS2_SimpleAdmin._localizer?["sa_changemap"] ?? "Change Map");
|
|
List<ChatMenuOptionData> options = [];
|
|
|
|
var maps = CS2_SimpleAdmin.Instance.Config.DefaultMaps;
|
|
options.AddRange(maps.Select(map => new ChatMenuOptionData(map, () => ExecuteChangeMap(admin, map, false))));
|
|
|
|
var wsMaps = CS2_SimpleAdmin.Instance.Config.WorkshopMaps;
|
|
options.AddRange(wsMaps.Select(map => new ChatMenuOptionData($"{map.Key} (WS)", () => ExecuteChangeMap(admin, map.Value?.ToString() ?? map.Key, true))));
|
|
|
|
foreach (var menuOptionData in options)
|
|
{
|
|
var menuName = menuOptionData.Name;
|
|
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.Action.Invoke(); }, menuOptionData.Disabled);
|
|
}
|
|
|
|
AdminMenu.OpenMenu(admin, menu);
|
|
}
|
|
|
|
private static void ExecuteChangeMap(CCSPlayerController admin, string mapName, bool workshop)
|
|
{
|
|
if (workshop)
|
|
CS2_SimpleAdmin.Instance.ChangeWorkshopMap(admin, mapName);
|
|
else
|
|
CS2_SimpleAdmin.Instance.ChangeMap(admin, mapName);
|
|
}
|
|
}
|
|
} |