Skip to content

Several optionnal items, first taken in account and other args are "deleted" #4

@SwiTool

Description

@SwiTool

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 :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions