feat: implement claimlink unlink
This commit is contained in:
@@ -67,7 +67,7 @@ public static class ClaimLinkChatCommand
|
|||||||
Array.Empty<ICommandArgumentParser>(), true, Cancel),
|
Array.Empty<ICommandArgumentParser>(), true, Cancel),
|
||||||
|
|
||||||
new(new[] { "unlink", "ul" }, "Remove a claim you own from its claim link.",
|
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(new[] { "kick" }, "Force-unlink another player's claim from the link (Owner/Op).",
|
||||||
new ICommandArgumentParser[] { p.OnlinePlayer("playername"), p.Word("claim") }, true, Kick),
|
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 Confirm(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink confirm");
|
||||||
public static TextCommandResult Cancel(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink cancel");
|
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 Kick(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink kick");
|
||||||
public static TextCommandResult Delete(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink delete");
|
public static TextCommandResult Delete(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink delete");
|
||||||
public static TextCommandResult TransferOwnership(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink transferownership");
|
public static TextCommandResult TransferOwnership(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink transferownership");
|
||||||
|
|||||||
Reference in New Issue
Block a user