package server.login;
import java.util.ArrayList;
import java.util.List;
import server.Config;
import server.GameServer;
import server.Race;
import server.XRunnable;
public class ChooseRaceStep {
private final LoginHandler handler;
public ChooseRaceStep(LoginHandler handler) {
this.handler = handler;
}
public int run() throws Exception {
Object[] ret = (Object[])
GameServer.invokeAndWait(new XRunnable() {
public Object run() throws Exception {
List<String> raceStrings = new ArrayList<String>();
List<Integer> raceIds = new ArrayList<Integer>();
List<Race> races = new ArrayList<Race>();
for (Race race : Config.getRaces()) {
if (race.getAllowNewPlayers()) {
races.add(race);
}
}
if (races.isEmpty()) {
races.add(Config.getUnknownRace());
}
for (Race race : races) {
String menuName = race.getMenuName();
if (menuName == null) {
menuName = "*" + race.getName();
}
raceStrings.add(menuName + "@ZZZ - " + race.getDescription());
raceIds.add(race.getId());
}
return new Object[] { raceStrings.toArray(new String[] {}),
raceIds.toArray(new Integer[] {}) };
}
});
String[] menu = (String[]) ret[0];
Integer[] raceIds = (Integer[]) ret[1];
handler.println(false, "");
handler.println(false, "@10FThe following races are available:");
int choice = handler.doMenu(menu);
return raceIds[choice];
}
}