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