Package org.newdawn.slick.tests

Source Code of org.newdawn.slick.tests.TransitionTest$ImageState

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();
    }
  }
}
TOP

Related Classes of org.newdawn.slick.tests.TransitionTest$ImageState

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.