Skip to content

Commit

Permalink
Added player search in the permissions tab
Browse files Browse the repository at this point in the history
Added Select button in Permissions which move the admin to Players tab (with the player selected)
Added Select Entity button in Players tab which move the admin to Entities tab (if enabled)
  • Loading branch information
raulssorban committed Mar 19, 2023
1 parent d9a01a2 commit 3f9ddc1
Showing 1 changed file with 53 additions and 5 deletions.
58 changes: 53 additions & 5 deletions Carbon.Core/Carbon.Common/src/Carbon/Modules/AdminModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
using ProtoBuf;
using UnityEngine;
using static ConsoleSystem;
using Color = UnityEngine.Color;
using Pool = Facepunch.Pool;
using StringEx = Carbon.Extensions.StringEx;

Expand Down Expand Up @@ -1297,6 +1298,10 @@ public Tab FindTab(string id)
{
return Tabs.FirstOrDefault(x => x.Id == id);
}
public bool HasTab(string id)
{
return FindTab(id) != null;
}
public bool CallColumnRow(BasePlayer player, int column, int row, string[] args)
{
var ap = GetOrCreateAdminPlayer(player);
Expand Down Expand Up @@ -1963,15 +1968,15 @@ public static void RefreshPlayers(Tab tab, AdminPlayer ap)
{
AddPlayer(tab, ap, player);
}
if (!onlinePlayers.Any()) tab.AddText(0, "No offline players found.", 10, "1 1 1 0.4");
if (onlinePlayers.Count() == 0) tab.AddText(0, "No online players found.", 10, "1 1 1 0.4");

tab.AddName(0, "Offline");
var offlinePlayers = BasePlayer.allPlayerList.Where(x => x.userID.IsSteamId() && !x.IsConnected);
foreach (var player in offlinePlayers)
{
AddPlayer(tab, ap, player);
}
if (!offlinePlayers.Any()) tab.AddText(0, "No offline players found.", 10, "1 1 1 0.4");
if (offlinePlayers.Count() == 0) tab.AddText(0, "No offline players found.", 10, "1 1 1 0.4");
}
public static void AddPlayer(Tab tab, AdminPlayer ap, BasePlayer player)
{
Expand Down Expand Up @@ -2067,6 +2072,19 @@ public static void ShowInfo(Tab tab, AdminPlayer aap, BasePlayer player)
player.EndSleeping();
}, null);
}));

if (Singleton.HasTab("entities"))
{
tab.AddButton(1, "Select Entity", ap2 =>
{
Singleton.SetTab(ap2.Player, "entities");
var tab = Singleton.GetTab(ap2.Player);
ap2.SetStorage("selectedent", player);
EntitiesTab.DrawEntities(tab, ap2);
EntitiesTab.DrawEntitySettings(tab, player, 1, ap2);
});
}

tab.AddInput(1, "PM", null, (ap, args) => { player.ChatMessage($"[{ap.Player.displayName}]: {args.ToString(" ")}"); });
if (aap.Player.spectateFilter != player.UserIDString)
{
Expand Down Expand Up @@ -2141,6 +2159,7 @@ public class PermissionsTab
{
internal static Permission permission;
internal static string PluginFilter;
internal static string PlayerFilter;

public static Tab Get()
{
Expand Down Expand Up @@ -2193,10 +2212,29 @@ public static Tab Get()

public static void GeneratePlayers(Tab tab, Permission perms, AdminPlayer ap)
{
var filter = PlayerFilter?.Trim().ToLower();
var players = BasePlayer.allPlayerList.Where(x =>
{
if (!x.userID.IsSteamId()) return false;
if (!string.IsNullOrEmpty(filter))
{
return x.displayName.ToLower().Contains(filter) || x.UserIDString.Contains(filter);
}
return true;
});

tab.ClearColumn(1);
tab.AddName(1, "Players", TextAnchor.MiddleLeft);
{
foreach (var player in BasePlayer.allPlayerList.Where(x => x.userID.IsSteamId()))
tab.AddInput(1, "Search", () => PlayerFilter, (ap, args) =>
{
PlayerFilter = args.ToString(" ");
GeneratePlayers(tab, perms, ap);
});

foreach (var player in players)
{
tab.AddRow(1, new Tab.OptionButton($"{player.displayName} ({player.userID})", instance2 =>
{
Expand All @@ -2213,17 +2251,27 @@ public static void GeneratePlayers(Tab tab, Permission perms, AdminPlayer ap)
}
public static void GeneratePlugins(Tab tab, AdminPlayer ap, Permission permission, BasePlayer player, string selectedGroup)
{
var filter = PluginFilter?.Trim().ToLower();
var plugins = Community.Runtime.Plugins.Plugins.Where(x =>
{
if (!string.IsNullOrEmpty(PluginFilter))
if (!string.IsNullOrEmpty(filter))
{
return x.permission.GetPermissions().Any(y => y.StartsWith(x.Name.ToLower()) && x.Name.Trim().ToLower().Contains(PluginFilter.Trim().ToLower()));
return x.permission.GetPermissions().Any(y => y.StartsWith(x.Name.ToLower()) && x.Name.Trim().ToLower().Contains(filter));
}
return x.permission.GetPermissions().Any(y => y.StartsWith(x.Name.ToLower()));
});

tab.ClearColumn(2);
tab.AddButton(2, "Select", ap2 =>
{
Singleton.SetTab(ap.Player, "players");
var tab = Singleton.GetTab(ap.Player);
ap.SetStorage("playerfilterpl", player);
PlayersTab.AddInitial(tab, ap);
PlayersTab.RefreshPlayers(tab, ap);
PlayersTab.ShowInfo(tab, ap, player);
});
tab.AddName(2, "Plugins", TextAnchor.MiddleLeft);
{
tab.AddInput(2, "Search", () => PluginFilter, (ap, args) =>
Expand Down

0 comments on commit 3f9ddc1

Please sign in to comment.