feat: implement claimlink unlink
This commit is contained in:
@@ -67,7 +67,7 @@ public static class ClaimLinkChatCommand
|
||||
Array.Empty<ICommandArgumentParser>(), true, Cancel),
|
||||
|
||||
new(new[] { "unlink", "ul" }, "Remove a claim you own from its claim link.",
|
||||
new ICommandArgumentParser[] { p.Word("claim") }, true, Unlink),
|
||||
new ICommandArgumentParser[] { p.Word("groupname"), p.IntRange("claim", 0, 999) }, true, Unlink),
|
||||
|
||||
new(new[] { "kick" }, "Force-unlink another player's claim from the link (Owner/Op).",
|
||||
new ICommandArgumentParser[] { p.OnlinePlayer("playername"), p.Word("claim") }, true, Kick),
|
||||
@@ -189,7 +189,29 @@ public static class ClaimLinkChatCommand
|
||||
}
|
||||
public static TextCommandResult Confirm(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink confirm");
|
||||
public static TextCommandResult Cancel(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink cancel");
|
||||
public static TextCommandResult Unlink(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink unlink");
|
||||
public static TextCommandResult Unlink(TextCommandCallingArgs args)
|
||||
{
|
||||
string groupName = (string)args[0];
|
||||
int claimIndex = (int)args[1];
|
||||
|
||||
TextCommandResult? err = TryResolveGroup(groupName, out PlayerGroup group);
|
||||
if (err != null) return err;
|
||||
|
||||
err = TryResolveClaimLink(group, out ClaimLink link);
|
||||
if (err != null) return err;
|
||||
|
||||
string playerUid = args.Caller.Player.PlayerUID;
|
||||
|
||||
ClaimLinkMember? member = link.Members.Find(m => m.OwnerPlayerUid == playerUid);
|
||||
if (member == null || !member.LocalClaimIndices.Remove(claimIndex))
|
||||
return TextCommandResult.Error($"Claim {claimIndex} is not linked into '{groupName}' by you.");
|
||||
|
||||
if (member.LocalClaimIndices.Count == 0)
|
||||
link.Members.Remove(member);
|
||||
|
||||
ClaimLinkModSystem.Registry.Save();
|
||||
return TextCommandResult.Success($"Unlinked claim {claimIndex} from '{groupName}'.");
|
||||
}
|
||||
public static TextCommandResult Kick(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink kick");
|
||||
public static TextCommandResult Delete(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink delete");
|
||||
public static TextCommandResult TransferOwnership(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink transferownership");
|
||||
|
||||
Reference in New Issue
Block a user