package org.newdawn.slick.tests;
import java.util.ArrayList;
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.opengl.SlickCallable;
import org.newdawn.slick.util.Log;
/**
* A test box containing a bunch of tests that can be used for quickly sanity
* checking tests.
*
* @author kevin
*/
public class TestBox extends BasicGame {
/** The games that have been added */
private ArrayList games = new ArrayList();
/** The current game */
private BasicGame currentGame;
/** The index of the current game */
private int index;
/** The game container */
private AppGameContainer container;
/**
* Create a new box containing all the tests
*/
public TestBox() {
super("Test Box");
}
/**
* Add a game to the box
*
* @param game The game to add to the test box
*/
public void addGame(Class game) {
games.add(game);
}
/**
* Move to the next game
*/
private void nextGame() {
if (index == -1) {
return;
}
index++;
if (index >= games.size()) {
index=0;
}
startGame();
}
/**
* Start a particular game
*/
private void startGame() {
try {
currentGame = (BasicGame) ((Class) games.get(index)).newInstance();
container.getGraphics().setBackground(Color.black);
currentGame.init(container);
currentGame.render(container, container.getGraphics());
} catch (Exception e) {
Log.error(e);
}
container.setTitle(currentGame.getTitle());
}
/**
* @see org.newdawn.slick.BasicGame#init(org.newdawn.slick.GameContainer)
*/
public void init(GameContainer c) throws SlickException {
if (games.size() == 0) {
currentGame = new BasicGame("NULL") {
public void init(GameContainer container) throws SlickException {
}
public void update(GameContainer container, int delta) throws SlickException {
}
public void render(GameContainer container, Graphics g) throws SlickException {
}
};
currentGame.init(c);
index = -1;
} else {
index = 0;
container = (AppGameContainer) c;
startGame();
}
}
/**
* @see org.newdawn.slick.BasicGame#update(org.newdawn.slick.GameContainer, int)
*/
public void update(GameContainer container, int delta) throws SlickException {
currentGame.update(container, delta);
}
/**
* @see org.newdawn.slick.Game#render(org.newdawn.slick.GameContainer, org.newdawn.slick.Graphics)
*/
public void render(GameContainer container, Graphics g) throws SlickException {
SlickCallable.enterSafeBlock();
currentGame.render(container, g);
SlickCallable.leaveSafeBlock();
}
/**
* @see org.newdawn.slick.BasicGame#controllerButtonPressed(int, int)
*/
public void controllerButtonPressed(int controller, int button) {
currentGame.controllerButtonPressed(controller, button);
}
/**
* @see org.newdawn.slick.BasicGame#controllerButtonReleased(int, int)
*/
public void controllerButtonReleased(int controller, int button) {
currentGame.controllerButtonReleased(controller, button);
}
/**
* @see org.newdawn.slick.BasicGame#controllerDownPressed(int)
*/
public void controllerDownPressed(int controller) {
currentGame.controllerDownPressed(controller);
}
/**
* @see org.newdawn.slick.BasicGame#controllerDownReleased(int)
*/
public void controllerDownReleased(int controller) {
currentGame.controllerDownReleased(controller);
}
/**
* @see org.newdawn.slick.BasicGame#controllerLeftPressed(int)
*/
public void controllerLeftPressed(int controller) {
currentGame.controllerLeftPressed(controller);
}
/**
* @see org.newdawn.slick.BasicGame#controllerLeftReleased(int)
*/
public void controllerLeftReleased(int controller) {
currentGame.controllerLeftReleased(controller);
}
/**
* @see org.newdawn.slick.BasicGame#controllerRightPressed(int)
*/
public void controllerRightPressed(int controller) {
currentGame.controllerRightPressed(controller);
}
/**
* @see org.newdawn.slick.BasicGame#controllerRightReleased(int)
*/
public void controllerRightReleased(int controller) {
currentGame.controllerRightReleased(controller);
}
/**
* @see org.newdawn.slick.BasicGame#controllerUpPressed(int)
*/
public void controllerUpPressed(int controller) {
currentGame.controllerUpPressed(controller);
}
/**
* @see org.newdawn.slick.BasicGame#controllerUpReleased(int)
*/
public void controllerUpReleased(int controller) {
currentGame.controllerUpReleased(controller);
}
/**
* @see org.newdawn.slick.BasicGame#keyPressed(int, char)
*/
public void keyPressed(int key, char c) {
currentGame.keyPressed(key, c);
if (key == Input.KEY_ENTER) {
nextGame();
}
}
/**
* @see org.newdawn.slick.BasicGame#keyReleased(int, char)
*/
public void keyReleased(int key, char c) {
currentGame.keyReleased(key, c);
}
/**
* @see org.newdawn.slick.BasicGame#mouseMoved(int, int, int, int)
*/
public void mouseMoved(int oldx, int oldy, int newx, int newy) {
currentGame.mouseMoved(oldx, oldy, newx, newy);
}
/**
* @see org.newdawn.slick.BasicGame#mousePressed(int, int, int)
*/
public void mousePressed(int button, int x, int y) {
currentGame.mousePressed(button, x, y);
}
/**
* @see org.newdawn.slick.BasicGame#mouseReleased(int, int, int)
*/
public void mouseReleased(int button, int x, int y) {
currentGame.mouseReleased(button, x, y);
}
/**
* @see org.newdawn.slick.BasicGame#mouseWheelMoved(int)
*/
public void mouseWheelMoved(int change) {
currentGame.mouseWheelMoved(change);
}
/**
* Entry point to our test
*
* @param argv The arguments to pass into the test
*/
public static void main(String[] argv) {
try {
TestBox box = new TestBox();
box.addGame(AnimationTest.class);
box.addGame(AntiAliasTest.class);
box.addGame(BigImageTest.class);
box.addGame(ClipTest.class);
box.addGame(DuplicateEmitterTest.class);
box.addGame(FlashTest.class);
box.addGame(FontPerformanceTest.class);
box.addGame(FontTest.class);
box.addGame(GeomTest.class);
box.addGame(GradientTest.class);
box.addGame(GraphicsTest.class);
box.addGame(ImageBufferTest.class);
box.addGame(ImageReadTest.class);
box.addGame(ImageTest.class);
box.addGame(KeyRepeatTest.class);
box.addGame(MusicListenerTest.class);
box.addGame(PackedSheetTest.class);
box.addGame(PedigreeTest.class);
box.addGame(PureFontTest.class);
box.addGame(ShapeTest.class);
box.addGame(SoundTest.class);
box.addGame(SpriteSheetFontTest.class);
box.addGame(TransparentColorTest.class);
AppGameContainer container = new AppGameContainer(box);
container.setDisplayMode(800,600,false);
container.start();
} catch (SlickException e) {
e.printStackTrace();
}
}
}