package com.lyndir.omicron.cli.command; import com.google.common.base.Splitter; import com.google.common.collect.Iterators; import com.lyndir.omicron.api.*; import com.lyndir.omicron.cli.OmicronCLI; import java.util.Iterator; import java.util.Optional; /** * <i>10 16, 2012</i> * * @author lhunath */ @CommandGroup(parent = AddCommand.class, name = "game", abbr = "g", desc = "Add things to an Omicron game that is being built.") public class AddGameCommand extends Command { public AddGameCommand(final OmicronCLI omicron) { super( omicron ); } @SubCommand(abbr = "p", desc = "The players that will compete in this game.") public void player(final Iterator<String> tokens) { Optional<IPlayer> localPlayerOptional = getOmicron().getLocalPlayer(); if (localPlayerOptional.isPresent()) { err( "There is already a local player: %s", localPlayerOptional.get().getName() ); return; } IGame.IBuilder gameBuilder = getOmicron().getBuilders().getGameBuilder(); if (gameBuilder == null) { err( "No game build to add game properties to. Begin with the 'build' command." ); return; } String value = Iterators.getOnlyElement( tokens, null ); if (value == null) { err( "Missing definition of player to add. Syntax: name,primary color,secondary color" ); return; } Iterator<String> playerValueIt = Splitter.on( ',' ).limit( 3 ).split( value ).iterator(); String playerName = playerValueIt.next(); String playerPrimaryColor = playerValueIt.next(); String playerSecondaryColor = Iterators.getOnlyElement( playerValueIt ); IPlayer newPlayer = gameBuilder.addPlayer( getOmicron().getLocalKey(), playerName, // Color.of( playerPrimaryColor ), Color.of( playerSecondaryColor ) ); getOmicron().setLocalPlayer( newPlayer ); Security.activatePlayer( (Player) newPlayer ); inf( "Added player to game: %s", newPlayer ); } }