package rts.views; import java.io.IOException; import org.newdawn.slick.Color; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.Image; import org.newdawn.slick.SlickException; import org.newdawn.slick.state.StateBasedGame; import org.newdawn.slick.state.transition.BlobbyTransition; import org.newdawn.slick.state.transition.CombinedTransition; import org.newdawn.slick.state.transition.FadeInTransition; import org.newdawn.slick.state.transition.FadeOutTransition; import de.matthiasmann.twl.Button; import de.matthiasmann.twl.Widget; import rts.core.Game; import rts.utils.ResourceManager; /** * The main menu of the game. Severals sub menus are linked here like: * * Network menu Options menu Credits menu * * @author Vincent PIRAULT * */ public class MainMenuView extends View { private Image background; private Image gameTitle; @Override public void initResources() { background = ResourceManager.getImage("main_menu_view_background"); gameTitle = ResourceManager.getImage("game_title"); } @Override public void initTwlComponent() { int x = container.getWidth() / 2 - 150; int y = container.getHeight() / 2 - 100; Widget w = new Widget(); w.setPosition(x, y); w.setSize(300, 370); Button networkButton = new Button("Campaign"); networkButton.setPosition(50, 20); networkButton.setSize(150, 40); networkButton.addCallback(new Runnable() { @Override public void run() { // try { // game.getNetworkManager().createServer(); //game.getNetworkManager().joinServer("localhost"); game.enterState(Game.PROFILE_VIEW_ID, new FadeOutTransition(), new FadeInTransition()); //} catch (IOException e) { // e.printStackTrace(); //} } }); w.add(networkButton); Button tutorialButton = new Button("Training"); //Tutorial Button tutorialButton.setPosition(50, 90); tutorialButton.setSize(150, 40); tutorialButton.addCallback(new Runnable() { @Override public void run() { try { game.getNetworkManager().createServer(); game.getNetworkManager().joinServer("localhost"); game.enterState(Game.TUTORIAL_VIEW_ID, new FadeOutTransition(), new FadeInTransition()); } catch (IOException e) { e.printStackTrace(); } } }); w.add(tutorialButton); Button optionsButton = new Button("Options"); optionsButton.setPosition(50, 160); optionsButton.setSize(150, 40); optionsButton.addCallback(new Runnable() { @Override public void run() { game.enterState(Game.OPTIONS_VIEW_ID, new FadeOutTransition(), new FadeInTransition()); } }); w.add(optionsButton); Button creditsButton = new Button("Credits"); creditsButton.setPosition(50, 230); creditsButton.setSize(150, 40); creditsButton.addCallback(new Runnable() { @Override public void run() { game.enterState(Game.CREDITS_VIEW_ID, new FadeOutTransition(), new FadeInTransition()); } }); w.add(creditsButton); Button exitButton = new Button("Exit"); exitButton.setPosition(50, 300); exitButton.setSize(150, 40); exitButton.addCallback(new Runnable() { @Override public void run() { game.getContainer().exit(); } }); w.add(exitButton); root.add(w); } @Override public void render(GameContainer container, StateBasedGame sbgame, Graphics g) throws SlickException { g.drawImage(background, 0, 0); g.drawImage(gameTitle, container.getWidth() / 2 - 160, container.getHeight() / 2 - 220); super.render(container, sbgame, g); g.setColor(Color.white); g.drawString(Game.VERSION, 5, container.getHeight() - 20); } @Override public int getID() { return Game.MAIN_MENU_VIEW_ID; } }