-
Notifications
You must be signed in to change notification settings - Fork 2
Closed
SwiTool/Command-Parser
#2Labels
Description
Hi,
First, I'd like to tell you you make a nice work.
I will lead you to the perfection ! 👍
I put several arguments as optionnal, and only the first is set as default.
In your code, I see that indeed, we should not set default value when creating arguments. But you do it in your examples, so...
Code :
parser.addCommand(Command.create("Start Game").addAlias("start")
.setDescription("Start the game with specified options")
.setAction(argues -> askStartGame(argues))
.addArgument(Argument.create("game_title")
.makeOptional().setDefault("My TinyTank Game")
.addArgument(Argument.create("max_players")
.makeOptional().setDefault("8")
.addArgument(Argument.create("max_ping")
.makeOptional().setDefault("100")
.addArgument(Argument.create("tcp_port")
.makeOptional().setDefault("13333")
.addArgument(Argument.create("udp_port")
.makeOptional().setDefault("13444")
.addArgument(Argument.create("friendlyfire")
.makeOptional().setDefault("noff")
.addOption(Argument.create("noff"))
.addOption(Argument.create("ff")))
.addArgument(Argument.create("ally_noblock")
.makeOptional().setDefault("block")
.addOption(Argument.create("noblock"))
.addOption(Argument.create("block")))
);
my custom 'help' output :
$ help
[help, commands] - Display the list of available commands
[start] [game_title] [max_players] [max_ping] [tcp_port] [udp_port] [noff|ff] [noblock|block] - Start the game with specified options
and the result :
$ start
No argument of name max_players found. Try 'help' to show more informations.
my askStartGame is approximatively the same:
private void askStartGame(ArrayList<Argument> args) {
ServerConfig.gameName = (Argument.fromName(args, "game_title"));
ServerConfig.maxAllowedPlayers = Integer.valueOf(Argument.fromName(args, "max_players"));
ServerConfig.maxAllowedPing = Integer.valueOf(Argument.fromName(args, "max_ping"));
ServerConfig.tcpPort = Integer.valueOf(Argument.fromName(args, "tcp_port"));
ServerConfig.udpPort = Integer.valueOf(Argument.fromName(args, "udp_port"));
ServerConfig.friendlyFire = (Argument.fromName(args, "friendlyfire").equals("ff"));
ServerConfig.allyNoBlock = (Argument.fromName(args, "ally_noblock").equals("noblock"));
this.setChanged();
this.notifyObservers("start game");
}
Thanks for your time :)
Reactions are currently unavailable