/*
Copyright (C) 2005 David Green <green@couchpotato.net>
All Rights Reserved.

This file is part of Aelfengard.

Aelfengard is proprietary software. You may not redistribute it without
prior written permission from the copyright holder.
*/

package server.login;


import server.Config;
import server.GameServer;
import server.Gender;
import server.Race;
import server.XRunnable;

public class ChooseGenderStep {

    private final LoginHandler handler;
    private final int raceId;
    
    public ChooseGenderStep(LoginHandler handler, int raceId) {
        this.handler = handler;
        this.raceId = raceId;
    }
    
    public Gender run() throws Exception {
        handler.println(true, "What gender would you like your character to be?");
        Gender[] genders = (Gender[])
        GameServer.invokeAndWait(new XRunnable() {
            public Object run() throws Exception {
                Race race = Config.getRace(raceId);
                if (race == null) {
                    race = Config.getUnknownRace();
                }
                return race.getGenders().toArray(new Gender[] {});
            }
        });
         
        if (genders.length == 0) {
            genders = new Gender[] { Gender.MALE, Gender.FEMALE };
        }
        String[] strings = new String[genders.length];
        for (int i = 0; i < strings.length; i++) {
            strings[i] = genders[i].getMenuName();
        }
        return genders[handler.doMenu(strings)];
    }

}