feat: gate claim link info detail by membership/admin, count members with no claims
This commit is contained in:
@@ -543,7 +543,11 @@ public static class ClaimLinkChatCommand
|
|||||||
if (err != null)
|
if (err != null)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
return TextCommandResult.Success(FormatInfo(groupName, group.Uid));
|
IPlayer player = args.Caller.Player;
|
||||||
|
bool showDetails =
|
||||||
|
player.HasPrivilege(Privilege.controlserver) || player.GetGroup(group.Uid) != null;
|
||||||
|
|
||||||
|
return TextCommandResult.Success(FormatInfo(groupName, group.Uid, showDetails));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TextCommandResult List(TextCommandCallingArgs args)
|
public static TextCommandResult List(TextCommandCallingArgs args)
|
||||||
@@ -585,7 +589,7 @@ public static class ClaimLinkChatCommand
|
|||||||
return string.IsNullOrEmpty(claim.Description) ? $"claim {claimIndex}" : claim.Description;
|
return string.IsNullOrEmpty(claim.Description) ? $"claim {claimIndex}" : claim.Description;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string FormatInfo(string groupName, int groupId)
|
private static string FormatInfo(string groupName, int groupId, bool showDetails)
|
||||||
{
|
{
|
||||||
int memberCount = ClaimLinkModSystem.Registry.MemberCountForGroup(groupId);
|
int memberCount = ClaimLinkModSystem.Registry.MemberCountForGroup(groupId);
|
||||||
|
|
||||||
@@ -597,6 +601,13 @@ public static class ClaimLinkChatCommand
|
|||||||
foreach (string uid in ClaimLinkModSystem.Registry.MemberUidsForGroup(groupId))
|
foreach (string uid in ClaimLinkModSystem.Registry.MemberUidsForGroup(groupId))
|
||||||
{
|
{
|
||||||
string name = ClaimLinkModSystem.World.PlayerByUid(uid)?.PlayerName ?? uid;
|
string name = ClaimLinkModSystem.World.PlayerByUid(uid)?.PlayerName ?? uid;
|
||||||
|
|
||||||
|
if (!showDetails)
|
||||||
|
{
|
||||||
|
sb.AppendLine($" {name}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
IEnumerable<string> claims = ClaimLinkModSystem
|
IEnumerable<string> claims = ClaimLinkModSystem
|
||||||
.Registry.ClaimsForPlayerInGroup(uid, groupId)
|
.Registry.ClaimsForPlayerInGroup(uid, groupId)
|
||||||
.Select(i => DescribeClaim(uid, i));
|
.Select(i => DescribeClaim(uid, i));
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ public class ClaimLinkRegistry
|
|||||||
public IEnumerable<string> MemberUidsForGroup(int groupId)
|
public IEnumerable<string> MemberUidsForGroup(int groupId)
|
||||||
{
|
{
|
||||||
foreach (var (uid, groups) in entries)
|
foreach (var (uid, groups) in entries)
|
||||||
if (groups.TryGetValue(groupId, out var claims) && claims.Count > 0)
|
if (groups.ContainsKey(groupId))
|
||||||
yield return uid;
|
yield return uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user