summaryrefslogtreecommitdiff
path: root/src/RaceTrack.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/RaceTrack.java')
-rw-r--r--src/RaceTrack.java50
1 files changed, 39 insertions, 11 deletions
diff --git a/src/RaceTrack.java b/src/RaceTrack.java
index d2bcaa5..3865b3d 100644
--- a/src/RaceTrack.java
+++ b/src/RaceTrack.java
@@ -42,14 +42,13 @@ class RaceTrack extends BetterBase {
* Array with control points for the custom track.
*/
private Vector[] controlPointsCustomTrack;
+ private final RobotRace race;
/**
* Constructs the race track, sets up display lists.
*/
- public RaceTrack() {
- // code goes here ...
-
-
+ public RaceTrack(RobotRace race) {
+ this.race = race;
}
/**
@@ -148,29 +147,58 @@ class RaceTrack extends BetterBase {
Vector norm_inside = norm_outside.scale(-1).normalized();
Vector norm_up = Vector.Z;
- gl.glBegin(GL_QUAD_STRIP);
+ // Set brick texture
+ race.getBrickTexture().bind(gl);
+
+ // Draw track walls
+ gl.glBegin(GL_QUADS);
setColor(Color.RED);
// inside bottom
glNormal(norm_inside);
+ gl.glTexCoord2f(0, 0);
glVertex(point_E);
+ gl.glTexCoord2f(1, 0);
glVertex(point_F);
setColor(Colors.PALE_TURQOISE);
// inside top
glNormal(norm_up.add(norm_inside).normalized());
- glVertex(point_A);
+ gl.glTexCoord2f(1, 1);
glVertex(point_C);
- // outside top
- glNormal(norm_up.add(norm_outside).normalized());
- glVertex(point_B);
- glVertex(point_D);
- setColor(Color.RED);
+ gl.glTexCoord2f(0, 1);
+ glVertex(point_A);
+
// outside bottom
glNormal(norm_outside);
+ gl.glTexCoord2f(0, 0);
glVertex(point_G);
+ gl.glTexCoord2f(1, 0);
glVertex(point_H);
+ // outside top
+ glNormal(norm_up.add(norm_outside).normalized());
+ gl.glTexCoord2f(1, 1);
+ glVertex(point_D);
+ gl.glTexCoord2f(0, 1);
+ glVertex(point_B);
+ gl.glEnd();
+
+ race.getTrackTexture().bind(gl);
+
+ // Draw track itself
+ gl.glBegin(GL_QUADS);
+ glNormal(Vector.Z);
+ gl.glTexCoord2f(0, 0);
+ glVertex(point_A);
+ gl.glTexCoord2f(1, 0);
+ glVertex(point_C);
+ gl.glTexCoord2f(1, 1);
+ glVertex(point_D);
+ gl.glTexCoord2f(0, 1);
+ glVertex(point_B);
gl.glEnd();
}
+ unbindTextures();
+
// save points for next draw round
point_E = point_F;
point_A = point_C;