Przeglądaj źródła

Game Launcher

- Created the GameLauncher class.
- Made GuiTextures use the Texture class instead of texture IDs.
- Made it possible to create a loader with no model specification.
Tankernn 8 lat temu
rodzic
commit
be8966bcf9

+ 1 - 1
pom.xml

@@ -5,7 +5,7 @@
 
 	<groupId>eu.tankernn.gameEngine</groupId>
 	<artifactId>tankernn-game-engine</artifactId>
-	<version>1.1</version>
+	<version>1.2</version>
 	<packaging>jar</packaging>
 
 	<url>http://tankernn.eu</url>

+ 14 - 4
src/main/java/eu/tankernn/gameEngine/World.java → src/main/java/eu/tankernn/gameEngine/Chunk.java

@@ -5,16 +5,26 @@ import java.util.List;
 import eu.tankernn.gameEngine.entities.Entity;
 import eu.tankernn.gameEngine.entities.Light;
 
-public class World {
+public class Chunk {
 	private final int seed;
 	private List<Light> lights;
 	private List<Entity> entities;
 	
-	public World(int seed, List<Light> lights, List<Entity> entities) {
+	public Chunk(int seed, List<Light> lights, List<Entity> entities) {
 		this.seed = seed;
 		this.lights = lights;
 		this.entities = entities;
 	}
-	
-	
+
+	public int getSeed() {
+		return seed;
+	}
+
+	public List<Light> getLights() {
+		return lights;
+	}
+
+	public List<Entity> getEntities() {
+		return entities;
+	}
 }

+ 28 - 0
src/main/java/eu/tankernn/gameEngine/GameLauncher.java

@@ -0,0 +1,28 @@
+package eu.tankernn.gameEngine;
+
+import org.lwjgl.opengl.Display;
+
+import eu.tankernn.gameEngine.renderEngine.DisplayManager;
+import eu.tankernn.gameEngine.util.NativesExporter;
+
+public class GameLauncher {
+	private static TankernnGame instance;
+
+	public static void launch(TankernnGame game) {
+		instance = game;
+		init();
+
+		while (!Display.isCloseRequested()) {
+			instance.update();
+			instance.render();
+		}
+
+		instance.cleanUp();
+		DisplayManager.closeDisplay();
+	}
+
+	private static void init() {
+		NativesExporter.exportNatives();
+		DisplayManager.createDisplay(instance.getName());
+	}
+}

+ 2 - 1
src/main/java/eu/tankernn/gameEngine/MainLoop.java

@@ -66,7 +66,8 @@ public class MainLoop {
 	public static void main(String[] args) throws IOException {
 		DisplayManager.createDisplay("Tankernn Game Engine tester");
 
-		Loader loader = new Loader(new InternalFile("models.json"));
+		Loader loader = new Loader();
+		loader.readModelSpecification(new InternalFile("models.json"));
 
 		// ### Terrain textures ###
 

+ 9 - 2
src/main/java/eu/tankernn/gameEngine/TankernnGame.java

@@ -12,16 +12,19 @@ import eu.tankernn.gameEngine.renderEngine.water.WaterMaster;
 import eu.tankernn.gameEngine.util.InternalFile;
 
 public class TankernnGame {
+	private final String name;
 	protected Loader loader;
 	protected MasterRenderer renderer;
 	protected WaterMaster waterMaster;
 	protected Camera camera;
 	protected Skybox sky;
 	
-	public TankernnGame(Skybox skybox, String dudvMap, String normalMap) {
+	public TankernnGame(String name, Skybox skybox, String dudvMap, String normalMap) {
+		this.name = name;
 		this.sky = skybox;
 		try {
-			loader = new Loader(new InternalFile("models.txt"));
+			loader = new Loader();
+			loader.readModelSpecification(new InternalFile("models.json"));
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
@@ -47,4 +50,8 @@ public class TankernnGame {
 		loader.cleanUp();
 		renderer.cleanUp();
 	}
+	
+	public String getName() {
+		return name;
+	}
 }

+ 1 - 5
src/main/java/eu/tankernn/gameEngine/loader/Loader.java

@@ -43,10 +43,6 @@ public class Loader {
 	private List<Texture> textures = new ArrayList<Texture>();
 	private Map<Integer, TexturedModel> models = new HashMap<Integer, TexturedModel>();
 
-	public Loader(InternalFile modelSpec) throws IOException {
-		readModelSpecification(modelSpec);
-	}
-
 	public RawModel loadToVAO(float[] vertices, float[] textureCoords, float[] normals, int[] indices) {
 		RawModel model = RawModel.create();
 		model.storeData(indices, vertices.length / 3, vertices, textureCoords, normals);
@@ -186,7 +182,7 @@ public class Loader {
 		return this.loadToVAO(data).withBoundingBox(data);
 	}
 
-	private void readModelSpecification(InternalFile file) throws IOException {
+	public void readModelSpecification(InternalFile file) throws IOException {
 		Map<InternalFile, RawModel> cachedRawModels = new HashMap<InternalFile, RawModel>();
 		Map<InternalFile, Texture> cachedTextures = new HashMap<InternalFile, Texture>();
 		JSONObject spec;

+ 6 - 2
src/main/java/eu/tankernn/gameEngine/renderEngine/DisplayManager.java

@@ -32,12 +32,16 @@ public class DisplayManager {
 	 * Creates a new display.
 	 */
 	public static void createDisplay(String title) {
+		createDisplay(title, WIDTH, HEIGHT);
+	}
+	
+	public static void createDisplay(String title, int width, int height) {
 		ContextAttribs attribs = new ContextAttribs(3, 3)
 				.withForwardCompatible(true)
 				.withProfileCore(true);
 		
 		try {
-			setDisplayMode(WIDTH, HEIGHT, fullscreen);
+			setDisplayMode(width, height, fullscreen);
 			Display.setResizable(true);
 			Display.create(new PixelFormat().withDepthBits(24), attribs);
 			GL11.glEnable(GL13.GL_MULTISAMPLE);
@@ -45,7 +49,7 @@ public class DisplayManager {
 			e.printStackTrace();
 		}
 		
-		GL11.glViewport(0, 0, WIDTH, HEIGHT);
+		GL11.glViewport(0, 0, width, height);
 		lastFrameTime = getCurrentTime();
 		
 		Display.setTitle(title);

+ 1 - 3
src/main/java/eu/tankernn/gameEngine/renderEngine/gui/GuiRenderer.java

@@ -3,7 +3,6 @@ package eu.tankernn.gameEngine.renderEngine.gui;
 import java.util.List;
 
 import org.lwjgl.opengl.GL11;
-import org.lwjgl.opengl.GL13;
 import org.lwjgl.util.vector.Matrix4f;
 
 import eu.tankernn.gameEngine.loader.Loader;
@@ -28,8 +27,7 @@ public class GuiRenderer {
 		GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
 		GL11.glDisable(GL11.GL_DEPTH_TEST);
 		for (GuiTexture gui : guis) {
-			GL13.glActiveTexture(GL13.GL_TEXTURE0);
-			GL11.glBindTexture(GL11.GL_TEXTURE_2D, gui.getTexture());
+			gui.getTexture().bindToUnit(0);
 			Matrix4f matrix = Maths.createTransformationMatrix(gui.getPosition(), gui.getScale());
 			shader.transformationMatrix.loadMatrix(matrix);
 			GL11.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, quad.getIndexCount());

+ 13 - 3
src/main/java/eu/tankernn/gameEngine/renderEngine/gui/GuiTexture.java

@@ -2,19 +2,21 @@ package eu.tankernn.gameEngine.renderEngine.gui;
 
 import org.lwjgl.util.vector.Vector2f;
 
+import eu.tankernn.gameEngine.loader.textures.Texture;
+
 public class GuiTexture {
 	
-	private int texture;
+	private Texture texture;
 	private Vector2f position;
 	private Vector2f scale;
 	
-	public GuiTexture(int texture, Vector2f position, Vector2f scale) {
+	public GuiTexture(Texture texture, Vector2f position, Vector2f scale) {
 		this.texture = texture;
 		this.position = position;
 		this.scale = scale;
 	}
 
-	public int getTexture() {
+	public Texture getTexture() {
 		return texture;
 	}
 
@@ -25,5 +27,13 @@ public class GuiTexture {
 	public Vector2f getScale() {
 		return scale;
 	}
+
+	public void setPosition(Vector2f position) {
+		this.position = position;
+	}
+
+	public void setScale(Vector2f scale) {
+		this.scale = scale;
+	}
 	
 }