package com.faforever.client.game;
import com.faforever.client.remote.domain.GameInfoMessage;
import com.faforever.client.remote.domain.GameState;
import com.faforever.client.remote.domain.VictoryCondition;
import java.util.ArrayList;
import java.util.HashMap;
public class GameInfoMessageBuilder {
private GameInfoMessage gameInfoMessage;
private GameInfoMessageBuilder(Integer uid) {
gameInfoMessage = new GameInfoMessage();
gameInfoMessage.setUid(uid);
}
public static GameInfoMessageBuilder create(Integer uid) {
return new GameInfoMessageBuilder(uid);
}
public GameInfoMessageBuilder defaultValues() {
gameInfoMessage.setHost("Some host");
gameInfoMessage.setFeaturedMod(GameType.FAF.getString());
gameInfoMessage.setMapname("scmp_007");
gameInfoMessage.setMaxPlayers(4);
gameInfoMessage.setNumPlayers(1);
gameInfoMessage.setState(GameState.OPEN);
gameInfoMessage.setTitle("Test game");
gameInfoMessage.setTeams(new HashMap<>());
gameInfoMessage.setPasswordProtected(false);
return this;
}
public GameInfoMessage get() {
return gameInfoMessage;
}
public GameInfoMessageBuilder addTeamMember(String team, String playerName) {
if (!gameInfoMessage.getTeams().containsKey(team)) {
gameInfoMessage.getTeams().put(team, new ArrayList<>());
}
gameInfoMessage.getTeams().get(team).add(playerName);
return this;
}
public GameInfoMessageBuilder host(String host) {
gameInfoMessage.setHost(host);
return this;
}
public GameInfoMessageBuilder title(String title) {
gameInfoMessage.setTitle(title);
return this;
}
public GameInfoMessageBuilder mapName(String mapName) {
gameInfoMessage.setMapname(mapName);
return this;
}
public GameInfoMessageBuilder featuredMod(String mod) {
gameInfoMessage.setFeaturedMod(mod);
return this;
}
public GameInfoMessageBuilder numPlayers(int numPlayers) {
gameInfoMessage.setNumPlayers(numPlayers);
return this;
}
public GameInfoMessageBuilder maxPlayers(int maxPlayers) {
gameInfoMessage.setMaxPlayers(maxPlayers);
return this;
}
public GameInfoMessageBuilder gameType(VictoryCondition gameType) {
gameInfoMessage.setGameType(gameType);
return this;
}
public GameInfoMessageBuilder state(GameState state) {
gameInfoMessage.setState(state);
return this;
}
public GameInfoMessageBuilder passwordProtected(boolean passwordProtected) {
gameInfoMessage.setPasswordProtected(passwordProtected);
return this;
}
}