From 060b5f51e887b1ae3e5e2366dee60c5a26981858 Mon Sep 17 00:00:00 2001 From: Solargale Date: Sat, 4 Apr 2020 18:32:20 -0600 Subject: [PATCH] Made it so that the world doesn't generate if it has already generated in the past --- .../com/mygdx/game/Dimension/Superchunks.java | 22 ++++++++++++++----- .../mygdx/game/Dimension/WorldRenderer.java | 4 ++-- core/src/com/mygdx/game/Main.java | 4 +++- core/src/com/mygdx/game/Restrictions.java | 4 ++-- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/core/src/com/mygdx/game/Dimension/Superchunks.java b/core/src/com/mygdx/game/Dimension/Superchunks.java index 563d4c5..0aca159 100644 --- a/core/src/com/mygdx/game/Dimension/Superchunks.java +++ b/core/src/com/mygdx/game/Dimension/Superchunks.java @@ -9,11 +9,17 @@ import static com.mygdx.game.Restrictions.*; public class Superchunks { public static HashMap, Chunks> overworld = new HashMap<>(); + public static HashMap, Chunks> loadedChunks = new HashMap<>(); private Superchunks() {} + public static void create(){ + BlockMaterials.create(); + } + public static void generateSuperchunk(int x, int y) { - Chunks chunks; + Chunks chunks = null; + Pair pair = null; int startX = x * SUPER_CHUNK_SIZE; int startY = y * SUPER_CHUNK_SIZE; int endX = startX + SUPER_CHUNK_SIZE; @@ -21,12 +27,18 @@ public class Superchunks { for (int i = startX; i != endX; i++) { for (int j = startY; j != endY; j++) { - chunks = new Chunks(); - BlockMaterials.create(); - chunks.generateChunk(i, j); - overworld.put(new Pair<>(i, j), chunks); + pair = new Pair<>(i, j); + if(overworld.containsKey(pair)){ + chunks = overworld.get(pair); + } + else{ + chunks = new Chunks(); + chunks.generateChunk(i, j); + } + loadedChunks.put(pair,chunks); } } + overworld.putAll(loadedChunks); } diff --git a/core/src/com/mygdx/game/Dimension/WorldRenderer.java b/core/src/com/mygdx/game/Dimension/WorldRenderer.java index 112a5cb..d809c45 100644 --- a/core/src/com/mygdx/game/Dimension/WorldRenderer.java +++ b/core/src/com/mygdx/game/Dimension/WorldRenderer.java @@ -25,8 +25,8 @@ public class WorldRenderer implements Restrictions { } public void drawWorld(Batch batch) { - for (Pair worldpair: Superchunks.overworld.keySet()) { - Chunks chunks = Superchunks.overworld.get(worldpair); + for (Pair worldpair: Superchunks.loadedChunks.keySet()) { + Chunks chunks = Superchunks.loadedChunks.get(worldpair); for (Pair chunkpair: chunks.blocks.keySet()) { HashMap, Block> blocks = chunks.getBlocks(); diff --git a/core/src/com/mygdx/game/Main.java b/core/src/com/mygdx/game/Main.java index e65314a..301d151 100644 --- a/core/src/com/mygdx/game/Main.java +++ b/core/src/com/mygdx/game/Main.java @@ -30,6 +30,7 @@ public class Main extends ApplicationAdapter { Gdx.graphics.setWindowedMode(1024,576); OrthographicCamera cam = new OrthographicCamera(VIEWPORT_WIDTH, VIEWPORT_HEIGHT); fitViewport = new FitViewport(VIEWPORT_WIDTH,VIEWPORT_HEIGHT, cam); + Superchunks.create(); //Starting location of the player player = new Player(0, 0, cam); @@ -53,7 +54,7 @@ public class Main extends ApplicationAdapter { delta +=Gdx.graphics.getDeltaTime(); if(delta > RENDER_TIME) { delta -= RENDER_TIME; - Superchunks.overworld.clear(); + Superchunks.loadedChunks.clear(); Superchunks.loadChunks(player); } @@ -78,5 +79,6 @@ public class Main extends ApplicationAdapter { worldRenderer.dispose(); gui.dispose(); batch.dispose(); + } } diff --git a/core/src/com/mygdx/game/Restrictions.java b/core/src/com/mygdx/game/Restrictions.java index ae69899..2c4598a 100644 --- a/core/src/com/mygdx/game/Restrictions.java +++ b/core/src/com/mygdx/game/Restrictions.java @@ -8,6 +8,6 @@ public interface Restrictions { int KEY_DELAY = 1; int CHUNK_SIZE = 16; int SUPER_CHUNK_SIZE = 3; - int RENDER_DISTANCE = 3; - float RENDER_TIME = 1; + int RENDER_DISTANCE = 2; + float RENDER_TIME = 4f; }