package ru.deadsoftware.cavecraft.game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.math.RandomXS128; import com.badlogic.gdx.utils.TimeUtils; public class WorldGen { private static RandomXS128 rand; private static long seed; private static int[][] foreMap, backMap; private static int[] hMap; private static int[] bMap; //biomes, 0-plains, 1-desert public static long getSeed() { return seed; } static int[] genLandscape(int width, int mid, int min, int max) { int[] res = new int[width]; bMap = new int[width]; int t; res[0] = mid; for (int i=1; i-3 && t<3) t=0; else t/=Math.abs(t); if (i>width-(max-min)) { if (res[i-1]+tres[0]) t=-Math.abs(t); } res[i] = res[i-1] + t; if (res[i]max) res[i] = max; if (i>=width/2) { bMap [i] = 1; if (res[i] < 60) res[i] = 60; } else { bMap[i] = 0; } } return res; } private static void genCactus(int x, int y) { foreMap[x][y] = 59; foreMap[x][y-1] = 59; foreMap[x][y-2] = 59; } private static void genOak(int x, int y) { backMap[x][y] = 15; backMap[x][y-1] = 15; backMap[x][y-2] = 15; backMap[x][y-3] = 15; backMap[x][y-4] = 16; backMap[x][y-5] = 16; backMap[x-1][y-3] = 16; backMap[x-1][y-4] = 16; backMap[x+1][y-3] = 16; backMap[x+1][y-4] = 16; foreMap[x][y-3] = 16; foreMap[x][y-4] = 16; foreMap[x][y-5] = 16; foreMap[x-1][y-3] = 16; foreMap[x-1][y-4] = 16; foreMap[x+1][y-3] = 16; foreMap[x+1][y-4] = 16; } static void genWorld(int width, int height) { genWorld(width, height, TimeUtils.millis()); } static void genWorld(int width, int height, long worldseed) { int dirtH; seed = worldseed; rand = new RandomXS128(seed); foreMap = new int[width][height]; backMap = new int[width][height]; hMap = genLandscape(width, height/4, height/8, height/2); for (int x=0; x2 && x