Vote commands completions. (#8758)

This commit is contained in:
Pieter-Jan Briers
2022-06-13 01:52:23 +02:00
committed by GitHub
parent 04b015d5f1
commit 5142df1d87
2 changed files with 96 additions and 50 deletions

View File

@@ -13,8 +13,8 @@ namespace Content.Server.Voting
public sealed class CreateVoteCommand : IConsoleCommand public sealed class CreateVoteCommand : IConsoleCommand
{ {
public string Command => "createvote"; public string Command => "createvote";
public string Description => Loc.GetString("create-vote-command-description"); public string Description => Loc.GetString("cmd-createvote-desc");
public string Help => Loc.GetString("create-vote-command-help"); public string Help => Loc.GetString("cmd-createvote-help");
public void Execute(IConsoleShell shell, string argStr, string[] args) public void Execute(IConsoleShell shell, string argStr, string[] args)
{ {
@@ -26,7 +26,7 @@ namespace Content.Server.Voting
if (!Enum.TryParse<StandardVoteType>(args[0], ignoreCase: true, out var type)) if (!Enum.TryParse<StandardVoteType>(args[0], ignoreCase: true, out var type))
{ {
shell.WriteError(Loc.GetString("create-vote-command-invalid-vote-type")); shell.WriteError(Loc.GetString("cmd-createvote-invalid-vote-type"));
return; return;
} }
@@ -34,24 +34,37 @@ namespace Content.Server.Voting
if (shell.Player != null && !mgr.CanCallVote((IPlayerSession) shell.Player, type)) if (shell.Player != null && !mgr.CanCallVote((IPlayerSession) shell.Player, type))
{ {
shell.WriteError(Loc.GetString("create-vote-command-cannot-call-vote-now")); shell.WriteError(Loc.GetString("cmd-createvote-cannot-call-vote-now"));
return; return;
} }
mgr.CreateStandardVote((IPlayerSession?) shell.Player, type); mgr.CreateStandardVote((IPlayerSession?) shell.Player, type);
} }
public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
{
if (args.Length == 1)
{
var options = Enum.GetNames<StandardVoteType>();
return CompletionResult.FromHintOptions(options, Loc.GetString("cmd-createvote-arg-vote-type"));
}
return CompletionResult.Empty;
}
} }
[AdminCommand(AdminFlags.Admin)] [AdminCommand(AdminFlags.Admin)]
public sealed class CreateCustomCommand : IConsoleCommand public sealed class CreateCustomCommand : IConsoleCommand
{ {
private const int MaxArgCount = 10;
public string Command => "customvote"; public string Command => "customvote";
public string Description => Loc.GetString("create-custom-command-description"); public string Description => Loc.GetString("cmd-customvote-desc");
public string Help => Loc.GetString("create-custom-command-help"); public string Help => Loc.GetString("cmd-customvote-help");
public void Execute(IConsoleShell shell, string argStr, string[] args) public void Execute(IConsoleShell shell, string argStr, string[] args)
{ {
if (args.Length < 3 || args.Length > 10) if (args.Length < 3 || args.Length > MaxArgCount)
{ {
shell.WriteError(Loc.GetString("shell-need-between-arguments",("lower", 3), ("upper", 10))); shell.WriteError(Loc.GetString("shell-need-between-arguments",("lower", 3), ("upper", 10)));
return; return;
@@ -82,14 +95,26 @@ namespace Content.Server.Voting
if (eventArgs.Winner == null) if (eventArgs.Winner == null)
{ {
var ties = string.Join(", ", eventArgs.Winners.Select(c => args[(int) c])); var ties = string.Join(", ", eventArgs.Winners.Select(c => args[(int) c]));
chatMgr.DispatchServerAnnouncement(Loc.GetString("create-custom-command-on-finished-tie",("ties", ties))); chatMgr.DispatchServerAnnouncement(Loc.GetString("cmd-customvote-on-finished-tie",("ties", ties)));
} }
else else
{ {
chatMgr.DispatchServerAnnouncement(Loc.GetString("create-custom-command-on-finished-win",("winner", args[(int) eventArgs.Winner]))); chatMgr.DispatchServerAnnouncement(Loc.GetString("cmd-customvote-on-finished-win",("winner", args[(int) eventArgs.Winner])));
} }
}; };
} }
public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
{
if (args.Length == 1)
return CompletionResult.FromHint(Loc.GetString("cmd-customvote-arg-title"));
if (args.Length > MaxArgCount)
return CompletionResult.Empty;
var n = args.Length - 1;
return CompletionResult.FromHint(Loc.GetString("cmd-customvote-arg-option-n", ("n", n)));
}
} }
@@ -97,14 +122,14 @@ namespace Content.Server.Voting
public sealed class VoteCommand : IConsoleCommand public sealed class VoteCommand : IConsoleCommand
{ {
public string Command => "vote"; public string Command => "vote";
public string Description => Loc.GetString("vote-command-description"); public string Description => Loc.GetString("cmd-vote-desc");
public string Help => Loc.GetString("vote-command-help"); public string Help => Loc.GetString("cmd-vote-help");
public void Execute(IConsoleShell shell, string argStr, string[] args) public void Execute(IConsoleShell shell, string argStr, string[] args)
{ {
if (shell.Player == null) if (shell.Player == null)
{ {
shell.WriteError(Loc.GetString("vote-command-on-execute-error-must-be-player")); shell.WriteError(Loc.GetString("cmd-vote-on-execute-error-must-be-player"));
return; return;
} }
@@ -116,20 +141,20 @@ namespace Content.Server.Voting
if (!int.TryParse(args[0], out var voteId)) if (!int.TryParse(args[0], out var voteId))
{ {
shell.WriteError(Loc.GetString("vote-command-on-execute-error-invalid-vote-id")); shell.WriteError(Loc.GetString("cmd-vote-on-execute-error-invalid-vote-id"));
return; return;
} }
if (!int.TryParse(args[1], out var voteOption)) if (!int.TryParse(args[1], out var voteOption))
{ {
shell.WriteError(Loc.GetString("vote-command-on-execute-error-invalid-vote-options")); shell.WriteError(Loc.GetString("cmd-vote-on-execute-error-invalid-vote-options"));
return; return;
} }
var mgr = IoCManager.Resolve<IVoteManager>(); var mgr = IoCManager.Resolve<IVoteManager>();
if (!mgr.TryGetVote(voteId, out var vote)) if (!mgr.TryGetVote(voteId, out var vote))
{ {
shell.WriteError(Loc.GetString("vote-command-on-execute-error-invalid-vote")); shell.WriteError(Loc.GetString("cmd-vote-on-execute-error-invalid-vote"));
return; return;
} }
@@ -144,7 +169,7 @@ namespace Content.Server.Voting
} }
else else
{ {
shell.WriteError(Loc.GetString("vote-command-on-execute-error-invalid-option")); shell.WriteError(Loc.GetString("cmd-vote-on-execute-error-invalid-option"));
return; return;
} }
@@ -156,8 +181,8 @@ namespace Content.Server.Voting
public sealed class ListVotesCommand : IConsoleCommand public sealed class ListVotesCommand : IConsoleCommand
{ {
public string Command => "listvotes"; public string Command => "listvotes";
public string Description => Loc.GetString("list-votes-command-description"); public string Description => Loc.GetString("cmd-listvotes-desc");
public string Help => Loc.GetString("list-votes-command-help"); public string Help => Loc.GetString("cmd-listvotes-help");
public void Execute(IConsoleShell shell, string argStr, string[] args) public void Execute(IConsoleShell shell, string argStr, string[] args)
{ {
@@ -174,8 +199,8 @@ namespace Content.Server.Voting
public sealed class CancelVoteCommand : IConsoleCommand public sealed class CancelVoteCommand : IConsoleCommand
{ {
public string Command => "cancelvote"; public string Command => "cancelvote";
public string Description => Loc.GetString("cancel-vote-command-description"); public string Description => Loc.GetString("cmd-cancelvote-desc");
public string Help => Loc.GetString("cancel-vote-command-help"); public string Help => Loc.GetString("cmd-cancelvote-help");
public void Execute(IConsoleShell shell, string argStr, string[] args) public void Execute(IConsoleShell shell, string argStr, string[] args)
{ {
@@ -183,17 +208,32 @@ namespace Content.Server.Voting
if (args.Length < 1) if (args.Length < 1)
{ {
shell.WriteError(Loc.GetString("cancel-vote-command-on-execute-error-missing-vote-id")); shell.WriteError(Loc.GetString("cmd-cancelvote-error-missing-vote-id"));
return; return;
} }
if (!int.TryParse(args[0], out var id) || !mgr.TryGetVote(id, out var vote)) if (!int.TryParse(args[0], out var id) || !mgr.TryGetVote(id, out var vote))
{ {
shell.WriteError(Loc.GetString("cancel-vote-command-on-execute-error-invalid-vote-id")); shell.WriteError(Loc.GetString("cmd-cancelvote-error-invalid-vote-id"));
return; return;
} }
vote.Cancel(); vote.Cancel();
} }
public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
{
var mgr = IoCManager.Resolve<IVoteManager>();
if (args.Length == 1)
{
var options = mgr.ActiveVotes
.OrderBy(v => v.Id)
.Select(v => new CompletionOption(v.Id.ToString(), v.Title));
return CompletionResult.FromHintOptions(options, Loc.GetString("cmd-cancelvote-arg-id"));
}
return CompletionResult.Empty;
}
} }
} }

View File

@@ -1,37 +1,43 @@
## CreateVoteCommand ### Voting system related console commands
create-vote-command-description = Creates a vote ## 'createvote' command
create-vote-command-help = Usage: createvote <'restart'|'preset'>
create-vote-command-cannot-call-vote-now = You can't call a vote right now!
create-vote-command-invalid-vote-type = You can't call a vote right now!
## CreateCustomCommand cmd-createvote-desc = Creates a vote
cmd-createvote-help = Usage: createvote <'restart'|'preset'|'map'>
cmd-createvote-cannot-call-vote-now = You can't call a vote right now!
cmd-createvote-invalid-vote-type = Invalid vote type
cmd-createvote-arg-vote-type = <vote type>
create-custom-command-description = Creates a custom vote ## 'customvote' command
create-custom-command-help = customvote <title> <option1> <option2> [option3...]
create-custom-command-on-finished-tie = Tie between {$ties}!
create-custom-command-on-finished-win = {$winner} wins!
## VoteCommand cmd-customvote-desc = Creates a custom vote
cmd-customvote-help = Usage: customvote <title> <option1> <option2> [option3...]
cmd-customvote-on-finished-tie = Tie between {$ties}!
cmd-customvote-on-finished-win = {$winner} wins!
cmd-customvote-arg-title = <title>
cmd-customvote-arg-option-n = <option{ $n }>
vote-command-description = Votes on an active vote ## 'vote' command
vote-command-help = vote <voteId> <option>
vote-command-cannot-call-vote-now = You can't call a vote right now!
vote-command-on-execute-error-must-be-player = Must be a player
vote-command-on-execute-error-invalid-vote-id = Invalid vote ID
vote-command-on-execute-error-invalid-vote-options = Invalid vote options
vote-command-on-execute-error-invalid-vote = Invalid vote
vote-command-on-execute-error-invalid-option = Invalid option
## ListVotesCommand cmd-vote-desc = Votes on an active vote
cmd-vote-help = vote <voteId> <option>
cmd-vote-cannot-call-vote-now = You can't call a vote right now!
cmd-vote-on-execute-error-must-be-player = Must be a player
cmd-vote-on-execute-error-invalid-vote-id = Invalid vote ID
cmd-vote-on-execute-error-invalid-vote-options = Invalid vote options
cmd-vote-on-execute-error-invalid-vote = Invalid vote
cmd-vote-on-execute-error-invalid-option = Invalid option
list-votes-command-description = Lists currently active votes ## 'listvotes' command
list-votes-command-help = Usage: listvotes
## CancelVoteCommand cmd-listvotes-desc = Lists currently active votes
cmd-listvotes-help = Usage: listvotes
cancel-vote-command-description = Cancels an active vote ## 'cancelvote' command
cancel-vote-command-help = Usage: cancelvote <id>
You can get the ID from the listvotes command. cmd-cancelvote-desc = Cancels an active vote
cancel-vote-command-on-execute-error-invalid-vote-id = Invalid vote ID cmd-cancelvote-help = Usage: cancelvote <id>
cancel-vote-command-on-execute-error-missing-vote-id = Missing ID You can get the ID from the listvotes command.
cmd-cancelvote-error-invalid-vote-id = Invalid vote ID
cmd-cancelvote-error-missing-vote-id = Missing ID
cmd-cancelvote-arg-id = <id>