Finished optimizations for now

This commit is contained in:
2020-04-11 05:33:06 -06:00
parent af0bacc46f
commit d6c54921d8
5 changed files with 54 additions and 56 deletions

View File

@@ -10,10 +10,14 @@ import com.mygdx.game.Restrictions;
import static com.mygdx.game.Main.cam; import static com.mygdx.game.Main.cam;
public class Mouse implements Restrictions { public class Mouse implements Restrictions {
Texture crosshair = new Texture("core/assets/crosshair.png"); Texture crosshair;
public void selectedTile(SpriteBatch batch){ public Mouse() {
Vector3 mousePos = new Vector3( Gdx.input.getX(), Gdx.input.getY(),0); this.crosshair = new Texture("core/assets/crosshair.png");
}
public void selectedTile(SpriteBatch batch) {
Vector3 mousePos = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
cam.unproject(mousePos); cam.unproject(mousePos);
int x = getSelectedX(mousePos); int x = getSelectedX(mousePos);
int y = getSelectedY(mousePos); int y = getSelectedY(mousePos);

View File

@@ -8,16 +8,13 @@ import com.badlogic.gdx.utils.Array;
import com.mygdx.game.Main; import com.mygdx.game.Main;
import com.mygdx.game.Restrictions; import com.mygdx.game.Restrictions;
import java.util.HashMap;
public class Player implements Restrictions { public class Player implements Restrictions {
private static int x; private static int x;
private static int y; private static int y;
private OrthographicCamera cam; private OrthographicCamera cam;
private String spriteName; private final String spriteName;
public TextureAtlas textureAtlas; public TextureAtlas textureAtlas;
private Animation<TextureAtlas.AtlasRegion> animation; private Animation<TextureAtlas.AtlasRegion> animation;
private HashMap<String, Animation> animations = new HashMap<>();
public Player(OrthographicCamera cam, int x, int y) { public Player(OrthographicCamera cam, int x, int y) {
Player.x = x<<TILE_SHIFT; Player.x = x<<TILE_SHIFT;

View File

@@ -7,24 +7,25 @@ import com.mygdx.game.OpenSimplexNoise;
import java.util.HashMap; import java.util.HashMap;
import static com.mygdx.game.Dimension.BlockMaterials.*; import static com.mygdx.game.Dimension.BlockMaterials.materials;
import static com.mygdx.game.Restrictions.*; import static com.mygdx.game.Restrictions.*;
public class Chunks{ public class Chunks {
OpenSimplexNoise gen1 = new OpenSimplexNoise(SEED+1); public static HashMap<Triple<Integer, Integer, Integer>, Block> blocks = new HashMap<>();
OpenSimplexNoise gen2 = new OpenSimplexNoise(SEED); public static HashMap<Pair<Integer, Integer>, Block> buildings = new HashMap<>();
public static OpenSimplexNoise gen1 = new OpenSimplexNoise(SEED + 1);
public static OpenSimplexNoise gen2 = new OpenSimplexNoise(SEED);
public static void create() {
public static void create(){
int i = 10; int i = 10;
setBlock(3+i,2,"wall"); setBlock(3 + i, 2, "wall");
setBlock(4+i,2,"wall"); setBlock(4 + i, 2, "wall");
setBlock(3+i,3,"roof"); setBlock(3 + i, 3, "roof");
setBlock(4+i,3,"roof"); setBlock(4 + i, 3, "roof");
} }
public static void setBlock(int x, int y, String name){ public static void setBlock(int x, int y, String name) {
buildings.put(new Pair<>(x,y),new Block(name)); buildings.put(new Pair<>(x, y), materials.get(name));
} }
public static void placeBlock(int x, int y, String name){ public static void placeBlock(int x, int y, String name){
@@ -41,20 +42,16 @@ public class Chunks{
} }
} }
public static HashMap<Triple<Integer, Integer,Integer>, Block> blocks = new HashMap<>(); public static void ungenerateChunk(int x, int y) {
public static HashMap<Pair<Integer,Integer>, Block> buildings = new HashMap<>();
public void ungenerateChunk(int x, int y) {
int startX = x << CHUNK_SHIFT; int startX = x << CHUNK_SHIFT;
int startY = y << CHUNK_SHIFT; int startY = y << CHUNK_SHIFT;
int endX = startX + CHUNK_SIZE; int endX = startX + CHUNK_SIZE;
int endY = startY + CHUNK_SIZE; int endY = startY + CHUNK_SIZE;
//Going from start of selected chunk to end of selected chunk in x and y //Going from start of selected chunk to end of selected chunk in x and y
for (int i = startX; i != endX; i++){ for (int i = startX; i != endX; i++) {
for (int j = startY; j != endY; j++) { for (int j = startY; j != endY; j++) {
blocks.remove(new Triple<>(i, j,0), getTerrain(i, j)); blocks.remove(new Triple<>(i, j, 0), getTerrain(i, j));
} }
} }
//Second Layer //Second Layer
@@ -66,14 +63,14 @@ public class Chunks{
} }
} }
public void generateChunk(int x, int y){ public static void generateChunk(int x, int y) {
int startX = x << CHUNK_SHIFT; int startX = x << CHUNK_SHIFT;
int startY = y << CHUNK_SHIFT; int startY = y << CHUNK_SHIFT;
int endX = startX + CHUNK_SIZE; int endX = startX + CHUNK_SIZE;
int endY = startY + CHUNK_SIZE; int endY = startY + CHUNK_SIZE;
//Going from start of selected chunk to end of selected chunk in x and y //Going from start of selected chunk to end of selected chunk in x and y
for (int i = startX; i != endX; i++){ for (int i = startX; i != endX; i++) {
for (int j = startY; j != endY; j++) { for (int j = startY; j != endY; j++) {
blocks.put(new Triple<>(i, j, 0), getTerrain(i, j)); blocks.put(new Triple<>(i, j, 0), getTerrain(i, j));
} }
@@ -88,27 +85,27 @@ public class Chunks{
} }
} }
public Block getBuildings(int x, int y) { public static Block getBuildings(int x, int y) {
return buildings.getOrDefault(new Pair<>(x,y),new Block("air")); return buildings.getOrDefault(new Pair<>(x, y), new Block("air"));
} }
public double noise1(double nx, double ny) { public static double noise1(double nx, double ny) {
return gen1.eval(nx, ny)/2 + 0.5; return gen1.eval(nx, ny) / 2 + 0.5;
} }
public double noise2(double nx, double ny) { public static double noise2(double nx, double ny) {
return gen2.eval(nx, ny)/2 + 0.5; return gen2.eval(nx, ny) / 2 + 0.5;
} }
public Block getTerrain(int x, int y) { public static Block getTerrain(int x, int y) {
double moisture, elevation,nx,ny; double moisture, elevation, nx, ny;
double scale = 0.01; double scale = 0.01;
nx = x * scale; nx = x * scale;
ny = y * scale; ny = y * scale;
elevation = (0.17 * noise1( 1 * nx, 1 * ny) elevation = (0.17 * noise1(1 * nx, 1 * ny)
+ 0.42 * noise1( 2 * nx, 2 * ny) + 0.42 * noise1(2 * nx, 2 * ny)
+ 0.16 * noise1( 4 * nx, 4 * ny) + 0.16 * noise1(4 * nx, 4 * ny)
+ 0.00 * noise1( 8 * nx, 8 * ny) + 0.00 * noise1(8 * nx, 8 * ny)
+ 0.00 * noise1(16 * nx, 16 * ny) + 0.00 * noise1(16 * nx, 16 * ny)
+ 0.03 * noise1(32 * nx, 32 * ny)); + 0.03 * noise1(32 * nx, 32 * ny));
elevation /= (0.17+0.42+0.16+0.00+0.00+0.03); elevation /= (0.17+0.42+0.16+0.00+0.00+0.03);
@@ -124,8 +121,8 @@ public class Chunks{
return getBiomeBlock(moisture, elevation); return getBiomeBlock(moisture, elevation);
} }
public Block getBiomeBlock(double moisture, double elevation) { public static Block getBiomeBlock(double moisture, double elevation) {
String biome = getBiome(moisture,elevation); String biome = getBiome(moisture, elevation);
if (biome.equals("Tundra")) return materials.get("snow"); if (biome.equals("Tundra")) return materials.get("snow");
if (biome.equals("Taiga")) return materials.get("snow"); if (biome.equals("Taiga")) return materials.get("snow");
if (biome.equals("Snow")) return materials.get("snow"); if (biome.equals("Snow")) return materials.get("snow");
@@ -148,7 +145,7 @@ public class Chunks{
return materials.get("water"); return materials.get("water");
} }
public String getBiome(double moisture,double elevation){ public static String getBiome(double moisture, double elevation) {
if (elevation < 0.1) return "Ocean"; if (elevation < 0.1) return "Ocean";
if (elevation < 0.12) return "Beach"; if (elevation < 0.12) return "Beach";

View File

@@ -6,16 +6,14 @@ import static com.mygdx.game.Restrictions.*;
public class World { public class World {
public static void generateWorld(int x, int y) { public static void generateWorld(int x, int y) {
Chunks chunks = new Chunks(); if (Chunks.isEmpty(x, y)) {
if (chunks.isEmpty(x, y)) { Chunks.generateChunk(x, y);
chunks.generateChunk(x, y);
} }
} }
public static void ungenerateWorld(int x, int y) { public static void ungenerateWorld(int x, int y) {
Chunks chunks = new Chunks(); if (!Chunks.isEmpty(x, y)) {
if (!chunks.isEmpty(x, y)) { Chunks.ungenerateChunk(x, y);
chunks.ungenerateChunk(x, y);
} }
} }

View File

@@ -11,19 +11,21 @@ import com.mygdx.game.Character.Mouse;
import com.mygdx.game.Restrictions; import com.mygdx.game.Restrictions;
public class GUI implements Restrictions { public class GUI implements Restrictions {
private Stage stage; private final Stage stage;
private Label label; private final Label label;
private Mouse mouse; private final Mouse mouse;
private BitmapFont font = new BitmapFont(); private final BitmapFont font;
private FitViewport fitViewport; private final FitViewport fitViewport;
public GUI(Mouse mouse, FitViewport fitViewport) { public GUI(Mouse mouse, FitViewport fitViewport) {
font = new BitmapFont();
stage = new Stage(fitViewport);
label = new Label("Start", new Label.LabelStyle(font, new Color(Color.WHITE)));
this.mouse = mouse; this.mouse = mouse;
this.fitViewport = fitViewport; this.fitViewport = fitViewport;
stage = new Stage(fitViewport);
Gdx.input.setInputProcessor(stage); Gdx.input.setInputProcessor(stage);
label = new Label("Hello",new Label.LabelStyle(font,new Color(Color.WHITE)));
stage.addActor(label); stage.addActor(label);
} }