Example usage for com.badlogic.gdx.scenes.scene2d.ui Skin addRegions

List of usage examples for com.badlogic.gdx.scenes.scene2d.ui Skin addRegions

Introduction

In this page you can find the example usage for com.badlogic.gdx.scenes.scene2d.ui Skin addRegions.

Prototype

public void addRegions(TextureAtlas atlas) 

Source Link

Document

Adds all named texture regions from the atlas.

Usage

From source file:com.jupiter.europa.screen.MainMenuScreen.java

License:Open Source License

private static void buildMainMenuSkin() {
    Skin skin = new Skin();

    // Fonts/*from  w  w w .j  av a  2s  .c o m*/
    skin.add(BUTTON_FONT_KEY, EuropaGame.game.getAssetManager()
            .get(FileLocations.FONTS_DIRECTORY.resolve(BUTTON_FONT).toString()));
    skin.add(TITLE_FANCY_FONT_KEY, EuropaGame.game.getAssetManager()
            .get(FileLocations.FONTS_DIRECTORY.resolve(TITLE_FANCY_FONT).toString()));
    skin.add(TITLE_FONT_KEY, EuropaGame.game.getAssetManager()
            .get(FileLocations.FONTS_DIRECTORY.resolve(TITLE_FONT).toString()));
    skin.add(LIST_FONT_KEY,
            EuropaGame.game.getAssetManager().get(FileLocations.FONTS_DIRECTORY.resolve(LIST_FONT).toString()));
    skin.add(TEXT_FIELD_FONT_KEY, EuropaGame.game.getAssetManager()
            .get(FileLocations.FONTS_DIRECTORY.resolve(TEXT_FIELD_FONT).toString()));
    skin.add(INFO_LABEL_FONT_KEY, EuropaGame.game.getAssetManager()
            .get(FileLocations.FONTS_DIRECTORY.resolve(INFO_LABEL_FONT).toString()));

    // Set the background texture
    Pixmap pixmap = new Pixmap(1, (int) 1, Pixmap.Format.RGB888);
    pixmap.setColor(Color.WHITE);
    pixmap.fill();
    skin.add(SOLID_TEXTURE_KEY, new Texture(pixmap));
    Drawable transparentDrawable = skin.newDrawable(SOLID_TEXTURE_KEY, TRANSPARENT);

    // Get values from the atlas
    skin.addRegions(
            EuropaGame.game.getAssetManager().get(MAIN_MENU_SKIN_DIRECTORY.resolve(ATLAS_KEY).toString()));

    // Colors
    Color textButtonFontColor = new Color(0.85f, 0.85f, 0.85f, 1.0f);

    // Set images
    Drawable textButtonBackground = new TextureRegionDrawable(
            skin.get(BUTTON_BACKGROUND_KEY, TextureRegion.class));
    textButtonBackground.setLeftWidth(32);
    textButtonBackground.setRightWidth(32);
    textButtonBackground.setTopHeight(5);
    textButtonBackground.setBottomHeight(5);
    skin.add(BUTTON_BACKGROUND_KEY, textButtonBackground);

    Drawable textButtonBackgroundDown = new TextureRegionDrawable(
            skin.get(BUTTON_DOWN_KEY, TextureRegion.class));
    textButtonBackgroundDown.setLeftWidth(32);
    textButtonBackgroundDown.setRightWidth(32);
    textButtonBackgroundDown.setTopHeight(5);
    textButtonBackgroundDown.setBottomHeight(5);
    skin.add(BUTTON_DOWN_KEY, textButtonBackgroundDown);

    Drawable listSelection = new TextureRegionDrawable(skin.get(LIST_SELECTION_KEY, TextureRegion.class));
    listSelection.setLeftWidth(7);
    listSelection.setRightWidth(7);
    listSelection.setTopHeight(0);
    listSelection.setBottomHeight(0);
    skin.add(LIST_SELECTION_KEY, listSelection);

    Drawable tabButtonBackground = new TextureRegionDrawable(
            skin.get(TAB_BUTTON_BACKGROUND_KEY, TextureRegion.class));
    tabButtonBackground.setLeftWidth(5);
    tabButtonBackground.setRightWidth(5);
    tabButtonBackground.setTopHeight(0);
    tabButtonBackground.setBottomHeight(0);
    skin.add(TAB_BUTTON_BACKGROUND_KEY, tabButtonBackground);

    Drawable tabButtonBackgroundSelected = new TextureRegionDrawable(
            skin.get(TAB_BUTTON_SELECTED_KEY, TextureRegion.class));
    tabButtonBackgroundSelected.setLeftWidth(5);
    tabButtonBackgroundSelected.setRightWidth(5);
    tabButtonBackgroundSelected.setTopHeight(0);
    tabButtonBackgroundSelected.setBottomHeight(0);
    skin.add(TAB_BUTTON_SELECTED_KEY, tabButtonBackgroundSelected);

    Drawable titleBackground = new TextureRegionDrawable(skin.get(TITLE_BACKGROUND_KEY, TextureRegion.class));
    titleBackground.setLeftWidth(10);
    titleBackground.setRightWidth(10);
    titleBackground.setTopHeight(0);
    titleBackground.setBottomHeight(0);
    skin.add(TITLE_BACKGROUND_KEY, titleBackground);

    Drawable numberIncreaseDrawable = new TextureRegionDrawable(
            skin.get(NUMBER_SELECTOR_INCREASE_KEY, TextureRegion.class));
    numberIncreaseDrawable.setLeftWidth(0);
    numberIncreaseDrawable.setRightWidth(0);
    numberIncreaseDrawable.setTopHeight(0);
    numberIncreaseDrawable.setBottomHeight(0);
    skin.add(NUMBER_SELECTOR_INCREASE_KEY, numberIncreaseDrawable);

    Drawable numberDecreaseDrawable = new TextureRegionDrawable(
            skin.get(NUMBER_SELECTOR_DECREASE_KEY, TextureRegion.class));
    numberDecreaseDrawable.setLeftWidth(0);
    numberDecreaseDrawable.setRightWidth(0);
    numberDecreaseDrawable.setTopHeight(0);
    numberDecreaseDrawable.setBottomHeight(0);
    skin.add(NUMBER_SELECTOR_DECREASE_KEY, numberDecreaseDrawable);

    skin.add(DIALOG_BACKGROUND_KEY,
            skin.newDrawable(new TextureRegionDrawable(skin.get(DIALOG_BACKGROUND_KEY, TextureRegion.class)),
                    new Color(1.0f, 1.0f, 1.0f, 1.0f)));
    skin.add(POPUP_BACKGROUND_KEY,
            skin.newDrawable(new TextureRegionDrawable(skin.get(POPUP_BACKGROUND_KEY, TextureRegion.class)),
                    new Color(1.0f, 1.0f, 1.0f, 1.0f)));
    skin.add(LIST_BACKGROUND_KEY,
            skin.newDrawable(new TextureRegionDrawable(skin.get(LIST_BACKGROUND_KEY, TextureRegion.class)),
                    new Color(1.0f, 1.0f, 1.0f, 1.0f)));
    skin.add(LIST_SELECTION_KEY,
            skin.newDrawable(new TextureRegionDrawable(skin.get(LIST_SELECTION_KEY, TextureRegion.class)),
                    new Color(1.0f, 1.0f, 1.0f, 1.0f)));
    skin.add(CREDITS_BACKGROUND_KEY,
            skin.newDrawable(new TextureRegionDrawable(skin.get(CREDITS_BACKGROUND_KEY, TextureRegion.class)),
                    new Color(1.0f, 1.0f, 1.0f, 1.0f)));

    Drawable dropdownListBackground = skin.newDrawable(
            new TextureRegionDrawable(skin.get(DROP_DOWN_LIST_BACKGROUND, TextureRegion.class)),
            new Color(1, 1, 1, 1));
    dropdownListBackground.setLeftWidth(28);
    dropdownListBackground.setRightWidth(28);
    dropdownListBackground.setTopHeight(0);
    dropdownListBackground.setBottomHeight(0);
    skin.add(DROP_DOWN_LIST_BACKGROUND, dropdownListBackground);

    // Create a Label style for the title
    Label.LabelStyle titleStyle = new Label.LabelStyle();
    titleStyle.background = transparentDrawable;
    titleStyle.font = skin.getFont(TITLE_FONT_KEY);
    titleStyle.fontColor = new Color(Color.BLACK);
    skin.add(DEFAULT_KEY, titleStyle);

    // Fancy Character Label Style
    Label.LabelStyle fancyTitleStyle = new Label.LabelStyle();
    fancyTitleStyle.background = transparentDrawable;
    fancyTitleStyle.font = skin.getFont(TITLE_FANCY_FONT_KEY);
    fancyTitleStyle.fontColor = new Color(Color.BLACK);
    skin.add(FANCY_KEY, fancyTitleStyle);

    // Create a Label style for dialogs
    LabelStyle infoStyle = new LabelStyle();
    infoStyle.background = transparentDrawable;
    infoStyle.font = skin.getFont(INFO_LABEL_FONT_KEY);
    infoStyle.fontColor = new Color(Color.BLACK);
    skin.add(INFO_STYLE_KEY, infoStyle);

    // Default Button Style
    TextButton.TextButtonStyle textButtonStyle = new TextButton.TextButtonStyle();
    textButtonStyle.up = textButtonBackground;
    textButtonStyle.down = textButtonBackgroundDown;
    textButtonStyle.checked = textButtonBackground;
    textButtonStyle.over = textButtonBackgroundDown;
    textButtonStyle.disabled = textButtonBackground;
    textButtonStyle.font = skin.getFont(BUTTON_FONT_KEY);
    textButtonStyle.fontColor = textButtonFontColor;
    textButtonStyle.disabledFontColor = new Color(0.3f, 0.3f, 0.3f, 1.0f);
    //        textButtonStyle.pressedOffsetX = 2f;
    //        textButtonStyle.pressedOffsetY = -3f;
    skin.add(DEFAULT_KEY, textButtonStyle);

    // Tab Button Style
    TextButtonStyle tabButtonStyle = new TextButtonStyle();
    tabButtonStyle.up = tabButtonBackground;
    tabButtonStyle.down = tabButtonBackground;
    tabButtonStyle.checked = tabButtonBackgroundSelected;
    tabButtonStyle.over = tabButtonBackground;
    tabButtonStyle.disabled = tabButtonBackground;
    tabButtonStyle.font = skin.getFont(BUTTON_FONT_KEY);
    tabButtonStyle.fontColor = textButtonFontColor;
    tabButtonStyle.overFontColor = textButtonFontColor;
    tabButtonStyle.disabledFontColor = new Color(Color.GRAY);
    skin.add(TAB_STYLE_KEY, tabButtonStyle);

    // Create a TextField style
    TextFieldStyle textFieldStyle = new TextFieldStyle();
    textFieldStyle.background = skin.newDrawable(SOLID_TEXTURE_KEY, new Color(0f, 0f, 0f, 0.1f));
    textFieldStyle.selection = skin.newDrawable(SOLID_TEXTURE_KEY, new Color(0f, 0f, 1f, 0.3f));
    textFieldStyle.cursor = skin.newDrawable(SOLID_TEXTURE_KEY, Color.BLACK);
    textFieldStyle.font = skin.getFont(TEXT_FIELD_FONT_KEY);
    textFieldStyle.fontColor = Color.BLACK;
    skin.add(DEFAULT_KEY, textFieldStyle);

    // Create a List style
    ListStyle listStyle = new ListStyle();
    listStyle.font = skin.getFont(LIST_FONT_KEY);
    listStyle.fontColorSelected = Color.BLACK;
    listStyle.fontColorUnselected = Color.BLACK;
    listStyle.selection = listSelection;
    listStyle.background = transparentDrawable;
    skin.add(DEFAULT_KEY, listStyle);

    // Create a Scroll Pane Style
    ScrollPaneStyle scrollPaneStyle = new ScrollPaneStyle();
    scrollPaneStyle.background = transparentDrawable;
    //        scrollPaneStyle.vScroll = skin.newDrawable(MainMenuScreen.SCROLL_BAR_VERTICAL_KEY);
    //        scrollPaneStyle.vScrollKnob = skin.newDrawable(MainMenuScreen.SCROLL_BAR_VERTICAL_KNOB_KEY);
    skin.add(DEFAULT_KEY, scrollPaneStyle);

    // Create a Dialog Style
    WindowStyle dialogStyle = new WindowStyle();
    dialogStyle.background = new SpriteDrawable(
            new Sprite(EuropaGame.game.getAssetManager().get(BACKGROUND_FILE_NAME, Texture.class)));
    dialogStyle.titleFont = skin.getFont(TITLE_FONT_KEY);
    dialogStyle.titleFontColor = new Color(Color.BLACK);
    skin.add(DEFAULT_KEY, dialogStyle);

    // Popup Dialog Style
    WindowStyle popupStyle = new WindowStyle();
    popupStyle.titleFont = skin.getFont(TITLE_FONT_KEY);
    popupStyle.titleFontColor = new Color(Color.BLACK);
    skin.add(POPUP_DIALOG_STYLE_KEY, popupStyle);

    // Create a Slider Skin
    SliderStyle sliderStyle = new SliderStyle();
    sliderStyle.background = new TextureRegionDrawable(skin.get(SLIDER_BACKGROUND_KEY, TextureRegion.class));
    sliderStyle.knob = new TextureRegionDrawable(skin.get(SLIDER_KNOB_KEY, TextureRegion.class));
    skin.add(DEFAULT_KEY, sliderStyle);

    // Create a Drop Down Menu Skin
    SelectBoxStyle selectBoxStyle = new SelectBoxStyle();
    selectBoxStyle.background = textButtonBackground;
    selectBoxStyle.backgroundOpen = textButtonBackgroundDown;
    selectBoxStyle.backgroundOver = textButtonBackgroundDown;
    selectBoxStyle.scrollStyle = scrollPaneStyle;
    selectBoxStyle.font = skin.getFont(TEXT_FIELD_FONT_KEY);
    selectBoxStyle.fontColor = textButtonFontColor;
    ListStyle selectBoxListStyle = new ListStyle();
    selectBoxListStyle.font = skin.getFont(LIST_FONT_KEY);
    selectBoxListStyle.fontColorSelected = textButtonFontColor;
    selectBoxListStyle.fontColorUnselected = textButtonFontColor;
    selectBoxListStyle.selection = skin.newDrawable(SOLID_TEXTURE_KEY, SELECTION_COLOR);
    selectBoxListStyle.background = dropdownListBackground;
    selectBoxStyle.listStyle = selectBoxListStyle;
    skin.add(DEFAULT_KEY, selectBoxStyle);

    // NumberSelectorStyle
    NumberSelectorStyle numberStyle = new NumberSelectorStyle();
    numberStyle.decrease = numberDecreaseDrawable;
    numberStyle.increase = numberIncreaseDrawable;
    numberStyle.minimumNumberSize = 50;
    numberStyle.numberLabelStyle = infoStyle;
    numberStyle.spacing = COMPONENT_SPACING;
    skin.add(DEFAULT_KEY, numberStyle);

    // AttributeSelectorStyle
    MultipleNumberSelectorStyle attrStyle = new MultipleNumberSelector.MultipleNumberSelectorStyle();
    attrStyle.labelStyle = infoStyle;
    attrStyle.numberSelectorStyle = numberStyle;
    attrStyle.spacing = COMPONENT_SPACING;
    skin.add(DEFAULT_KEY, attrStyle);

    mainMenuSkin = skin;
}

From source file:com.mbrlabs.mundus.core.Mundus.java

License:Apache License

private static void initStyle() {
    FreeTypeFontGenerator generator = new FreeTypeFontGenerator(
            Gdx.files.internal("fonts/open-sans/OpenSans-Regular.ttf"));
    FreeTypeFontGenerator.FreeTypeFontParameter params = new FreeTypeFontGenerator.FreeTypeFontParameter();
    params.kerning = true;//  www  .  j a  va  2 s. c o m
    params.borderStraight = false;
    params.genMipMaps = true;
    params.hinting = FreeTypeFontGenerator.Hinting.Full;

    // font norm
    params.size = 13;
    BitmapFont fontNorm = generator.generateFont(params);

    // font small
    params.size = 12;
    BitmapFont fontSmall = generator.generateFont(params);
    generator.dispose();

    // skin
    Skin skin = new Skin();
    skin.add("font-norm", fontNorm, BitmapFont.class);
    skin.add("font-small", fontSmall, BitmapFont.class);

    skin.addRegions(new TextureAtlas(Gdx.files.internal("ui/skin/uiskin.atlas")));
    skin.load(Gdx.files.internal("ui/skin/uiskin.json"));
    VisUI.load(skin);

    FileChooser.setFavoritesPrefsName(Main.class.getPackage().getName());
}

From source file:net.bplaced.therefactory.voraciousviper.input.gamescreen.AbstractGameScreenInputProcessor.java

License:Open Source License

AbstractGameScreenInputProcessor(final GameScreen gameScreen, Viewport viewport, TextureAtlas textureAtlas,
        ShapeRenderer shapeRenderer) {//from  w ww.  j  av  a 2  s .  c o m
    this.gameScreen = gameScreen;
    this.viewport = viewport;
    this.stage = gameScreen.getStage();
    gameScreen.setPreviousGameState(gameScreen.getState());

    Skin skin = new Skin();
    skin.addRegions(textureAtlas);

    pauseButton = new RetroTextButton(shapeRenderer, Config.TILE_WIDTH * 2, Config.TILE_HEIGHT * 2,
            VoraciousViper.getInstance().getAmigaFont(), "X", new ClickListener() {
                @Override
                public void clicked(InputEvent event, float x, float y) {
                    super.clicked(event, x, y);
                    pause();
                }
            });
    pauseButton.setPosition(viewport.getWorldWidth() - pauseButton.getWidth(),
            viewport.getWorldHeight() - pauseButton.getHeight());
    pauseButton.setThickness(3);

    stage.addActor(pauseButton);
}

From source file:net.bplaced.therefactory.voraciousviper.screens.GameScreen.java

License:Open Source License

public GameScreen(SpriteBatch batch, ShapeRenderer shapeRenderer, FitViewport viewport,
        OrthographicCamera camera, AssetManager assetManager, TextureAtlas textureAtlas, BitmapFont font) {
    this.batch = batch;
    this.shapeRenderer = shapeRenderer;
    this.font = font;
    this.textureAtlas = textureAtlas;
    this.assetManager = assetManager;
    hud = new Hud(this, font, textureAtlas);
    level = Level.fromFile(this, Gdx.files.internal("levels/original.pack"), textureAtlas);
    hud.setLevel(level);/*from  www.ja v  a 2 s . c  o  m*/
    this.viewport = viewport;
    this.camera = camera;
    currentGameState = GameState.LevelTransition;
    particles = new Particles(textureAtlas);

    rectangleMenuDialog = new Rectangle();
    rectangleMenuDialog.setSize(260, 160);
    rectangleMenuDialog.setPosition(viewport.getWorldWidth() / 2 - rectangleMenuDialog.getWidth() / 2, 100);

    stage = new Stage();
    stage.setViewport(viewport);
    Skin skin = new Skin();
    skin.addRegions(textureAtlas);

    int buttonWidth = 120;
    int buttonHeight = 70;

    // pause menu dialog
    buttonsPauseDialog = new RetroBundleTextButton[] { new RetroBundleTextButton(shapeRenderer, buttonWidth,
            buttonHeight, VoraciousViper.getInstance().getAmigaFont(), I18NKeys.MainMenu, new ClickListener() {
                @Override
                public void clicked(InputEvent event, float x, float y) {
                    super.clicked(event, x, y);
                    VoraciousViper.getInstance().showTitleScreen();
                }
            }), new RetroBundleTextButton(shapeRenderer, buttonWidth, buttonHeight,
                    VoraciousViper.getInstance().getAmigaFont(), I18NKeys.Restart, new ClickListener() {
                        @Override
                        public void clicked(InputEvent event, float x, float y) {
                            super.clicked(event, x, y);
                            level.reset();
                        }
                    }),
            new RetroBundleTextButton(shapeRenderer, buttonWidth, buttonHeight,
                    VoraciousViper.getInstance().getAmigaFont(), I18NKeys.Continue, new ClickListener() {
                        @Override
                        public void clicked(InputEvent event, float x, float y) {
                            super.clicked(event, x, y);
                            setState(previousGameState);
                        }
                    }) };
    positionButtons(buttonsPauseDialog);

    // game over dialog
    buttonsGameOverDialog = new RetroBundleTextButton[] { new RetroBundleTextButton(shapeRenderer, buttonWidth,
            buttonHeight, VoraciousViper.getInstance().getAmigaFont(), I18NKeys.MainMenu, new ClickListener() {
                @Override
                public void clicked(InputEvent event, float x, float y) {
                    super.clicked(event, x, y);
                    VoraciousViper.getInstance().showTitleScreen();
                }
            }), new RetroBundleTextButton(shapeRenderer, buttonWidth, buttonHeight,
                    VoraciousViper.getInstance().getAmigaFont(), I18NKeys.ScoreTable, new ClickListener() {
                        @Override
                        public void clicked(InputEvent event, float x, float y) {
                            super.clicked(event, x, y);
                            VoraciousViper.getInstance().showScoreTable();
                        }
                    }),
            new RetroBundleTextButton(shapeRenderer, buttonWidth, buttonHeight,
                    VoraciousViper.getInstance().getAmigaFont(), I18NKeys.PlayAgain, new ClickListener() {
                        @Override
                        public void clicked(InputEvent event, float x, float y) {
                            super.clicked(event, x, y);
                            level.reset();
                        }
                    }) };
    positionButtons(buttonsGameOverDialog);

    // continue dialog
    buttonsContinueDialog = new RetroBundleTextButton[] { new RetroBundleTextButton(shapeRenderer, buttonWidth,
            buttonHeight, VoraciousViper.getInstance().getAmigaFont(), I18NKeys.ResetText, new ClickListener() {
                @Override
                public void clicked(InputEvent event, float x, float y) {
                    super.clicked(event, x, y);
                    setState(GameState.ViperCrashed);
                }
            }), new RetroBundleTextButton(shapeRenderer, buttonWidth, buttonHeight,
                    VoraciousViper.getInstance().getAmigaFont(), I18NKeys.ContinueLevel, new ClickListener() {
                        @Override
                        public void clicked(InputEvent event, float x, float y) {
                            super.clicked(event, x, y);
                            getLevel().removeViper();
                            getViper().decrementLives();
                            getViper().setHasCrashed(false);
                            getViper().restart(false);
                            setState(GameState.GameIsBeginning);
                        }
                    }) };
    positionButtons(buttonsContinueDialog);

    inputMultiplexer = new InputMultiplexer();
    inputMultiplexer.addProcessor(0, stage);
    updateGameScreenControls();
}

From source file:net.bplaced.therefactory.voraciousviper.screens.TitleScreen.java

License:Open Source License

public TitleScreen(ShapeRenderer shapeRenderer, final FitViewport viewport, OrthographicCamera camera,
        AssetManager assetManager, TextureAtlas textureAtlas, BitmapFont font) {
    this.instance = this;
    this.shapeRenderer = shapeRenderer;
    this.camera = camera;
    this.assetManager = assetManager;
    this.font = font;
    this.viewport = viewport;
    this.prefs = SettingsManager.getInstance().get();
    this.keyboardInputListener = new KeyboardInputListener(this);
    this.state = TitleScreenState.ShowMainMenu;
    this.stringBuilder = new StringBuilder();

    if (SettingsManager.getInstance().isMusicEnabled())
        VoraciousViper.getInstance().playMusicFile(true);

    paddingFromViewport = 10;//w  w  w .  j  a  v  a2s.  co  m
    int hSpaceBetweenButtons = 10;
    vSpaceBetweenButtons = 20;

    camera.position.set(viewport.getWorldWidth() / 2, viewport.getWorldHeight() / 2, 0);
    camera.update();

    if (Config.SHOW_BADGE) {
        spriteBadge = new Sprite(new Texture("google-play-badge.png"));
    }
    spriteTitle = new Sprite(new Texture("title.png"));
    rectangleTitle = new Rectangle(viewport.getWorldWidth() / 2 - spriteTitle.getWidth() / 2 + xOffset, 200,
            spriteTitle.getWidth(), spriteTitle.getHeight());
    rectangleTitleScoreTable = new Rectangle(8, viewport.getWorldHeight() - 40, rectangleTitle.width / 2,
            rectangleTitle.height / 2);
    spriteTitle.setBounds(rectangleTitle.x, rectangleTitle.y, rectangleTitle.width, rectangleTitle.height);

    spriteInfo = textureAtlas.createSprite("Info");
    spriteSettings = textureAtlas.createSprite("settings");
    spriteThere = new Sprite(new Texture("there.png"));
    spriteFactory = new Sprite(new Texture("factory.png"));
    spriteDownload = new Sprite(new Texture("download.png"));
    spriteStar = new Sprite(new Texture("star.png"));

    indexCurrentHeadSprite = 0;
    spritesViperHeads = new Sprite[6];
    spritesViperHeads[0] = textureAtlas.createSprite("Head.X.1.Green");
    spritesViperHeads[1] = textureAtlas.createSprite("Head.X.2.Green");
    spritesViperHeads[2] = textureAtlas.createSprite("Head.X.1.Purple");
    spritesViperHeads[3] = textureAtlas.createSprite("Head.X.2.Purple");
    spritesViperHeads[4] = textureAtlas.createSprite("Head.X.1.Blue");
    spritesViperHeads[5] = textureAtlas.createSprite("Head.X.2.Blue");

    stage = new Stage();
    stage.setViewport(this.viewport);
    Skin skin = new Skin();
    skin.addRegions(textureAtlas);

    // button to close settings
    buttonClose = new RetroTextButton(shapeRenderer, 52, 52, font, "X", new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            super.clicked(event, x, y);
            setState(TitleScreenState.ShowMainMenu);
        }
    });
    buttonClose.setPosition(viewport.getWorldWidth() - buttonClose.getWidth() - vSpaceBetweenButtons,
            viewport.getWorldHeight() - buttonClose.getHeight() - vSpaceBetweenButtons);
    buttonClose.setThickness(3);
    stage.addActor(buttonClose);

    // button to show about screen
    buttonSwitchBetweenAboutAndSettings = new RetroTextButton(shapeRenderer, 52, 52, font, "?",
            new ClickListener() {
                @Override
                public void clicked(InputEvent event, float x, float y) {
                    super.clicked(event, x, y);
                    if (state.equals(TitleScreenState.ShowSettings)) { // toggle about screen
                        setState(TitleScreenState.ShowAbout);
                    } else {
                        setState(TitleScreenState.ShowSettings);
                    }
                }
            });
    buttonSwitchBetweenAboutAndSettings.setPosition(
            buttonClose.getX() - buttonSwitchBetweenAboutAndSettings.getWidth() - hSpaceBetweenButtons,
            buttonClose.getY());
    stage.addActor(buttonSwitchBetweenAboutAndSettings);

    // button to rate app
    buttonRate = new RetroTextButton(shapeRenderer, 100, 52, font, "Rate", new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            super.clicked(event, x, y);
            Gdx.net.openURI(URL_TO_PLAY_STORE);
        }
    });
    buttonRate.setPosition(250, buttonSwitchBetweenAboutAndSettings.getY());
    stage.addActor(buttonRate);

    // button to view the soundtrack
    buttonSoudtrack = new RetroTextButton(shapeRenderer, 100, 52, font, "Soundtrack", new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            super.clicked(event, x, y);
            Gdx.net.openURI(URL_TO_SOUNDTRACK);
        }
    });
    buttonSoudtrack.setPosition(370, buttonSwitchBetweenAboutAndSettings.getY());
    stage.addActor(buttonSoudtrack);

    // initialize buttons for main menu
    int buttonSize = 130;
    buttonsMainMenu = new RetroBundleTextButton[] { new RetroBundleTextButton(shapeRenderer, buttonSize, 100,
            font, I18NKeys.Singleplayer, new ClickListener() {
                @Override
                public void clicked(InputEvent event, float x, float y) {
                    super.clicked(event, x, y);
                    VoraciousViper.getInstance().startGame();
                }
            }), new RetroBundleTextButton(shapeRenderer, buttonSize, 100, font, I18NKeys.ScoreTable,
                    new ClickListener() {
                        @Override
                        public void clicked(InputEvent event, float x, float y) {
                            super.clicked(event, x, y);
                            showScoreTable();
                        }
                    }),
            new RetroBundleTextButton(shapeRenderer, buttonSize, 100, font, I18NKeys.Settings,
                    new ClickListener() {
                        @Override
                        public void clicked(InputEvent event, float x, float y) {
                            super.clicked(event, x, y);
                            setState(TitleScreenState.ShowSettings);
                        }
                    }),
            new RetroBundleTextButton(shapeRenderer, buttonSize, 100, font, I18NKeys.About,
                    new ClickListener() {
                        @Override
                        public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
                            super.touchUp(event, x, y, pointer, button);
                            if (Config.SHOW_BADGE) {
                                setState(TitleScreenState.ShowBadge);
                            } else {
                                setState(TitleScreenState.ShowAbout);
                            }
                        }
                    }) };
    for (RetroTextButton textButton : buttonsMainMenu) {
        textButton.setPosition(paddingFromViewport, paddingFromViewport);
        textButton.setAlignment(TextAlign.CenterBottom);
        stage.addActor(textButton);
    }

    buttonSize = 52;

    // initialize buttons for settings menu
    buttonsSettings = new AbstractRetroButton[][] {
            new RetroImageButton[] {
                    new RetroImageButton(shapeRenderer, buttonSize, buttonSize, skin.getDrawable("flag_usa"),
                            PrefsKeys.Language, Locale.ENGLISH.toString()),
                    new RetroImageButton(shapeRenderer, buttonSize, buttonSize,
                            skin.getDrawable("flag_austria"), PrefsKeys.Language, Locale.GERMAN.toString()) },
            new RetroImageToggleButton[] {
                    new RetroImageToggleButton(shapeRenderer, buttonSize, buttonSize,
                            skin.getDrawable("music.on"), skin.getDrawable("music.off"), PrefsKeys.Music, true),
                    new RetroImageToggleButton(shapeRenderer, buttonSize, buttonSize,
                            skin.getDrawable("sound.on"), skin.getDrawable("sound.off"), PrefsKeys.Sound,
                            true) },
            new RetroTextButton[] { new RetroTextButton(shapeRenderer, buttonSize, buttonSize, font,
                    I18NKeys.Playername, new ClickListener() {
                        @Override
                        public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
                            super.touchUp(event, x, y, pointer, button);
                            Gdx.input.getTextInput(keyboardInputListener,
                                    VoraciousViper.getInstance().getBundle()
                                            .get(I18NKeys.PleaseEnterYourPlayername),
                                    SettingsManager.getInstance().get().getString(PrefsKeys.PlayerName), "");
                        }
                    }) },
            new RetroImageButton[] { new RetroImageButton(shapeRenderer, buttonSize, buttonSize,
                    skin.getDrawable("controls_touchareas"), PrefsKeys.Controls, PrefsKeys.ControlsTouchAreas),
                    new RetroImageButton(shapeRenderer, buttonSize, buttonSize,
                            skin.getDrawable("controls_touchpad"), PrefsKeys.Controls,
                            PrefsKeys.ControlsTouchPad),
                    new RetroImageButton(shapeRenderer, buttonSize, buttonSize,
                            skin.getDrawable("controls_relative"), PrefsKeys.Controls,
                            PrefsKeys.ControlsRelative),
            //               new RetroImageButton(shapeRenderer, buttonSize, buttonSize, skin.getDrawable("controls_swipe"),
            //                     PrefsKeys.Controls, PrefsKeys.ControlsSwipe),
            //               new RetroImageButton(shapeRenderer, buttonSize, buttonSize, skin.getDrawable("controls_joystick"),
            //                     PrefsKeys.Controls, PrefsKeys.ControlsJoystick)
            }, };

    // listeners to change locale in settings manager
    ClickListener clickListener = new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            super.clicked(event, x, y);
            VoraciousViper.getInstance().setLocale(prefs.getString(PrefsKeys.Language));
            updatePlayernameText();
        }
    };
    buttonsSettings[0][0].addListener(clickListener);
    buttonsSettings[0][1].addListener(clickListener);
    ((RetroTextButton) buttonsSettings[2][0]).setAutoSize(true);
    buttonsSettings[1][0].addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            super.clicked(event, x, y);
            if (SettingsManager.getInstance().isMusicEnabled()) {
                VoraciousViper.getInstance().playMusicFile(true);
            } else {
                VoraciousViper.getInstance().pauseMusic();
            }
        }
    });

    // equally distribute settings buttons based on the defined buttonSize
    for (int i = 0; i < buttonsSettings.length; i++) {
        for (int j = 0; j < buttonsSettings[i].length; j++) {
            buttonsSettings[i][j].setPosition(vSpaceBetweenButtons + j * (buttonSize + hSpaceBetweenButtons),
                    vSpaceBetweenButtons * 2
                            + (buttonsSettings.length - 1 - i) * (vSpaceBetweenButtons + buttonSize));
            int pointer = 0;
            if (i == 0 || i == 3) {
                AbstractRetroButton[] adjacentButtons = new AbstractRetroButton[buttonsSettings[i].length - 1];
                for (int k = 0; k < buttonsSettings[i].length; k++) {
                    if (k != j) {
                        adjacentButtons[pointer++] = buttonsSettings[i][k];
                    }
                }
                ((RetroImageButton) buttonsSettings[i][j]).setAdjacentButtons(adjacentButtons);
            }
            stage.addActor(buttonsSettings[i][j]);
        }
    }
    scaler = new Scaler(0, 1, .003f, true);
    colorScaler = new Color();
    xOffsetMax = 80;

    scrollbarMaximumY = viewport.getWorldHeight() - buttonClose.getHeight() + 1;
    scrollbarCurrentY = scrollbarMaximumY;

    inputMultiplexer = new InputMultiplexer();
    inputHandler = new TitleScreenInputProcessor(this, scrollbarMaximumY, 0);
    inputMultiplexer.addProcessor(inputHandler);
    inputMultiplexer.addProcessor(stage);
    scrollbarHandle = new RetroTextButton(shapeRenderer, 52, 25, font, "", new ClickListener() {

    });
    scrollbarHandle.setX(viewport.getWorldWidth() - scrollbarHandle.getWidth());
    scrollbarHandle.setThickness(3);
    stage.addActor(scrollbarHandle);
}