mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-10 05:41:51 +09:00
added sources for Slick
Former-commit-id: 1647fa32ef6894bd7db44f741f07c2f4dcdf9054 Former-commit-id: 0e5810dcfbe1fd59b13e7cabe9f1e93c5542da2d
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
package org.newdawn.slick.tests;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.newdawn.slick.AppGameContainer;
|
||||
import org.newdawn.slick.BasicGame;
|
||||
import org.newdawn.slick.GameContainer;
|
||||
import org.newdawn.slick.Graphics;
|
||||
import org.newdawn.slick.Input;
|
||||
import org.newdawn.slick.SlickException;
|
||||
import org.newdawn.slick.particles.ConfigurableEmitter;
|
||||
import org.newdawn.slick.particles.ParticleIO;
|
||||
import org.newdawn.slick.particles.ParticleSystem;
|
||||
|
||||
/**
|
||||
* A test for duplicating a ConfigurableEmitter several times
|
||||
* @author Tommy
|
||||
*
|
||||
*/
|
||||
public class DuplicateEmitterTest extends BasicGame {
|
||||
|
||||
/** the game container */
|
||||
private GameContainer container;
|
||||
/** the particle system which contains an explosion emitter which we want to duplicate */
|
||||
private ParticleSystem explosionSystem;
|
||||
/** The original emitter we've duplicated */
|
||||
private ConfigurableEmitter explosionEmitter;
|
||||
|
||||
/**
|
||||
* Create a new DuplicateEmitterTest
|
||||
*/
|
||||
public DuplicateEmitterTest() {
|
||||
super("DuplicateEmitterTest");
|
||||
}
|
||||
|
||||
/**
|
||||
* load ressources (the particle system) and create our duplicate emitters
|
||||
* and place them nicely on the screen
|
||||
* @param container The surrounding game container
|
||||
*/
|
||||
public void init(GameContainer container) throws SlickException {
|
||||
this.container = container;
|
||||
|
||||
try {
|
||||
// load the particle system containing our explosion emitter
|
||||
explosionSystem = ParticleIO.loadConfiguredSystem("testdata/endlessexplosion.xml");
|
||||
// get the emitter, it's the first (and only one) in this particle system
|
||||
explosionEmitter = (ConfigurableEmitter) explosionSystem.getEmitter(0);
|
||||
// set the original emitter in the middle of the screen at the top
|
||||
explosionEmitter.setPosition(400,100);
|
||||
// create 5 duplicate emitters
|
||||
for (int i = 0; i < 5; i++) {
|
||||
// a single duplicate of the first emitter is created here
|
||||
ConfigurableEmitter newOne = explosionEmitter.duplicate();
|
||||
// we might get null as a result - protect against that
|
||||
if (newOne == null)
|
||||
throw new SlickException("Failed to duplicate explosionEmitter");
|
||||
// give the new emitter a new unique name
|
||||
newOne.name = newOne.name + "_" + i;
|
||||
// place it somewhere on a row below the original emitter
|
||||
newOne.setPosition((i+1)* (800/6), 400);
|
||||
// and add it to the original particle system to get the new emitter updated and rendered
|
||||
explosionSystem.addEmitter(newOne);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new SlickException("Failed to load particle systems", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.BasicGame#update(org.newdawn.slick.GameContainer, int)
|
||||
*/
|
||||
public void update(GameContainer container, int delta) throws SlickException {
|
||||
explosionSystem.update(delta);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.BasicGame#render(org.newdawn.slick.GameContainer, org.newdawn.slick.Graphics)
|
||||
*/
|
||||
public void render(GameContainer container, Graphics g) throws SlickException {
|
||||
explosionSystem.render();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.BasicGame#keyPressed(int, char)
|
||||
*/
|
||||
public void keyPressed(int key, char c) {
|
||||
if (key == Input.KEY_ESCAPE) {
|
||||
container.exit();
|
||||
}
|
||||
if (key == Input.KEY_K) {
|
||||
explosionEmitter.wrapUp();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Entry point to our test
|
||||
*
|
||||
* @param argv The arguments to pass into the test, not used here
|
||||
*/
|
||||
public static void main(String[] argv) {
|
||||
try {
|
||||
AppGameContainer container = new AppGameContainer(new DuplicateEmitterTest());
|
||||
container.setDisplayMode(800,600,false);
|
||||
container.start();
|
||||
} catch (SlickException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user