DEADSOFTWARE

Less hills
[cavedroid.git] / core / src / ru / deadsoftware / cavecraft / game / WorldGen.java
index 32cb8f94a0f28db677a4045a177f3aec0cfbaf4a..b8e9aee59b953e9742366f1300b27d7b64414da4 100644 (file)
@@ -1,8 +1,6 @@
 package ru.deadsoftware.cavecraft.game;
 
-import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.math.RandomXS128;
-import com.badlogic.gdx.utils.ArrayMap;
 import com.badlogic.gdx.utils.TimeUtils;
 
 public class WorldGen {
@@ -22,7 +20,12 @@ public class WorldGen {
         int t;
         res[0] = mid;
         for (int i=1; i<width; i++) {
-            t = rand.nextInt(3)-1;
+            t = rand.nextInt(7)-3;
+            if (t>-3 && t<3) t=0; else t/=Math.abs(t);
+            if (i>width-(max-min)) {
+                if (res[i-1]+t<res[0]) t=Math.abs(t);
+                    else if (res[i-1]+t>res[0]) t=-Math.abs(t);
+            }
             res[i] = res[i-1] + t;
             if (res[i]<min) res[i] = min;
             if (res[i]>max) res[i] = max;
@@ -54,16 +57,14 @@ public class WorldGen {
         genWorld(width, height, TimeUtils.millis());
     }
 
-    static void genWorld(int width, int height, long s) {
+    static void genWorld(int width, int height, long worldseed) {
         int dirtH;
-        seed = s;
+        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);
+        hMap = genLandscape(width, height/8*3, height/8, height/2);
         for (int x=0; x<width; x++) {
-            for (int y=0; y<height; y++) {
-            }
             dirtH = 4+rand.nextInt(2);
             for (int y = height- hMap[x]; y<height; y++) {
                 if (y==height- hMap[x]) {
@@ -84,10 +85,15 @@ public class WorldGen {
                 if (foreMap[x][y]==0){
                     foreMap[x][y] = 8;
                     backMap[x][y] = 8;
+                    if (y==height-hMap[x]-1) {
+                        foreMap[x][y+1] = 3;
+                    }
                 }
             }
             if (x>2 && x<width-2 && rand.nextInt(100)<5){
-                genOak(x,height-hMap[x]-1);
+                if (foreMap[x][height-hMap[x]-1]==0) {
+                    genOak(x,height-hMap[x]-1);
+                }
             }
         }
     }