package pathgame.gameplay.menu;

import pathgame.gameplay.Gamestates;
import pathgame.gameplay.PlayerAbilities;

/**
 * A container for holding all options of the CharacterMenu
 *
 * @author julia
 */
public class CharacterMenu extends BaseMenu
{
    private final MenuButton[] options;

    /**
     * Contructor generating and initializing the CharacterMenu
     * 
     * @param id the id of the CharacterMenu
     * @param mainId the id to the MainMenu
     */
    public CharacterMenu(int id, int mainId)
    {
        super(id);
        options = new MenuButton[PlayerAbilities.ABILITIES.length + 1];
        for(int i = 0; i < options.length - 1; ++i)
        {
            options[i] = getAbilityOption(PlayerAbilities.ABILITIES[i]);
        }
        options[options.length - 1] = new MenuButton("Back", (gamestate) ->
        {
            setReturnId(mainId);
        });
    }

    private static MenuButton getAbilityOption(PlayerAbilities pa)
    {
        return new MenuButton(pa.getName(), (gamestate, level) ->
        {
            level.reset();
            level.getPlayer().setAbilities(pa);
            gamestate.setState(Gamestates.GAMEPLAY);
        });
    }

    /**
     * Returns the options of the CharacterMenu
     *
     * @return the options of the CharacterMenu
     */
    @Override
    public MenuButton[] getOptions()
    {
        return options;
    }
}
