Example usage for com.badlogic.gdx.utils Align topLeft

List of usage examples for com.badlogic.gdx.utils Align topLeft

Introduction

In this page you can find the example usage for com.badlogic.gdx.utils Align topLeft.

Prototype

int topLeft

To view the source code for com.badlogic.gdx.utils Align topLeft.

Click Source Link

Usage

From source file:com.agateau.ui.UiBuilder.java

License:Apache License

private static int parseAlign(XmlReader.Element element) {
    String alignText = element.getAttribute("align", "");
    if (alignText.isEmpty()) {
        return -1;
    }/*from   w w w.j  a  v  a 2  s.  com*/
    if (alignText.equals("center")) {
        return Align.center;
    } else if (alignText.equals("centerLeft")) {
        return Align.left;
    } else if (alignText.equals("centerRight")) {
        return Align.right;
    } else if (alignText.equals("topLeft")) {
        return Align.topLeft;
    } else if (alignText.equals("topCenter")) {
        return Align.top;
    } else if (alignText.equals("topRight")) {
        return Align.topRight;
    } else if (alignText.equals("bottomLeft")) {
        return Align.bottomLeft;
    } else if (alignText.equals("bottomCenter")) {
        return Align.bottom;
    } else if (alignText.equals("bottomRight")) {
        return Align.bottomRight;
    } else {
        throw new RuntimeException("Unknown value of 'align': " + alignText);
    }
}

From source file:com.forerunnergames.peril.client.ui.screens.menus.AbstractMenuScreen.java

License:Open Source License

protected final void addSubTitle(final String text) {
    Arguments.checkIsNotNull(text, "text");

    final int mainTitlePaddingTop = 5;
    final int subtitleHeight = 30;
    final int subtitlePaddingTop = 4;
    final int subtitlePaddingBottom = 1;
    final int subtitleAlignment = Align.topLeft;

    subTitleLabel.setText(text);/*from   w  w  w .  j  a v a  2 s . c  om*/
    subTitleLabel.setAlignment(subtitleAlignment);

    // @formatter:off
    titleTable.row();
    titleTable.add(subTitleLabel).expandX().height(subtitleHeight).fill().align(subtitleAlignment)
            .padTop(subtitlePaddingTop).padBottom(subtitlePaddingBottom);
    titlesTableCell.height(
            titlesTableCell.getPrefHeight() + subtitleHeight + subtitlePaddingTop + subtitlePaddingBottom)
            .padTop(mainTitlePaddingTop);
    titleBackgroundCell.height(titleBackgroundCell.getPrefHeight() + subtitleHeight + subtitlePaddingTop
            + subtitlePaddingBottom + mainTitlePaddingTop);
    // @formatter:on
}

From source file:com.forerunnergames.peril.client.ui.screens.menus.modes.classic.creategame.ClassicGameModeCreateGameMenuScreen.java

License:Open Source License

public ClassicGameModeCreateGameMenuScreen(final MenuScreenWidgetFactory widgetFactory,
        final ScreenChanger screenChanger, final ScreenSize screenSize, final MouseInput mouseInput,
        final Batch batch, final CountryCounter countryCounter, final MBassador<Event> eventBus)

{
    super(widgetFactory, screenChanger, screenSize, mouseInput, batch, eventBus);

    Arguments.checkIsNotNull(widgetFactory, "widgetFactory");
    Arguments.checkIsNotNull(countryCounter, "countryCounter");

    this.widgetFactory = widgetFactory;
    this.countryCounter = countryCounter;

    errorDialog = createErrorDialog();/*from   w ww  .  jav  a2  s. c  o  m*/

    addTitle(TITLE_TEXT, Align.bottomLeft, 40);
    addSubTitle(SUBTITLE_TEXT);

    playerNameTextField = widgetFactory.createPlayerNameTextField();
    clanAcronymTextField = widgetFactory.createClanAcronymTextField();
    serverNameTextField = widgetFactory.createServerNameTextField();

    clanAcronymCheckBox = widgetFactory.createClanAcronymCheckBox(new ChangeListener() {
        @Override
        public void changed(final ChangeEvent event, final Actor actor) {
            clanAcronymTextField.setText(clanAcronymCheckBox.isChecked() ? clanAcronymTextField.getText() : "");
            clanAcronymTextField.setDisabled(!clanAcronymCheckBox.isChecked());
        }
    });

    clanAcronymCheckBox.setChecked(!clanAcronymTextField.getText().isEmpty());
    clanAcronymTextField.setDisabled(!clanAcronymCheckBox.isChecked());

    // @formatter:off
    humanPlayerLimitLabel = widgetFactory
            .createPlayerLimitLabel(String.valueOf(InputSettings.INITIAL_CLASSIC_MODE_HUMAN_PLAYER_LIMIT));
    aiPlayerLimitLabel = widgetFactory
            .createPlayerLimitLabel(String.valueOf(InputSettings.INITIAL_CLASSIC_MODE_AI_PLAYER_LIMIT));
    playMapNameLabel = widgetFactory.createPlayMapNameLabel();
    totalCountryCount = calculateCurrentPlayMapTotalCountryCount();
    // @formatter:on

    customizeHumanPlayersButton = widgetFactory
            .createCustomizePlayersButton(new ClickListener(Input.Buttons.LEFT) {
                @Override
                public void clicked(final InputEvent event, final float x, final float y) {
                    // TODO Show Players Dialog.

                    updateHumanPlayerLimit();
                    updateWinPercentSelectBoxItems();
                }
            });

    customizeAiPlayersButton = widgetFactory
            .createCustomizePlayersButton(new ClickListener(Input.Buttons.LEFT) {
                @Override
                public void clicked(final InputEvent event, final float x, final float y) {
                    // TODO Show Players Dialog.

                    updateAiPlayerLimit();
                    updateWinPercentSelectBoxItems();
                }
            });

    customizePlayMapButton = widgetFactory.createCustomizePlayMapButton(new ClickListener(Input.Buttons.LEFT) {
        @Override
        public void clicked(final InputEvent event, final float x, final float y) {
            // TODO Show Play Map Dialog.

            // TODO Add refresh button to Play Map Dialog to re-load play maps.
            playMaps = loadPlayMaps();

            currentPlayMap = nextPlayMap();
            playMapNameLabel.setText(currentPlayMap.getName());
            totalCountryCount = calculateCurrentPlayMapTotalCountryCount();
            updateWinPercentSelectBoxItems();
        }
    });

    // @formatter:off
    spectatorLimitSelectBox = widgetFactory.createSpectatorsSelectBox();
    final Array<Integer> spectatorLimits = new Array<>(
            ClassicGameRules.MAX_SPECTATORS - ClassicGameRules.MIN_SPECTATORS + 1);
    for (int i = ClassicGameRules.MIN_SPECTATORS; i <= ClassicGameRules.MAX_SPECTATORS; ++i) {
        spectatorLimits.add(i);
    }
    spectatorLimitSelectBox.setItems(spectatorLimits);
    spectatorLimitSelectBox.setSelected(InputSettings.INITIAL_SPECTATOR_LIMIT);
    // @formatter:off

    // @formatter:on
    initialCountryAssignmentSelectBox = widgetFactory.createInitialCountryAssignmentSelectBox();
    final Array<String> initialCountryAssignments = new Array<>(InitialCountryAssignment.count());
    for (final InitialCountryAssignment initialCountryAssignment : InitialCountryAssignment.values()) {
        initialCountryAssignments.add(Strings.toProperCase(initialCountryAssignment.name()));
    }
    initialCountryAssignmentSelectBox.setItems(initialCountryAssignments);
    initialCountryAssignmentSelectBox
            .setSelected(Strings.toProperCase(InputSettings.INITIAL_CLASSIC_MODE_COUNTRY_ASSIGNMENT.name()));
    // @formatter:on

    winPercentSelectBox = widgetFactory.createWinPercentSelectBox();
    updateWinPercentSelectBoxItems();
    selectInitialWinPercentItem();

    // @formatter:off
    playerSettingsSectionTitleLabel = widgetFactory.createPlayerSettingsSectionTitleLabel();
    playerNameSettingLabel = widgetFactory.createPlayerNameSettingLabel();
    clanTagSettingLabel = widgetFactory.createClanTagSettingLabel();
    gameSettingsSectionTitleLabel = widgetFactory.createGameSettingsSectionTitleLabel();
    serverNameSettingLabel = widgetFactory.createMenuSettingLabel(SERVER_NAME_SETTING_LABEL_TEXT);
    humanPlayerLimitSettingLabel = widgetFactory.createMenuSettingLabel(HUMAN_PLAYERS_SETTING_LABEL_TEXT);
    aiPlayerLimitSettingLabel = widgetFactory.createMenuSettingLabel(AI_PLAYERS_SETTING_LABEL_TEXT);
    spectatorLimitSettingLabel = widgetFactory.createMenuSettingLabel(SPECTATORS_SETTING_SETTING_LABEL_TEXT);
    playMapSettingLabel = widgetFactory.createMenuSettingLabel(PLAY_MAP_SETTING_LABEL_TEXT);
    winPercentSettingLabel = widgetFactory.createMenuSettingLabel(WIN_PERCENT_SETTING_LABEL_TEXT);
    initialCountryAssignmentSettingLabel = widgetFactory
            .createMenuSettingLabel(INITIAL_COUNTRY_ASSIGNMENT_SETTING_LABEL_TEXT);
    // @formatter:on

    final VerticalGroup verticalGroup = new VerticalGroup();
    verticalGroup.align(Align.topLeft);

    final Table playerSettingsTable = new Table().top().left();
    playerSettingsTable.add().height(23);
    playerSettingsTable.row();
    playerSettingsTable.add(playerSettingsSectionTitleLabel).size(540, 40).fill().padLeft(60).left();

    playerSettingsTable.row();

    final Table playerNameTable = new Table();
    playerNameTable.add(playerNameSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10);
    playerNameTable.add(playerNameTextField).size(270, 28).fill().left().spaceLeft(10);
    playerSettingsTable.add(playerNameTable).left();

    playerSettingsTable.row();

    final Table clanTable = new Table();
    clanTable.add(clanTagSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10);
    clanTable.add(clanAcronymCheckBox).size(20, 20).fill().left().spaceLeft(10).spaceRight(8);
    clanTable.add(clanAcronymTextField).size(80, 28).fill().left().spaceLeft(8);
    playerSettingsTable.add(clanTable).left();

    verticalGroup.addActor(playerSettingsTable);

    final Table gameSettingsTable = new Table().top().left();
    gameSettingsTable.row();
    gameSettingsTable.add().height(20);
    gameSettingsTable.row();
    gameSettingsTable.add(gameSettingsSectionTitleLabel).size(540, 40).fill().padLeft(60).left();

    gameSettingsTable.row();

    final Table serverNameTable = new Table();
    serverNameTable.add(serverNameSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10);
    serverNameTable.add(serverNameTextField).size(270, 28).fill().left().spaceLeft(10);
    gameSettingsTable.add(serverNameTable).left();

    gameSettingsTable.row();

    final Table playMapTable = new Table();
    playMapTable.add(playMapSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10);
    playMapTable.add(playMapNameLabel).size(238, 28).fill().left().spaceLeft(10).spaceRight(4);
    playMapTable.add(customizePlayMapButton).size(28, 28).fill().left().spaceLeft(4);
    gameSettingsTable.add(playMapTable).left();

    gameSettingsTable.row();

    final Table humanPlayersTable = new Table();
    humanPlayersTable.add(humanPlayerLimitSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10);
    humanPlayersTable.add(humanPlayerLimitLabel).size(76, 28).fill().left().spaceLeft(10).spaceRight(4);
    humanPlayersTable.add(customizeHumanPlayersButton).size(28, 28).fill().left().spaceLeft(4);
    gameSettingsTable.add(humanPlayersTable).left();

    gameSettingsTable.row();

    final Table aiPlayersTable = new Table();
    aiPlayersTable.add(aiPlayerLimitSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10);
    aiPlayersTable.add(aiPlayerLimitLabel).size(76, 28).fill().left().spaceLeft(10).spaceRight(4);
    aiPlayersTable.add(customizeAiPlayersButton).size(28, 28).fill().left().spaceLeft(4);
    gameSettingsTable.add(aiPlayersTable).left();

    gameSettingsTable.row();

    final Table spectatorsTable = new Table();
    spectatorsTable.add(spectatorLimitSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10);
    spectatorsTable.add(spectatorLimitSelectBox).size(108, 28).fill().left().spaceLeft(10);
    gameSettingsTable.add(spectatorsTable).left();

    gameSettingsTable.row();

    final Table winPercentTable = new Table();
    winPercentTable.add(winPercentSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10);
    winPercentTable.add(winPercentSelectBox).size(108, 28).fill().left().spaceLeft(10);
    gameSettingsTable.add(winPercentTable).left();

    gameSettingsTable.row();

    // @formatter:off
    final Table initialCountryAssignmentTable = new Table();
    initialCountryAssignmentTable.add(initialCountryAssignmentSettingLabel).size(150, 40).fill().padLeft(90)
            .left().spaceRight(10);
    initialCountryAssignmentTable.add(initialCountryAssignmentSelectBox).size(108, 28).fill().left()
            .spaceLeft(10);
    gameSettingsTable.add(initialCountryAssignmentTable).left();
    // @formatter:on

    verticalGroup.addActor(gameSettingsTable);

    addContent(verticalGroup);

    addBackButton(new ClickListener(Input.Buttons.LEFT) {
        @Override
        public void clicked(final InputEvent event, final float x, final float y) {
            contractMenuBar(new Runnable() {
                @Override
                public void run() {
                    toScreen(ScreenId.CLASSIC_GAME_MODE_MENU);
                }
            });
        }
    });

    forwardButton = addForwardButton(FORWARD_BUTTON_TEXT, new ChangeListener() {
        @Override
        public void changed(final ChangeEvent event, final Actor actor) {
            if (currentPlayMap.equals(PlayMapMetadata.NULL)) {
                errorDialog.setMessage(new DefaultMessage("Please select a valid map before continuing."));
                errorDialog.show();
                return;
            }

            final String playerName = playerNameTextField.getText();

            if (!GameSettings.isValidPlayerNameWithoutClanTag(playerName)) {
                errorDialog.setMessage(new DefaultMessage(
                        Strings.format("Invalid player name: \'{}\'\n\nValid player name rules:\n\n{}",
                                playerName, GameSettings.VALID_PLAYER_NAME_DESCRIPTION)));
                errorDialog.show();
                return;
            }

            final String clanAcronym = clanAcronymTextField.getText();

            if (!clanAcronymTextField.isDisabled() && !GameSettings.isValidHumanClanAcronym(clanAcronym)) {
                errorDialog.setMessage(new DefaultMessage(
                        Strings.format("Invalid clan tag: \'{}\'\n\nValid clan tag rules:\n\n{}", clanAcronym,
                                GameSettings.VALID_CLAN_ACRONYM_DESCRIPTION)));
                errorDialog.show();
                return;
            }

            final String playerNameWithOptionalClanTag = GameSettings
                    .getHumanPlayerNameWithOptionalClanTag(playerName, clanAcronym);
            final int humanPlayerLimit = getHumanPlayerLimit();
            final int aiPlayerLimit = getAiPlayerLimit();
            final int spectatorLimit = getSpectatorLimit();
            final int winPercent = winPercentSelectBox.getSelected();
            final InitialCountryAssignment initialCountryAssignment = InitialCountryAssignment
                    .valueOf(Strings.toCase(initialCountryAssignmentSelectBox.getSelected(), LetterCase.UPPER));
            final PersonLimits personLimits = PersonLimits.builder().humanPlayers(humanPlayerLimit)
                    .aiPlayers(aiPlayerLimit).spectators(spectatorLimit).build();
            final GameRules gameRules = GameRulesFactory.create(GameMode.CLASSIC, personLimits, winPercent,
                    totalCountryCount, initialCountryAssignment);
            final GameConfiguration gameConfig = new DefaultGameConfiguration(GameMode.CLASSIC, currentPlayMap,
                    gameRules);
            final String serverName = serverNameTextField.getText();

            if (!NetworkSettings.isValidServerName(serverName)) {
                errorDialog.setMessage(new DefaultMessage(
                        Strings.format("Invalid server name: \'{}\'\n\nValid server name rules:\n\n{}",
                                serverName, NetworkSettings.VALID_SERVER_NAME_DESCRIPTION)));
                errorDialog.show();
                return;
            }

            toScreen(ScreenId.MENU_TO_PLAY_LOADING);

            // The menu-to-play loading screen is now active & can therefore receive events.

            publishAsync(new CreateGameEvent(serverName, gameConfig, playerNameWithOptionalClanTag));
        }
    });
}

From source file:com.forerunnergames.peril.client.ui.screens.menus.modes.classic.joingame.ClassicGameModeJoinGameMenuScreen.java

License:Open Source License

public ClassicGameModeJoinGameMenuScreen(final MenuScreenWidgetFactory widgetFactory,
        final ScreenChanger screenChanger, final ScreenSize screenSize, final MouseInput mouseInput,
        final Batch batch, final MBassador<Event> eventBus) {
    super(widgetFactory, screenChanger, screenSize, mouseInput, batch, eventBus);

    Arguments.checkIsNotNull(widgetFactory, "widgetFactory");

    this.widgetFactory = widgetFactory;

    errorDialog = createErrorDialog();//from w  w  w  . j av a2 s  . co  m

    addTitle("JOIN GAME", Align.bottomLeft, 40);
    addSubTitle("CLASSIC MODE");

    playerNameTextField = widgetFactory.createPlayerNameTextField();
    clanAcronymTextField = widgetFactory.createClanAcronymTextField();
    serverAddressTextField = widgetFactory.createServerAddressTextField();

    clanAcronymCheckBox = widgetFactory.createClanAcronymCheckBox(new ChangeListener() {
        @Override
        public void changed(final ChangeEvent event, final Actor actor) {
            clanAcronymTextField.setText(clanAcronymCheckBox.isChecked() ? clanAcronymTextField.getText() : "");
            clanAcronymTextField.setDisabled(!clanAcronymCheckBox.isChecked());
        }
    });

    clanAcronymCheckBox.setChecked(!clanAcronymTextField.getText().isEmpty());
    clanAcronymTextField.setDisabled(!clanAcronymCheckBox.isChecked());

    playerSettingsSectionTitleLabel = widgetFactory.createPlayerSettingsSectionTitleLabel();
    playerNameSettingLabel = widgetFactory.createPlayerNameSettingLabel();
    clanTagSettingLabel = widgetFactory.createClanTagSettingLabel();
    gameSettingsSectionTitleLabel = widgetFactory.createGameSettingsSectionTitleLabel();
    serverAddressSettingLabel = widgetFactory.createMenuSettingLabel("Server Address");

    final VerticalGroup verticalGroup = new VerticalGroup();
    verticalGroup.align(Align.topLeft);

    // @formatter:off
    final Table playerSettingsTable = new Table().top().left();
    playerSettingsTable.add().height(23).colspan(5);
    playerSettingsTable.row();
    playerSettingsTable.add(playerSettingsSectionTitleLabel).size(538, 42).fill().padLeft(60).padRight(60)
            .left().colspan(5);
    playerSettingsTable.row();
    playerSettingsTable.add(playerNameSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10);
    playerSettingsTable.add(playerNameTextField).size(204, 28).fill().left().colspan(3).spaceLeft(10);
    playerSettingsTable.add().expandX().fill();
    playerSettingsTable.row();
    playerSettingsTable.add(clanTagSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10);
    playerSettingsTable.add(clanAcronymCheckBox).size(18, 18).fill().left().spaceLeft(10).spaceRight(10);
    playerSettingsTable.add(clanAcronymTextField).size(74, 28).fill().left().spaceLeft(10);
    playerSettingsTable.add().width(102).fill();
    playerSettingsTable.add().expandX().fill();
    verticalGroup.addActor(playerSettingsTable);
    // @formatter:on

    // @formatter:off
    final Table gameSettingsTable = new Table().top().left();
    gameSettingsTable.row();
    gameSettingsTable.add().height(18).colspan(3);
    gameSettingsTable.row();
    gameSettingsTable.add(gameSettingsSectionTitleLabel).size(538, 42).fill().padLeft(60).padRight(60).left()
            .colspan(3);
    gameSettingsTable.row();
    gameSettingsTable.add(serverAddressSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10);
    gameSettingsTable.add(serverAddressTextField).size(204, 28).fill().left().spaceLeft(10);
    gameSettingsTable.add().expandX().fill();
    verticalGroup.addActor(gameSettingsTable);
    // @formatter:on

    addContent(verticalGroup);

    addBackButton(new ClickListener(Input.Buttons.LEFT) {
        @Override
        public void clicked(final InputEvent event, final float x, final float y) {
            contractMenuBar(new Runnable() {
                @Override
                public void run() {
                    toScreen(ScreenId.CLASSIC_GAME_MODE_MENU);
                }
            });
        }
    });

    forwardButton = addForwardButton("JOIN GAME", new ChangeListener() {
        @Override
        public void changed(final ChangeEvent event, final Actor actor) {
            final String playerName = playerNameTextField.getText();

            if (!GameSettings.isValidPlayerNameWithoutClanTag(playerName)) {
                errorDialog.setMessage(new DefaultMessage(
                        Strings.format("Invalid player name: \'{}\'\n\nValid player name rules:\n\n{}",
                                playerName, GameSettings.VALID_PLAYER_NAME_DESCRIPTION)));
                errorDialog.show();
                return;
            }

            final String clanAcronym = clanAcronymTextField.getText();

            if (!clanAcronymTextField.isDisabled() && !GameSettings.isValidHumanClanAcronym(clanAcronym)) {
                errorDialog.setMessage(new DefaultMessage(
                        Strings.format("Invalid clan tag: \'{}\'\n\nValid clan tag rules:\n\n{}", clanAcronym,
                                GameSettings.VALID_CLAN_ACRONYM_DESCRIPTION)));
                errorDialog.show();
                return;
            }

            final String playerNameWithOptionalClanTag = GameSettings
                    .getHumanPlayerNameWithOptionalClanTag(playerName, clanAcronym);
            final String serverAddress = serverAddressTextField.getText();

            if (!NetworkSettings.isValidServerAddress(serverAddress)) {
                errorDialog.setMessage(new DefaultMessage(
                        Strings.format("Invalid server address: \'{}\'\n\nValid server address rules:\n\n{}",
                                serverAddress, NetworkSettings.VALID_SERVER_ADDRESS_DESCRIPTION)));
                errorDialog.show();
                return;
            }

            toScreen(ScreenId.MENU_TO_PLAY_LOADING);

            // The menu-to-play loading screen is now active & can therefore receive events.

            publishAsync(new JoinGameEvent(playerNameWithOptionalClanTag, serverAddress));
        }
    });
}

From source file:com.jmolina.orb.widgets.ui.Credit.java

License:Open Source License

/**
 * Constructor/*from  w ww  .  j a  va 2s .c o m*/
 *
 * @param am AssetManager
 * @param header Encabezado
 * @param body Texto descriptivo
 */
public Credit(AssetManager am, String header, String body) {
    super(am);

    links = new ArrayList<Label>();

    Label.LabelStyle bodyStyle = new Label.LabelStyle();
    bodyStyle.fontColor = new Color(Var.COLOR_LILAC_DARK);
    bodyStyle.font = new BitmapFont(Gdx.files.internal(Font.FONT_ROBOTO_REGULAR_30),
            findRegion(Atlas.FONT_ROBOTO_REGULAR_30));

    Label.LabelStyle headerStyle = new Label.LabelStyle();
    headerStyle.fontColor = new Color(Var.COLOR_GREEN_DARK);
    headerStyle.font = new BitmapFont(Gdx.files.internal(Font.FONT_ROBOTO_MEDIUM_45),
            findRegion(Atlas.FONT_ROBOTO_MEDIUM_45));

    this.body = new Label(body, bodyStyle);
    this.body.setTouchable(Touchable.disabled);
    this.body.setPosition(0f, 0f);
    this.body.setWidth(Utils.cell(10));
    this.body.setWrap(true);
    this.body.setAlignment(Align.topLeft);
    this.body.setHeight(this.body.getPrefHeight());

    this.header = new Label(header, headerStyle);
    this.header.setTouchable(Touchable.disabled);
    this.header.setPosition(0f, this.body.getPrefHeight());
    this.header.setSize(Utils.cell(10), Utils.cell(1));
    this.header.setAlignment(Align.topLeft);

    addActor(this.header);
    addActor(this.body);

    setHeight(this.header.getPrefHeight() + this.body.getPrefHeight());
}

From source file:com.nhydock.storymode.scenes.title.TitleSequence.java

@Override
public void init() {
    final TitleSequence ui = this;

    // create title sequence
    final Skin skin = manager.get(DataDirs.Home + "title.json", Skin.class);
    final Skin uiskin = shared.getResource(DataDirs.Home + "uiskin.json", Skin.class);

    //clouds/* w  w w.  j  av a  2s  .  co  m*/
    {

        Image goddess = new Image(uiskin, "goddess");
        goddess.setSize(32, 32);
        goddess.setPosition(getWidth(), getHeight() - 96f);
        goddess.setOrigin(Align.center);
        addActor(goddess);

        Image cloudsPan1 = new Image(new TiledDrawable(uiskin.getRegion("clouds")));
        Image cloudsPan2 = new Image(new TiledDrawable(uiskin.getRegion("clouds")));
        cloudsPan1.setWidth(getWidth() * 5);
        cloudsPan2.setWidth(getWidth() * 5);

        cloudsPan1.setPosition(0, 0, Align.topLeft);
        cloudsPan2.setPosition(0, 0, Align.topLeft);
        addActor(cloudsPan1);
        addActor(cloudsPan2);

        cloudsPan1.addAction(Actions.sequence(Actions.moveToAligned(getWidth(), 0, Align.topRight),
                Actions.delay(10f), Actions.parallel(Actions.moveBy(0, 140f, 3f, Interpolation.sineOut),
                        Actions.moveBy(getWidth() * 5, 0, 50f))));

        cloudsPan2.addAction(Actions.sequence(Actions.moveToAligned(getWidth(), 0, Align.topRight),
                Actions.delay(10f), Actions.parallel(Actions.moveBy(0, 80f, 3f, Interpolation.sineOut),
                        Actions.moveBy(getWidth() * 5, 0, 40f))));

        goddess.addAction(Actions.sequence(Actions.delay(20f),
                Actions.parallel(Actions.repeat(5, Actions.rotateBy(360, .4f)),
                        Actions.moveBy(-getWidth() - 32, 0f, 2f)),
                Actions.delay(1f),
                Actions.addAction(Actions.moveBy(0, getHeight(), 1f, Interpolation.sineIn), cloudsPan1),
                Actions.addAction(Actions.moveBy(0, getHeight(), 1f, Interpolation.sineIn), cloudsPan2)));
    }

    // initial text
    {
        Table textGrid = new Table();
        textGrid.setFillParent(true);
        textGrid.pad(40f);

        Label text = new Label(
                "This game is Shareware!\n\nThat means it's completely free to download and distribute.\n\nIf you'd like to be nice, you can donate and learn more at http://nhydock.github.io/Storymode",
                skin);
        text.setWrap(true);
        text.setAlignment(Align.center);
        text.addAction(Actions.sequence(Actions.alpha(0f), Actions.alpha(1f, 1f)));
        textGrid.add(text).expandX().fillX();
        text = new Label("~Thanks a bunch!", skin);
        text.setWrap(true);
        text.setAlignment(Align.right);
        text.addAction(Actions.sequence(Actions.alpha(0f), Actions.delay(3f), Actions.alpha(1f, 1f)));
        textGrid.row();
        textGrid.add(text).expandX().fillX().padRight(60f);
        textGrid.addAction(Actions.sequence(Actions.alpha(1f), Actions.delay(8f), Actions.alpha(0f, 2f),
                Actions.run(new PlayBGM(manager.get(DataDirs.Audio + "title.mp3", Music.class)))));
        addActor(textGrid);
    }

    // credits animation
    {
        Table textGrid = new Table();
        textGrid.setFillParent(true);
        textGrid.pad(40f);

        Label text = new Label("Graphics, Programming, Project Lead", skin);
        text.setAlignment(Align.center);
        textGrid.add(text).expandX().fillX();
        textGrid.row();
        text = new Label("Nicholas Hydock", skin);
        text.setAlignment(Align.center);
        textGrid.add(text).expandX().fillX();
        textGrid.row();
        text = new Label(" ", skin);
        text.setAlignment(Align.center);
        textGrid.add(text).expandX().fillX();
        textGrid.row();
        text = new Label("Ideas, Suggestions, Emotional Support, & Bros4Lyfe", skin);
        text.setAlignment(Align.center);
        textGrid.add(text).expandX().fillX();
        textGrid.row();
        text = new Label("Patrick Flanagan", skin);
        text.setAlignment(Align.center);
        textGrid.add(text).expandX().fillX();
        textGrid.row();
        text = new Label("Matthew Hydock", skin);
        text.setAlignment(Align.center);
        textGrid.add(text).expandX().fillX();
        textGrid.row();
        text = new Label("Andrew Hoffman", skin);
        text.setAlignment(Align.center);
        textGrid.add(text).expandX().fillX();

        textGrid.addAction(Actions.sequence(Actions.alpha(0f), Actions.delay(10f), Actions.alpha(1f, .75f),
                Actions.delay(4f), Actions.alpha(0f, .75f)));
        addActor(textGrid);
    }

    // display tool logos
    {
        Group group = new Group();
        Image tools = new Image(skin.getDrawable("tools"));
        tools.setPosition(getWidth() / 2 - tools.getWidth() / 2, getHeight() / 2 - tools.getHeight() / 2);
        Label label = new Label(
                "All music is licensed under Creative-Commons BY(-NC) or other permissive licenses.\nAll attribution can be found in the README",
                skin, "small");
        label.setPosition(getWidth() / 2f, getHeight() / 2f - 80f, Align.top);
        label.setAlignment(Align.center);
        group.addActor(tools);
        group.addActor(label);
        group.addAction(Actions.sequence(Actions.alpha(0f), Actions.delay(16f), Actions.alpha(1f, .75f),
                Actions.delay(4f), Actions.alpha(0f, .75f)));
        addActor(group);
    }

    // cool animation
    {
        Group cool = new Group();
        cool.setSize(getWidth(), getHeight());
        Group group = new Group();
        Image cliff = new Image(skin.getRegion("cliff"));
        group.addAction(Actions.sequence(Actions.moveTo(0, -cliff.getHeight()), Actions.delay(24f),
                Actions.moveTo(0, 0, 4f)));
        group.addActor(cliff);
        final Image character = new Image(skin.getRegion("back"));
        character.setSize(96f, 96f);
        group.addActor(character);
        character.addAction(
                Actions.sequence(Actions.moveTo(200f, 200f), Actions.delay(31f), Actions.run(new Runnable() {

                    @Override
                    public void run() {
                        character.setDrawable(skin.getDrawable("character"));
                    }

                }), Actions.moveTo(-character.getWidth() / 2, -character.getHeight(), 1f), Actions.delay(10f),
                        Actions.run(new Runnable() {

                            @Override
                            public void run() {
                                character.setDrawable(skin.getDrawable("back"));
                            }

                        }), Actions.moveTo(200f, 200f, 1f), Actions.delay(.2f), Actions.run(new Runnable() {

                            @Override
                            public void run() {
                                character.setDrawable(skin.getDrawable("character"));
                            }

                        })));

        Image castle = new Image(skin.getRegion("castle"));
        castle.addAction(
                Actions.sequence(Actions.moveToAligned(getWidth() - castle.getWidth(), 0f, Align.topLeft),
                        Actions.delay(24f), Actions.moveBy(0, getHeight(), 4f)));
        Image lightning = new Image(skin.getRegion("lightning"));
        lightning.setPosition(getWidth() - castle.getWidth(), getHeight() - castle.getHeight());
        lightning.addAction(Actions.sequence(Actions.alpha(0f), Actions.delay(29f), Actions.alpha(1f, .1f),
                Actions.delay(.3f), Actions.alpha(.3f, .3f), Actions.alpha(1f, .1f), Actions.delay(.3f),
                Actions.alpha(0f, 1f)));

        Image logo = new Image(skin.getRegion("logo"));
        logo.addAction(Actions.sequence(Actions.alpha(0f),
                Actions.moveTo(0, getHeight() - logo.getHeight() + 5f), Actions.delay(34f),
                Actions.alpha(1f, 1f),
                Actions.forever(Actions.sequence(Actions.moveTo(0, getHeight() - logo.getHeight() + 5f, 2f),
                        Actions.moveTo(0, getHeight() - logo.getHeight() - 5f, 2f)))));

        Table table = new Table();

        Label label = new Label("Title theme", skin, "small");
        label.setAlignment(Align.right);
        table.add(label).expandX().fillX();
        table.row();
        label = new Label("Anamanaguchi - Helix Nebula", skin, "small");
        label.setAlignment(Align.right);
        table.add(label).expandX().fillX();
        table.row();
        table.pad(10f);
        table.pack();
        table.addAction(Actions.sequence(Actions.alpha(0f), Actions.moveTo(getWidth() - table.getWidth(), 0),
                Actions.delay(40f), Actions.alpha(1f, 1f)));

        cool.addActor(castle);
        cool.addActor(lightning);
        cool.addActor(group);
        cool.addActor(logo);
        cool.addActor(table);

        cool.addAction(Actions.sequence(Actions.alpha(0f), Actions.delay(24f), Actions.alpha(1f),
                Actions.delay(40f), Actions.alpha(0f, 1f), Actions.delay(1f), Actions.run(new Runnable() {

                    @Override
                    public void run() {
                        SceneManager.switchToScene("title");
                    }

                }), Actions.delay(1.5f), Actions.run(new Runnable() {

                    @Override
                    public void run() {
                    }

                })));
        addActor(cool);

        final Label startLabel = new Label("Press Start", skin);
        startLabel.setPosition(getWidth() - 360f, 120f);
        startLabel.addAction(Actions.sequence(Actions.alpha(0f), Actions.delay(38f), Actions.alpha(1f, .3f),
                Actions.run(new Runnable() {

                    @Override
                    public void run() {
                        ui.addListener(new InputListener() {
                            @Override
                            public boolean touchDown(InputEvent evt, float x, float y, int pointer,
                                    int button) {
                                if (button == Buttons.LEFT) {
                                    SceneManager.switchToScene("newgame");
                                    return true;
                                }
                                return false;
                            }
                        });
                    }

                }), Actions.delay(24f), Actions.alpha(0f, 1f)));
        addActor(startLabel);

    }

    // make sure all initial steps are set
    act();

    addListener(new InputListener() {
        @Override
        public boolean keyDown(InputEvent evt, int keycode) {
            // skip the intro
            if (Input.ACCEPT.match(keycode) || Input.CANCEL.match(keycode)) {
                SceneManager.switchToScene("newgame");
                return true;
            }
            return false;
        }

        @Override
        public boolean touchDown(InputEvent evt, float x, float y, int pointer, int button) {
            if (button == Buttons.RIGHT) {
                SceneManager.switchToScene("newgame");
                return true;
            }
            return false;
        }
    });
}

From source file:com.prisonbreak.game.MapControlRenderer.java

private void loseGame() {
    // set state to PAUSE
    state = STATE.PAUSE;/* w w  w.ja v a 2s .  c o  m*/

    // notify Player
    dialogBoxLabel = new Label("Ouch!!! You have been found.", PrisonBreakGame.gameSkin, "custom");
    dialogBoxLabel.setPosition(0, 0);
    dialogBoxLabel.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() / 5);
    dialogBoxLabel.setAlignment(Align.topLeft);
    dialogBoxLabel.addListener(new InputListener() {
        @Override
        public boolean keyDown(InputEvent event, int keycode) {
            if (keycode == Keys.F) {
                state = STATE.LOSE;
                dialogBoxLabel.remove();
                resetInputProcessor();
            }
            return true;
        }
    });
    stage.addActor(dialogBoxLabel);
    stage.setKeyboardFocus(dialogBoxLabel);

    Gdx.input.setInputProcessor(stage);
}

From source file:com.prisonbreak.game.MapControlRenderer.java

private void showHideInventory() {
    // create an array of names of Player's items
    Array<String> names = new Array<String>();
    if (player.getInventory().size == 0) {
        names.add("Nothing");
    } else {/*from   www.  java 2 s .com*/
        for (Item item : player.getInventory()) {
            names.add(item.getItemName());
        }
    }

    // create the List panel to display the inventory
    inventory = new List(PrisonBreakGame.gameSkin, "dimmed");
    inventory.setItems(names);
    inventory.setSelectedIndex(0);
    inventory.setSize(Gdx.graphics.getWidth() / 6, Gdx.graphics.getHeight() / 2);
    inventory.setPosition(Gdx.graphics.getWidth() * 3 / 4 - inventory.getWidth() / 2,
            Gdx.graphics.getHeight() / 2 - inventory.getHeight() / 2);

    // create the description Label to display description of each item
    descLabel = new Label("", PrisonBreakGame.gameSkin, "custom-small");
    descLabel.setSize(Gdx.graphics.getWidth() / 6, Gdx.graphics.getHeight() / 4);
    descLabel.setPosition(inventory.getX() + inventory.getWidth(),
            inventory.getY() + inventory.getHeight() - descLabel.getHeight());
    descLabel.setAlignment(Align.topLeft);
    descLabel.setWrap(true);
    if (player.getInventory().size > 0) {
        descLabel.setText(player.getInventory().get(inventory.getSelectedIndex()).getDescription());
    }
    stage.addActor(descLabel);

    // create title: Inventory
    titleLabel = new Label("INVENTORY", PrisonBreakGame.gameSkin, "subtitle");
    titleLabel.setSize(inventory.getWidth(), titleLabel.getHeight() * 3 / 2);
    titleLabel.setPosition(inventory.getX(), inventory.getY() + inventory.getHeight());
    titleLabel.setAlignment(Align.center);
    stage.addActor(titleLabel);

    // add InputListener to inventory
    inventory.addListener(new InputListener() {
        @Override
        public boolean keyDown(InputEvent event, int keycode) {
            int currentIndex = inventory.getSelectedIndex();
            int upIndex = currentIndex - 1;
            int downIndex = currentIndex + 1;
            String desc = "";

            if (upIndex < 0)
                upIndex = inventory.getItems().size - 1;
            if (downIndex >= inventory.getItems().size)
                downIndex = 0;

            switch (keycode) {
            case Keys.UP:
                // scroll up the item objectItems
                inventory.setSelectedIndex(upIndex);

                // display the corresponding description in descLabel
                if (player.getInventory().size > 0)
                    desc = player.getInventory().get(upIndex).getDescription();
                descLabel.setText(desc);

                break;
            case Keys.DOWN:
                // scroll down the item objectItems
                inventory.setSelectedIndex(downIndex);

                // display the corresponding description in descLabel
                if (player.getInventory().size > 0)
                    desc = player.getInventory().get(downIndex).getDescription();
                descLabel.setText(desc);

                break;
            case Keys.I:
                // if the inventory is currently opened, press I again
                // to close

                descLabel.remove(); // remove actors
                inventory.remove();
                titleLabel.remove();

                state = STATE.ONGOING; // unpause the game

                resetInputProcessor(); // reset InputProcessor to this MapControlRenderer
                break;
            default:
                break;
            }

            return true;
        }
    });
    stage.addActor(inventory);
    stage.setKeyboardFocus(inventory);

    Gdx.input.setInputProcessor(stage); // change InputProcessor to stage
}

From source file:com.prisonbreak.game.MapControlRenderer.java

private void searchInteraction() {
    // if no items
    if (objectItems == null) {
        if (indexForMessageTree == messageTree.get(0).size) {
            state = STATE.ONGOING; // unpause the game
            interactHappen = false; // flip the flag again
            typeInteraction = TYPE_INTERACTION.NO_INTERACTION; // reset type of interaction to
                                                               // NO_INTERACTION
            indexForMessageTree = 0;/*from  w ww .  j a v a  2 s. co m*/
            dialogBoxLabel.remove();
            return;
        }

        // create conversation box
        // for the first message 
        if (indexForMessageTree == 0) {
            dialogBoxLabel = new Label(messageTree.get(0).get(0), PrisonBreakGame.gameSkin, "custom");
            dialogBoxLabel.setPosition(0, 0);
            dialogBoxLabel.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() / 5);
            dialogBoxLabel.setAlignment(Align.topLeft);
            //                dialogBoxLabel.setFontScale(2f);
            stage.addActor(dialogBoxLabel);
        }

        // for every next message
        else {
            dialogBoxLabel.setText(messageTree.get(0).get(indexForMessageTree));
        }

        ++indexForMessageTree; // increment index

    }

    // if it does contain items
    else {
        //            Gdx.app.log("class: ", "" + objectItems.getClass());

        if (indexForMessageTree == messageTree.get(1).size) {
            state = STATE.ONGOING; // unpause the game
            interactHappen = false; // flip the flag again
            typeInteraction = TYPE_INTERACTION.NO_INTERACTION; // reset type of interaction to
                                                               // NO_INTERACTION
            indexForMessageTree = 0;
            dialogBoxLabel.remove();
            return;
        }

        // in case Player choose "Nothing" -> does not pick anything
        if (indexForMessageTree > messageTree.get(1).size) {
            indexForMessageTree = messageTree.get(1).size;
            return;
        }

        // for the first message 
        if (indexForMessageTree == 0) {
            // create a String array of items' names
            Array<String> itemNames = new Array<String>();
            for (Item item : objectItems) {
                itemNames.add(item.getItemName());
            }
            itemNames.add("Nothing"); // add additional value - for not choosing any items

            // create conversation box
            dialogBoxLabel = new Label(messageTree.get(1).get(0), PrisonBreakGame.gameSkin, "custom");
            dialogBoxLabel.setPosition(0, 0);
            dialogBoxLabel.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() / 5);
            dialogBoxLabel.setAlignment(Align.topLeft);
            //                dialogBoxLabel.setFontScale(2f);
            stage.addActor(dialogBoxLabel);

            // create objectItems of items
            itemList = new List(PrisonBreakGame.gameSkin, "custom");
            itemList.setItems(itemNames);
            itemList.setSelectedIndex(0);
            itemList.setSize(Gdx.graphics.getWidth() / 4, Gdx.graphics.getHeight() / 3);
            itemList.setPosition(Gdx.graphics.getWidth() - itemList.getWidth(), dialogBoxLabel.getHeight());
            itemList.addListener(new InputListener() {
                @Override
                public boolean keyDown(InputEvent event, int keycode) {
                    int currentIndex = itemList.getSelectedIndex();
                    int upIndex = currentIndex - 1;
                    int downIndex = currentIndex + 1;

                    if (upIndex < 0)
                        upIndex = itemList.getItems().size - 1;
                    if (downIndex >= itemList.getItems().size)
                        downIndex = 0;

                    //                        Gdx.app.log("currentIndex: ", "" + currentIndex);
                    //                        Gdx.app.log("upIndex: ", "" + upIndex);
                    //                        Gdx.app.log("downIndex: ", "" + downIndex);

                    switch (keycode) {
                    case Keys.UP:
                        // scroll up the item list
                        itemList.setSelectedIndex(upIndex);
                        break;
                    case Keys.DOWN:
                        // scroll down the item list
                        itemList.setSelectedIndex(downIndex);
                        break;
                    case Keys.F:
                        int index = itemList.getSelectedIndex();

                        // if Player chooses "Nothing"
                        if ("Nothing".equals((String) itemList.getSelected())) {
                            // remove list of items from stage
                            itemList.remove();

                            // confirm the selection
                            dialogBoxLabel.setText("You choose nothing.");

                            // end the "conversation"
                            indexForMessageTree = messageTree.get(1).size + 1;
                            resetInputProcessor();
                            break;
                        }

                        // otherwise;
                        // add the chosen item into Player's objectItems of items
                        player.addItem(objectItems.get(index));

                        // remove that item from the overall listItems
                        objectItems.removeIndex(index);

                        // remove list of items from stage
                        itemList.remove();

                        // reconfirm message
                        dialogBoxLabel.setText(messageTree.get(1).get(indexForMessageTree));
                        resetInputProcessor();
                        break;
                    default:
                        break;
                    }

                    return true;
                }
            });
            stage.addActor(itemList);
            stage.setKeyboardFocus(itemList);

            // set InputProcessor to stage
            Gdx.input.setInputProcessor(stage);
        }

        // for every next message
        else {
            dialogBoxLabel.setText(messageTree.get(1).get(indexForMessageTree)
                    + player.getInventory().get(player.getInventory().size - 1).getItemName() + ".");
        }

        ++indexForMessageTree; // increment index

    }
}

From source file:com.prisonbreak.game.MapControlRenderer.java

private void openLockInteraction() {
    if (objectItems == null) {
        Gdx.app.log("Error in locked door: ", "objectItems == null");
        return;/*from   w  w  w.j av a2 s . c  o  m*/
    }

    // if the door is locked
    if (latestDoorLocked) {
        // end of "conversation" -> reset 
        if (indexForMessageTree == messageTree.get(2).size) {
            state = STATE.ONGOING;
            interactHappen = false;
            typeInteraction = TYPE_INTERACTION.NO_INTERACTION;
            indexForMessageTree = 0;

            neededKey = null;
            latestDoorLocked = false;
            //                latestObjectName = "";

            dialogBoxLabel.remove();
            return;
        }

        // first
        if (indexForMessageTree == 0) {
            // create conversation box
            dialogBoxLabel = new Label(messageTree.get(2).get(0), PrisonBreakGame.gameSkin, "custom");
            dialogBoxLabel.setPosition(0, 0);
            dialogBoxLabel.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() / 5);
            dialogBoxLabel.setAlignment(Align.topLeft);
            stage.addActor(dialogBoxLabel);

            // check if Player have the needed "key" to unlock
            boolean haveIt = false;
            for (Item item : player.getInventory()) {
                if (item.getItemID() == objectItems.get(0).getItemID()) {
                    haveIt = true;
                    neededKey = item;
                    break;
                }
            }
            //                Gdx.app.log("haveIt: ", "" + haveIt);

            // if Player DOEST NOT have the neccessary key -> end the "conversation" dialog
            // otherwise; let it go on
            if (!haveIt) {
                indexForMessageTree = messageTree.get(2).size - 1;
            }
        }
        // second
        else if (indexForMessageTree == 1) {
            dialogBoxLabel.setText(messageTree.get(2).get(1) + " " + neededKey.getItemName() + ".");
        }
        // third
        else if (indexForMessageTree == 2) {
            dialogBoxLabel.setText(messageTree.get(2).get(2));

            // create a List contain Yes/No options
            Array<String> options = new Array<String>();
            options.add("Yes");
            options.add("No");
            itemList = new List(PrisonBreakGame.gameSkin, "custom");
            itemList.setItems(options);
            itemList.setSelectedIndex(0);
            itemList.setSize(Gdx.graphics.getWidth() / 4, Gdx.graphics.getHeight() / 3);
            itemList.setPosition(Gdx.graphics.getWidth() - itemList.getWidth(), dialogBoxLabel.getHeight());
            itemList.addListener(new InputListener() {
                @Override
                public boolean keyDown(InputEvent event, int keycode) {
                    int currentIndex = itemList.getSelectedIndex();
                    int upIndex = currentIndex - 1;
                    int downIndex = currentIndex + 1;

                    if (upIndex < 0)
                        upIndex = itemList.getItems().size - 1;
                    if (downIndex >= itemList.getItems().size)
                        downIndex = 0;

                    switch (keycode) {
                    case Keys.UP:
                        // scroll up the option list
                        itemList.setSelectedIndex(upIndex);
                        break;
                    case Keys.DOWN:
                        // scroll down the option list
                        itemList.setSelectedIndex(downIndex);
                        break;
                    case Keys.F:
                        // if Player choose "Yes" -> unlock the door
                        if (itemList.getSelectedIndex() == 0) {
                            // set "locked" to false in object of DoorCollision
                            MapObject object = doorObjects.get(latestObjectName);
                            object.getProperties().put("locked", false);

                            // set "locked" to false in object of ObjectInteration
                            object = interactionObjects.get(latestObjectName);
                            object.getProperties().put("locked", false);

                            // set "locked" to false in object of ...
                        }
                        // if "No" -> end dialog "conversation"
                        else {
                            indexForMessageTree = messageTree.get(2).size; // end the dialog
                        }

                        // remove list of items from stage
                        itemList.remove();

                        resetInputProcessor();
                        break;
                    default:
                        break;
                    }

                    return true;
                }
            });
            stage.addActor(itemList);
            stage.setKeyboardFocus(itemList);

            // set InputProcessor to stage
            Gdx.input.setInputProcessor(stage);
        }
        // others
        else {
            dialogBoxLabel.setText(messageTree.get(2).get(indexForMessageTree));
        }

        ++indexForMessageTree;
    }
    // if current door is not locked
    else {
        // end of "conversation" -> reset 
        if (indexForMessageTree == messageTree.get(3).size) {
            state = STATE.ONGOING;
            interactHappen = false;
            typeInteraction = TYPE_INTERACTION.NO_INTERACTION;
            indexForMessageTree = 0;

            neededKey = null;
            latestDoorLocked = false;
            //                latestObjectName = "";

            dialogBoxLabel.remove();
            return;
        }

        // first
        if (indexForMessageTree == 0) {
            // create conversation box
            dialogBoxLabel = new Label(messageTree.get(3).get(0), PrisonBreakGame.gameSkin, "custom");
            dialogBoxLabel.setPosition(0, 0);
            dialogBoxLabel.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() / 5);
            dialogBoxLabel.setAlignment(Align.topLeft);
            stage.addActor(dialogBoxLabel);

            // check if Player have the requied key to lock the door
            boolean haveIt = false;
            for (Item item : player.getInventory()) {
                if (item.getItemID() == objectItems.get(0).getItemID()) {
                    haveIt = true;
                    neededKey = item;
                }
            }

            // if Player DOEST NOT have the neccessary key -> end the "conversation" dialog
            // otherwise; let it go on
            if (!haveIt) {
                indexForMessageTree = messageTree.get(3).size - 1;
            }
        }
        // second
        else if (indexForMessageTree == 1) {
            dialogBoxLabel.setText(messageTree.get(3).get(1) + " " + neededKey.getItemName() + ".");
        }
        // third
        else if (indexForMessageTree == 2) {
            dialogBoxLabel.setText(messageTree.get(3).get(2));

            // create a List contain Yes/No options
            Array<String> options = new Array<String>();
            options.add("Yes");
            options.add("No");
            itemList = new List(PrisonBreakGame.gameSkin, "custom");
            itemList.setItems(options);
            itemList.setSelectedIndex(0);
            itemList.setSize(Gdx.graphics.getWidth() / 4, Gdx.graphics.getHeight() / 3);
            itemList.setPosition(Gdx.graphics.getWidth() - itemList.getWidth(), dialogBoxLabel.getHeight());
            itemList.addListener(new InputListener() {
                @Override
                public boolean keyDown(InputEvent event, int keycode) {
                    int currentIndex = itemList.getSelectedIndex();
                    int upIndex = currentIndex - 1;
                    int downIndex = currentIndex + 1;

                    if (upIndex < 0)
                        upIndex = itemList.getItems().size - 1;
                    if (downIndex >= itemList.getItems().size)
                        downIndex = 0;

                    switch (keycode) {
                    case Keys.UP:
                        // scroll up the item objectItems
                        itemList.setSelectedIndex(upIndex);
                        break;
                    case Keys.DOWN:
                        // scroll down the item objectItems
                        itemList.setSelectedIndex(downIndex);
                        break;
                    case Keys.F:
                        // if Player choose "Yes" -> lock the door
                        if (itemList.getSelectedIndex() == 0) {
                            // set "locked" to true in object of DoorCollision
                            MapObject object = doorObjects.get(latestObjectName);
                            object.getProperties().put("locked", true);

                            // set "locked" to true in object of ObjectInteration
                            object = interactionObjects.get(latestObjectName);
                            object.getProperties().put("locked", true);

                            // set "locked" to true in object of ...
                        }
                        // if "No" -> end dialog "conversation"
                        else {
                            indexForMessageTree = messageTree.get(3).size; // end the dialog
                        }

                        // remove list of items from stage
                        itemList.remove();

                        resetInputProcessor();
                        break;
                    default:
                        break;
                    }

                    return true;
                }
            });
            stage.addActor(itemList);
            stage.setKeyboardFocus(itemList);

            // set InputProcessor to stage
            Gdx.input.setInputProcessor(stage);
        }
        // others
        else {
            dialogBoxLabel.setText(messageTree.get(3).get(indexForMessageTree));
        }

        ++indexForMessageTree;
    }
}