package org.newdawn.slick.tests; import org.newdawn.slick.AppGameContainer; import org.newdawn.slick.Color; 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.BasicGameState; import org.newdawn.slick.state.StateBasedGame; import org.newdawn.slick.state.transition.BlobbyTransition; import org.newdawn.slick.state.transition.FadeInTransition; import org.newdawn.slick.state.transition.FadeOutTransition; import org.newdawn.slick.state.transition.HorizontalSplitTransition; import org.newdawn.slick.state.transition.RotateTransition; import org.newdawn.slick.state.transition.SelectTransition; import org.newdawn.slick.state.transition.Transition; import org.newdawn.slick.state.transition.VerticalSplitTransition; import org.newdawn.slick.util.Log; /** * A test to view the different transitions that are currently implemented * * @author kevin */ public class TransitionTest extends StateBasedGame { /** The transitions under test */ private Class[][] transitions = new Class[][] { {null, VerticalSplitTransition.class}, {FadeOutTransition.class, FadeInTransition.class}, {null, RotateTransition.class}, {null, HorizontalSplitTransition.class}, {null, BlobbyTransition.class}, {null, SelectTransition.class}, }; /** The index of the next transition to use */ private int index; /** * Test the transitions implemented */ public TransitionTest() { super("Transition Test - Hit Space To Transition"); } /** * @see org.newdawn.slick.state.StateBasedGame#initStatesList(org.newdawn.slick.GameContainer) */ public void initStatesList(GameContainer container) throws SlickException { addState(new ImageState(0, "testdata/wallpaper/paper1.png", 1)); addState(new ImageState(1, "testdata/wallpaper/paper2.png", 2)); addState(new ImageState(2, "testdata/bigimage.tga", 0)); } /** * Get the next transition pair that we'lluse * * @return The pair of transitions used to enter and leave the next state */ public Transition[] getNextTransitionPair() { Transition[] pair = new Transition[2]; try { if (transitions[index][0] != null) { pair[0] = (Transition) transitions[index][0].newInstance(); } if (transitions[index][1] != null) { pair[1] = (Transition) transitions[index][1].newInstance(); } } catch (Throwable e) { Log.error(e); } index++; if (index >= transitions.length) { index = 0; } return pair; } /** * A test state that just displayed one image full scren * * @author kevin */ private class ImageState extends BasicGameState { /** The id of this state */ private int id; /** The next state we'll move to */ private int next; /** The reference to the image to be displayed */ private String ref; /** The loaded image */ private Image image; /** * Create a new image state * * @param id The id of the this state * @param ref The reference to the image to display * @param next The next state we'll mvoe to */ public ImageState(int id, String ref, int next) { this.ref = ref; this.id = id; this.next = next; } /** * @see org.newdawn.slick.state.BasicGameState#getID() */ public int getID() { return id; } /** * @see org.newdawn.slick.state.GameState#init(org.newdawn.slick.GameContainer, org.newdawn.slick.state.StateBasedGame) */ public void init(GameContainer container, StateBasedGame game) throws SlickException { image = new Image(ref); } /** * @see org.newdawn.slick.state.GameState#render(org.newdawn.slick.GameContainer, org.newdawn.slick.state.StateBasedGame, org.newdawn.slick.Graphics) */ public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException { image.draw(0,0,800,600); g.setColor(Color.red); g.fillRect(-50,200,50,50); } /** * @see org.newdawn.slick.state.GameState#update(org.newdawn.slick.GameContainer, org.newdawn.slick.state.StateBasedGame, int) */ public void update(GameContainer container, StateBasedGame game, int delta) throws SlickException { if (container.getInput().isKeyPressed(Input.KEY_SPACE)) { Transition[] pair = getNextTransitionPair(); game.enterState(next, pair[0], pair[1]); } } } /** * Entry point to our test * * @param argv * The arguments passed to the test */ public static void main(String[] argv) { try { AppGameContainer container = new AppGameContainer( new TransitionTest()); container.setDisplayMode(800, 600, false); container.start(); } catch (SlickException e) { e.printStackTrace(); } } }