Package com.drakulo.games.ais.ui.state

Source Code of com.drakulo.games.ais.ui.state.MainMenuState

package com.drakulo.games.ais.ui.state;

import java.util.ArrayList;
import java.util.List;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;

import com.drakulo.games.ais.AloneInSpace;
import com.drakulo.games.ais.core.audio.MusicManager;
import com.drakulo.games.ais.ui.I18n;
import com.drakulo.games.ais.ui.ImageManager;
import com.drakulo.games.ais.ui.UIHelper;
import com.drakulo.games.ais.ui.component.ActionHandler;
import com.drakulo.games.ais.ui.component.button.TextButton;
import com.drakulo.games.ais.ui.twlbridge.BasicTWLGameState;

public class MainMenuState extends BasicTWLGameState {
  private static final int menuWidth = 170;
  private static final int menuPadding = 10;
  private static final int menuX = 200;
  private static final int menuY = 200;

  private int id;
  private GameContainer container;
  private StateBasedGame game;

  private Image background;

  private TextButton exitButton;
  private TextButton optionsButton;
  private TextButton newGameButton;

  private List<TextButton> buttons;

  private String bgMusic;
  private boolean started;

  public MainMenuState(int id) {
    this.id = id;

    buttons = new ArrayList<TextButton>();

    final int bwidth = 150;
    final int bheight = TextButton.DEFAULT_HEIGHT;
    newGameButton = new TextButton(I18n.getFirstToUpper("global.new_game"));
    newGameButton.setSize(bwidth, bheight);
    newGameButton.setActionHandler(new ActionHandler() {
      public void run() {
        game.enterState(AloneInSpace.SECTOR_STATE);
      }
    });
    getRootPane().add(newGameButton.getBindable());
    buttons.add(newGameButton);

    optionsButton = new TextButton(I18n.getFirstToUpper("global.settings"));
    optionsButton.setSize(bwidth, bheight);
    optionsButton.disable();
    optionsButton.setActionHandler(new ActionHandler() {
      public void run() {
        // TODO
      }
    });
    getRootPane().add(optionsButton.getBindable());
    buttons.add(optionsButton);

    exitButton = new TextButton(I18n.getFirstToUpper("global.exit"));
    exitButton.setSize(bwidth, bheight);
    exitButton.setActionHandler(new ActionHandler() {
      public void run() {
        container.exit();
      }
    });
    getRootPane().add(exitButton.getBindable());
    buttons.add(exitButton);

    int dx = menuX + menuPadding;
    int dy = menuY + menuPadding;
    final int padd = TextButton.DEFAULT_HEIGHT + menuPadding/2;

    for (TextButton tb : buttons) {
      tb.setPosition(dx, dy);
      dy += padd;
    }
  }

  @Override
  public void init(GameContainer container, StateBasedGame game)
      throws SlickException {
    background = ImageManager.getGfx("space_background");
    this.container = container;
    this.game = game;
    bgMusic = MusicManager.M1;
    started = false;
  }

  @Override
  public void render(GameContainer arg0, StateBasedGame arg1, Graphics g)
      throws SlickException {
    this.background.draw();

    final int menuHeight = buttons.size() * TextButton.DEFAULT_HEIGHT
        + (buttons.size()) * menuPadding;
    UIHelper.drawWindow(g, menuX, menuY, menuWidth, menuHeight);
    for (TextButton tb : buttons) {
      tb.render(g);
    }
  }

  @Override
  public void update(GameContainer container, StateBasedGame game, int arg2)
      throws SlickException {
    MusicManager musicManager = MusicManager.getInstance();
    if (!started || musicManager.getPlayingMusic() == null) {
      started = true;
      musicManager.playMusic(bgMusic);
    }

    Input input = container.getInput();
    for (TextButton tb : buttons) {
      tb.update(input);
    }
  }

  @Override
  public int getID() {
    return id;
  }

}
TOP

Related Classes of com.drakulo.games.ais.ui.state.MainMenuState

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.