package com.shade.states; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.SlickException; import org.newdawn.slick.state.BasicGameState; import org.newdawn.slick.state.StateBasedGame; import com.shade.controls.Button; import com.shade.controls.ClickListener; import com.shade.controls.SlickButton; import com.shade.levels.Shell; import com.shade.util.ResourceManager; import com.shade.states.CreditState; public class TitleState extends BasicGameState { public static final int ID = 2; private static final String LEVEL_ZERO = "levels/level-0.xml"; private MasterState master; private ResourceManager resource; private SlickButton play, highscores, credits; private int timer; public TitleState(MasterState m) throws SlickException { master = m; resource = m.resource; initButtons(); reset(); } @Override public int getID() { return ID; } public void init(GameContainer container, StateBasedGame game) throws SlickException { throw new RuntimeException("TitleState was init'd!"); } private void reset() throws SlickException { master.control.load(new Shell(LEVEL_ZERO)); } @Override public void enter(GameContainer container, StateBasedGame game) throws SlickException { timer = 0; initButtons(); } // render the aquarium public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException { master.control.render(game, g, resource.get("background")); master.dimmer.render(game, g); resource.get("header").draw(400, 0); play.render(game, g); highscores.render(game, g); credits.render(game, g); resource.get("trim").draw(); } // render the aquarium public void update(GameContainer container, StateBasedGame game, int delta) throws SlickException { master.control.update(game, delta); if (master.dimmer.reversed()) { master.dimmer.update(game, delta); } timer += delta; if (timer > MasterState.STATE_TRANSITION_DELAY) { play.update(game, delta); highscores.update(game, delta); credits.update(game, delta); } } private void initButtons() throws SlickException { initPlayButton(); initHighscoresButton(); initCreditsButton(); } private void initPlayButton() throws SlickException { play = new SlickButton(620, 110, resource.get("play-up"), resource .get("play-down")); play.addListener(new ClickListener() { public void onClick(StateBasedGame game, Button clicked) { game.enterState(SelectState.ID); } }); } private void initHighscoresButton() throws SlickException { highscores = new SlickButton(620, 130, resource.get("highscore-up"), resource.get("highscore-down")); highscores.addListener(new ClickListener() { public void onClick(StateBasedGame game, Button clicked) { game.enterState(HighscoreState.ID); } }); } private void initCreditsButton() throws SlickException { credits = new SlickButton(620, 150, resource.get("credits-up"), resource.get("credits-down")); credits.addListener(new ClickListener() { public void onClick(StateBasedGame game, Button clicked) { game.enterState(CreditState.ID); } }); } }