summaryrefslogtreecommitdiff
path: root/src/Terrain.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Terrain.java')
-rw-r--r--src/Terrain.java29
1 files changed, 23 insertions, 6 deletions
diff --git a/src/Terrain.java b/src/Terrain.java
index 6a26e17..54c6d2a 100644
--- a/src/Terrain.java
+++ b/src/Terrain.java
@@ -5,6 +5,7 @@ import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
+import java.util.Arrays;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -17,7 +18,7 @@ import robotrace.Vector;
/**
* Implementation of the terrain.
*/
-class Terrain extends BetterBase {
+public class Terrain extends BetterBase {
/**
* The display list containing the terrain.
@@ -48,10 +49,12 @@ class Terrain extends BetterBase {
private boolean heightMapFileMode;
+ private RaceTrack track;
+
/**
* Can be used to set up a display list.
*/
- public Terrain(RobotRace race) {
+ public Terrain(RobotRace race, RaceTrack track) {
// Setup terrain variables
this.race = race;
this.terrainDisplayList = 0;
@@ -61,7 +64,8 @@ class Terrain extends BetterBase {
this.terrainTrees = new Tree[10];
this.heightMapFile = "heightmap.bmp";
this.heightMapFileMode = true;
-
+ this.track = track;
+
// Fill the height map array
File f = new File("src/" + heightMapFile);
if(f.exists()) {
@@ -131,8 +135,17 @@ class Terrain extends BetterBase {
*/
private Vector getRandomPosition() {
Random r = new Random();
- int x = r.nextInt(37) - 18;
- int y = r.nextInt(37) - 18;
+ double distance;
+ int x, y;
+
+ // Make sure all trees are moved away from the track
+ do {
+ x = 19 - r.nextInt(39);
+ y = 19 - r.nextInt(39);
+
+ distance = Math.sqrt(x * x + y * y);
+ } while (distance < 19);
+
return new Vector(x, y, heightAt(x + 20, y + 20));
}
@@ -157,6 +170,10 @@ class Terrain extends BetterBase {
if (Math.abs(tree.getPosition().y() - y) < marge) {
return false;
}
+
+ if(x < - 19 || x > 19 || y < - 19 || y > 19) {
+ return false;
+ }
// No trees allowed in water
if (z < 0.25f) {
@@ -268,7 +285,7 @@ class Terrain extends BetterBase {
System.out.println("Terrain created");
}
-
+
/**
* Fills the array with new valid trees.
*/