|
|
|
@ -26,7 +26,10 @@ extern bool ShowDebug1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern bopti_image_t car1, car2, car3, car4, car5, car6, car7, car8; |
|
|
|
|
extern bopti_image_t tree1, tree2, tree3, tree4, tree5, tree6; |
|
|
|
|
|
|
|
|
|
extern bopti_image_t pl_tree1, pl_tree2, pl_tree3, pl_tree4, dt_tree1, dt_tree2, dt_tree3, dt_tree4, us_tree4, fi_tree1, fi_tree2, fi_tree4; |
|
|
|
|
extern bopti_image_t cc_bigleaf, cc_smallleaf, cc_rocks, af_bigleaf, dt_smallleaf, fi_rocks; |
|
|
|
|
|
|
|
|
|
extern bopti_image_t sky1, sky2, sky3; |
|
|
|
|
extern bopti_image_t mountain; |
|
|
|
|
extern bopti_image_t treeline; |
|
|
|
@ -38,6 +41,9 @@ bopti_image_t *scaledTrees[NB_TREES_TYPES][MAX_SUBIMAGES_TREES] = { 0 };
|
|
|
|
|
bopti_image_t *scaledCars[NB_CARS_TYPES][MAX_SUBIMAGES_CARS] = { 0 }; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern int CurrentCircuitBiome; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
size_t image_size_profile(int profile, int width, int height) |
|
|
|
|
{ |
|
|
|
|
size_t size = sizeof(bopti_image_t); |
|
|
|
@ -144,6 +150,11 @@ void createCircuit( void )
|
|
|
|
|
{ |
|
|
|
|
addStartLine( PLAINS ); |
|
|
|
|
addStraightLine( L_VERYSHORT, PLAINS ); |
|
|
|
|
addStraightLine( L_VERYSHORT, DESERT ); |
|
|
|
|
addStraightLine( L_VERYSHORT, USA ); |
|
|
|
|
addStraightLine( L_VERYSHORT, FINLAND ); |
|
|
|
|
addStraightLine( L_VERYSHORT, AFRICA ); |
|
|
|
|
addCurvyHill( L_MEDIUM, H_BIG, UP_HILL, C_HARD, LEFT_CURVE, USA ); |
|
|
|
|
addCurvyHill( L_MEDIUM, H_BIG, UP_HILL, C_HARD, LEFT_CURVE, DESERT ); |
|
|
|
|
addStraightLine( L_VERYSHORT, DESERT ); |
|
|
|
|
addCurvyHill( L_MEDIUM, H_BIG, DOWN_HILL, C_HARD, RIGHT_CURVE, DESERT ); |
|
|
|
@ -429,13 +440,17 @@ void addStraightLine( Length l, int8_t biome )
|
|
|
|
|
for( int i=0; i<l; i++) |
|
|
|
|
{ |
|
|
|
|
//Segment *s=new Segment( i );
|
|
|
|
|
int deco = rand() % 4; |
|
|
|
|
int deco = rand() % 8; |
|
|
|
|
Segment *seg; |
|
|
|
|
|
|
|
|
|
if (deco==0) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, SMALLLEAF, -1 ); |
|
|
|
|
else if (deco==1) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, -1, DEADTREE ); |
|
|
|
|
else if (deco==2) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, PALMTREE, -1 ); |
|
|
|
|
else if (deco==3) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, CACTUS, BIGLEAF ); |
|
|
|
|
if (deco==0) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, TREE1, -1 ); |
|
|
|
|
else if (deco==1) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, -1, TREE2 ); |
|
|
|
|
else if (deco==2) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, TREE3, LEAF1 ); |
|
|
|
|
else if (deco==3) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, LEAF2, TREE1 ); |
|
|
|
|
else if (deco==4) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, TREE4, TREE2 ); |
|
|
|
|
else if (deco==5) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, ROCKS, -1 ); |
|
|
|
|
else if (deco==6) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, TREE2, TREE1 ); |
|
|
|
|
else if (deco==7) seg=new Segment( 0, lastY, lastZ + i*SEGMENT_LENGTH, 0, 0, TREE3, TREE4 ); |
|
|
|
|
|
|
|
|
|
if (seg!=nullptr) |
|
|
|
|
{ |
|
|
|
@ -462,14 +477,18 @@ void addCurve( Length l, CurveStrength s, CurveType t, int8_t biome )
|
|
|
|
|
for( int i=0; i<l; i++) |
|
|
|
|
{ |
|
|
|
|
//Segment *s=new Segment( i );
|
|
|
|
|
int deco = rand() % 4; |
|
|
|
|
int deco = rand() % 8; |
|
|
|
|
|
|
|
|
|
Segment *seg; |
|
|
|
|
|
|
|
|
|
if (deco==0) seg=new Segment( 0, lastY, lastZ+i*SEGMENT_LENGTH, s*t, 0, -1, -1 ); |
|
|
|
|
else if (deco==1) seg=new Segment( 0, lastY, lastZ+i*SEGMENT_LENGTH, s*t, 0, -1, OAKTREE ); |
|
|
|
|
else if (deco==2) seg=new Segment( 0, lastY, lastZ+i*SEGMENT_LENGTH, s*t, 0, DEADTREE, -1 ); |
|
|
|
|
else if (deco==3) seg=new Segment( 0, lastY, lastZ+i*SEGMENT_LENGTH, s*t, 0, DEADTREE, OAKTREE ); |
|
|
|
|
else if (deco==1) seg=new Segment( 0, lastY, lastZ+i*SEGMENT_LENGTH, s*t, 0, -1, TREE1 ); |
|
|
|
|
else if (deco==2) seg=new Segment( 0, lastY, lastZ+i*SEGMENT_LENGTH, s*t, 0, TREE2, ROCKS ); |
|
|
|
|
else if (deco==3) seg=new Segment( 0, lastY, lastZ+i*SEGMENT_LENGTH, s*t, 0, TREE3, LEAF1 ); |
|
|
|
|
else if (deco==4) seg=new Segment( 0, lastY, lastZ+i*SEGMENT_LENGTH, s*t, 0, -1, -1 ); |
|
|
|
|
else if (deco==5) seg=new Segment( 0, lastY, lastZ+i*SEGMENT_LENGTH, s*t, 0, TREE3, -1 ); |
|
|
|
|
else if (deco==6) seg=new Segment( 0, lastY, lastZ+i*SEGMENT_LENGTH, s*t, 0, TREE4, LEAF1 ); |
|
|
|
|
else if (deco==7) seg=new Segment( 0, lastY, lastZ+i*SEGMENT_LENGTH, s*t, 0, -1, LEAF2 ); |
|
|
|
|
|
|
|
|
|
if (seg!=nullptr) |
|
|
|
|
{ |
|
|
|
@ -497,13 +516,17 @@ void addHill( Length l, HillSize s, HillType t, int8_t biome )
|
|
|
|
|
for( int i=0; i<l; i++) |
|
|
|
|
{ |
|
|
|
|
//Segment *s=new Segment( i );
|
|
|
|
|
int deco = rand() % 4; |
|
|
|
|
int deco = rand() % 8; |
|
|
|
|
Segment *seg; |
|
|
|
|
|
|
|
|
|
if (deco==0) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, -1, -1 ); |
|
|
|
|
else if (deco==1) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, -1, PALMTREE ); |
|
|
|
|
else if (deco==2) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, OAKTREE, -1 ); |
|
|
|
|
else if (deco==3) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, OAKTREE, PALMTREE ); |
|
|
|
|
if (deco==0) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, -1, ROCKS ); |
|
|
|
|
else if (deco==1) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, -1, TREE2 ); |
|
|
|
|
else if (deco==2) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, TREE3, -1 ); |
|
|
|
|
else if (deco==3) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, TREE1, LEAF2 ); |
|
|
|
|
else if (deco==4) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, ROCKS, LEAF1 ); |
|
|
|
|
else if (deco==5) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, TREE1, -1 ); |
|
|
|
|
else if (deco==6) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, TREE3, TREE1 ); |
|
|
|
|
else if (deco==7) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, 0, s*t, TREE2, TREE4 ); |
|
|
|
|
|
|
|
|
|
if (seg!=nullptr) |
|
|
|
|
{ |
|
|
|
@ -531,13 +554,18 @@ void addCurvyHill( Length l, HillSize s, HillType t, CurveStrength cs, CurveType
|
|
|
|
|
for( int i=0; i<l; i++) |
|
|
|
|
{ |
|
|
|
|
//Segment *s=new Segment( i );
|
|
|
|
|
int deco = rand() % 4; |
|
|
|
|
int deco = rand() % 8; |
|
|
|
|
Segment *seg; |
|
|
|
|
|
|
|
|
|
if (deco==0) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, cs*ct, s*t, -1, -1 ); |
|
|
|
|
else if (deco==1) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, cs*ct, s*t, -1, PALMTREE ); |
|
|
|
|
else if (deco==2) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, cs*ct, s*t, OAKTREE, -1 ); |
|
|
|
|
else if (deco==3) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, cs*ct, s*t, OAKTREE, PALMTREE ); |
|
|
|
|
else if (deco==1) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, cs*ct, s*t, -1, TREE1 ); |
|
|
|
|
else if (deco==2) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, cs*ct, s*t, TREE2, -1 ); |
|
|
|
|
else if (deco==3) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, cs*ct, s*t, TREE3, LEAF2 ); |
|
|
|
|
else if (deco==4) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, cs*ct, s*t, ROCKS, LEAF2 ); |
|
|
|
|
else if (deco==5) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, cs*ct, s*t, TREE1, TREE2 ); |
|
|
|
|
else if (deco==6) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, cs*ct, s*t, TREE3, LEAF2 ); |
|
|
|
|
else if (deco==7) seg=new Segment( 0, lastY+i*t*s, lastZ+i*SEGMENT_LENGTH, cs*ct, s*t, -1, TREE4 ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (seg!=nullptr) |
|
|
|
|
{ |
|
|
|
@ -592,54 +620,25 @@ void drawCircuitSegment( uint16_t index )
|
|
|
|
|
|
|
|
|
|
if (Y1==Y2) return; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
if (index==0) |
|
|
|
|
{ |
|
|
|
|
drawPolygon( 0, X2-W2/16-W2+currentcurve, Y2, 0, X1-W1/16-W1+currentcurve, Y1, DARK_GREEN_GRASS ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2+currentcurve, X2+W2+currentcurve, Y2, X1-W1+currentcurve, X1+W1+currentcurve, Y1, C_RED ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/16-W2+currentcurve, X2-W2+currentcurve, Y2, X1-W1/16-W1+currentcurve, X1-W1+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50+currentcurve, X2+W2/50+currentcurve, Y2, X1-W1/50+currentcurve, X1+W1/50+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50-W2/2+currentcurve, X2+W2/50-W2/2+currentcurve, Y2, X1-W1/50-W1/2+currentcurve, X1+W1/50-W1/2+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50+currentcurve, X2+W2/50+currentcurve, Y2, X1-W1/50+currentcurve, X1+W1/50+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50+W2/2+currentcurve, X2+W2/50+W2/2+currentcurve, Y2, X1-W1/50+W1/2+currentcurve, X1+W1/50+W1/2+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2+currentcurve, X2+W2+W2/16+currentcurve, Y2, X1+W1+currentcurve, X1+W1+W1/16+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2/16+W2+currentcurve, 396, Y2, X1+W1/16+W1+currentcurve, 396, Y1, DARK_GREEN_GRASS ); |
|
|
|
|
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
if (circuit[index]->Environment == PLAINS) |
|
|
|
|
{ |
|
|
|
|
if (index%2==0) |
|
|
|
|
{ |
|
|
|
|
//drawGrass( Y2, Y1, DARK_GREEN_GRASS );
|
|
|
|
|
|
|
|
|
|
drawPolygon( 0, X2-W2/16-W2+currentcurve, Y2, 0, X1-W1/16-W1+currentcurve, Y1, DARK_GREEN_GRASS ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2+currentcurve, X2+W2+currentcurve, Y2, X1-W1+currentcurve, X1+W1+currentcurve, Y1, LIGHT_GREY_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/16-W2+currentcurve, X2-W2+currentcurve, Y2, X1-W1/16-W1+currentcurve, X1-W1+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50+currentcurve, X2+W2/50+currentcurve, Y2, X1-W1/50+currentcurve, X1+W1/50+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50-W2/2+currentcurve, X2+W2/50-W2/2+currentcurve, Y2, X1-W1/50-W1/2+currentcurve, X1+W1/50-W1/2+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50+currentcurve, X2+W2/50+currentcurve, Y2, X1-W1/50+currentcurve, X1+W1/50+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50+W2/2+currentcurve, X2+W2/50+W2/2+currentcurve, Y2, X1-W1/50+W1/2+currentcurve, X1+W1/50+W1/2+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2+currentcurve, X2+W2+W2/16+currentcurve, Y2, X1+W1+currentcurve, X1+W1+W1/16+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2/16+W2+currentcurve, 396, Y2, X1+W1/16+W1+currentcurve, 396, Y1, DARK_GREEN_GRASS ); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
//drawGrass( Y2, Y1, LIGHT_GREEN_GRASS );
|
|
|
|
|
drawPolygon( 0, X2-W2/16-W2+currentcurve, Y2, 0, X1-W1/16-W1+currentcurve, Y1, LIGHT_GREEN_GRASS ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2+currentcurve, X2+W2+currentcurve, Y2, X1-W1+currentcurve, X1+W1+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
drawPolygon( X2-W2/16-W2+currentcurve, X2-W2+currentcurve, Y2, X1-W1/16-W1+currentcurve, X1-W1+currentcurve, Y1, RED_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2+currentcurve, X2+W2+W2/16+currentcurve, Y2, X1+W1+currentcurve, X1+W1+W1/16+currentcurve, Y1, RED_STRIPE ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2/16+W2+currentcurve, 396, Y2, X1+W1/16+W1+currentcurve, 396, Y1, LIGHT_GREEN_GRASS ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -647,24 +646,133 @@ void drawCircuitSegment( uint16_t index )
|
|
|
|
|
{ |
|
|
|
|
if (index%2==0) |
|
|
|
|
{ |
|
|
|
|
drawGrass( Y2, Y1, DARK_YELLOW_GRASS ); |
|
|
|
|
drawPolygon( 0, X2-W2/16-W2+currentcurve, Y2, 0, X1-W1/16-W1+currentcurve, Y1, DARK_YELLOW_GRASS ); |
|
|
|
|
drawPolygon( X2-W2+currentcurve, X2+W2+currentcurve, Y2, X1-W1+currentcurve, X1+W1+currentcurve, Y1, LIGHT_GREY_ROAD ); |
|
|
|
|
drawPolygon( X2-W2/50+currentcurve, X2+W2/50+currentcurve, Y2, X1-W1/50+currentcurve, X1+W1/50+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/16-W2+currentcurve, X2-W2+currentcurve, Y2, X1-W1/16-W1+currentcurve, X1-W1+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50-W2/2+currentcurve, X2+W2/50-W2/2+currentcurve, Y2, X1-W1/50-W1/2+currentcurve, X1+W1/50-W1/2+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50+currentcurve, X2+W2/50+currentcurve, Y2, X1-W1/50+currentcurve, X1+W1/50+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50+W2/2+currentcurve, X2+W2/50+W2/2+currentcurve, Y2, X1-W1/50+W1/2+currentcurve, X1+W1/50+W1/2+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2+currentcurve, X2+W2+W2/16+currentcurve, Y2, X1+W1+currentcurve, X1+W1+W1/16+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2/16+W2+currentcurve, 396, Y2, X1+W1/16+W1+currentcurve, 396, Y1, DARK_YELLOW_GRASS ); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
drawGrass( Y2, Y1, LIGHT_YELLOW_GRASS ); |
|
|
|
|
drawPolygon( 0, X2-W2/16-W2+currentcurve, Y2, 0, X1-W1/16-W1+currentcurve, Y1, LIGHT_YELLOW_GRASS ); |
|
|
|
|
drawPolygon( X2-W2+currentcurve, X2+W2+currentcurve, Y2, X1-W1+currentcurve, X1+W1+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
drawPolygon( X2-W2/16-W2+currentcurve, X2-W2+currentcurve, Y2, X1-W1/16-W1+currentcurve, X1-W1+currentcurve, Y1, RED_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2+currentcurve, X2+W2+W2/16+currentcurve, Y2, X1+W1+currentcurve, X1+W1+W1/16+currentcurve, Y1, RED_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2/16+W2+currentcurve, 396, Y2, X1+W1/16+W1+currentcurve, 396, Y1, LIGHT_YELLOW_GRASS ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else if (circuit[index]->Environment == USA) |
|
|
|
|
{ |
|
|
|
|
if (index%2==0) |
|
|
|
|
{ |
|
|
|
|
drawPolygon( 0, X2-W2/16-W2+currentcurve, Y2, 0, X1-W1/16-W1+currentcurve, Y1, DARK_GREEN_GRASS ); |
|
|
|
|
drawPolygon( X2-W2+currentcurve, X2+W2+currentcurve, Y2, X1-W1+currentcurve, X1+W1+currentcurve, Y1, BLACK_ROAD ); |
|
|
|
|
drawPolygon( X2-W2/16-W2+currentcurve, X2-W2+currentcurve, Y2, X1-W1/16-W1+currentcurve, X1-W1+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50-W2/2+currentcurve, X2+W2/50-W2/2+currentcurve, Y2, X1-W1/50-W1/2+currentcurve, X1+W1/50-W1/2+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/25+currentcurve, X2-W2/50+currentcurve, Y2, X1-W1/25+currentcurve, X1-W1/50+currentcurve, Y1, YELLOW_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2/50+currentcurve, X2+W2/25+currentcurve, Y2, X1+W1/50+currentcurve, X1+W1/25+currentcurve, Y1, YELLOW_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/50+W2/2+currentcurve, X2+W2/50+W2/2+currentcurve, Y2, X1-W1/50+W1/2+currentcurve, X1+W1/50+W1/2+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2+currentcurve, X2+W2+W2/16+currentcurve, Y2, X1+W1+currentcurve, X1+W1+W1/16+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2/16+W2+currentcurve, 396, Y2, X1+W1/16+W1+currentcurve, 396, Y1, DARK_GREEN_GRASS ); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
drawPolygon( 0, X2-W2/16-W2+currentcurve, Y2, 0, X1-W1/16-W1+currentcurve, Y1, LIGHT_GREEN_GRASS ); |
|
|
|
|
drawPolygon( X2-W2+currentcurve, X2+W2+currentcurve, Y2, X1-W1+currentcurve, X1+W1+currentcurve, Y1, BLACK_ROAD ); |
|
|
|
|
drawPolygon( X2-W2/16-W2+currentcurve, X2-W2+currentcurve, Y2, X1-W1/16-W1+currentcurve, X1-W1+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2-W2/25+currentcurve, X2-W2/50+currentcurve, Y2, X1-W1/25+currentcurve, X1-W1/50+currentcurve, Y1, YELLOW_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2/50+currentcurve, X2+W2/25+currentcurve, Y2, X1+W1/50+currentcurve, X1+W1/25+currentcurve, Y1, YELLOW_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2+currentcurve, X2+W2+W2/16+currentcurve, Y2, X1+W1+currentcurve, X1+W1+W1/16+currentcurve, Y1, WHITE_STRIPE ); |
|
|
|
|
drawPolygon( X2+W2/16+W2+currentcurve, 396, Y2, X1+W1/16+W1+currentcurve, 396, Y1, LIGHT_GREEN_GRASS ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else if (circuit[index]->Environment == FINLAND) |
|
|
|
|
{ |
|
|
|
|
if (index%2==0) |
|
|
|
|
{ |
|
|
|
|
drawPolygon( 0, X2-W2+currentcurve, Y2, 0, X1-W1+currentcurve, Y1, DARK_SNOW_GRASS ); |
|
|
|
|
drawPolygon( X2-W2+currentcurve, X2+W2+currentcurve, Y2, X1-W1+currentcurve, X1+W1+currentcurve, Y1, SNOW_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/2-W2/12+currentcurve, X2-W2/2-W2/12-W2/25+currentcurve, Y2, X1-W1/2-W1/12+currentcurve, X1-W1/2-W1/12-W1/25+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
drawPolygon( X2-W2+W2/12+W2/25+currentcurve, X2-W2+W2/12+currentcurve, Y2, X1-W1+W1/12+W1/25+currentcurve, X1-W1+W1/12+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/12+currentcurve, X2-W2/12-W2/25+currentcurve, Y2, X1-W1/12+currentcurve, X1-W1/12-W1/25+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
drawPolygon( X2-W2/2+W2/12+W2/25+currentcurve, X2-W2/2+W2/12+currentcurve, Y2, X1-W1/2+W1/12+W1/25+currentcurve, X1-W1/2+W1/12+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2/12+currentcurve, X2+W2/12+W2/25+currentcurve, Y2, X1+W1/12+currentcurve, X1+W1/12+W1/25+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
drawPolygon( X2+W2/2-W2/12-W2/25+currentcurve, X2+W2/2-W2/12+currentcurve, Y2, X1+W1/2-W1/12-W1/25+currentcurve, X1+W1/2-W1/12+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2/2+W2/12+currentcurve, X2+W2/2+W2/12+W2/25+currentcurve, Y2, X1+W1/2+W1/12+currentcurve, X1+W1/2+W1/12+W1/25+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
drawPolygon( X2+W2-W2/12-W2/25+currentcurve, X2+W2-W2/12+currentcurve, Y2, X1+W1-W1/12-W1/25+currentcurve, X1+W1-W1/12+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2+currentcurve, 396, Y2, X1+W1+currentcurve, 396, Y1, DARK_SNOW_GRASS ); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
drawPolygon( 0, X2-W2+currentcurve, Y2, 0, X1-W1+currentcurve, Y1, LIGHT_SNOW_GRASS ); |
|
|
|
|
drawPolygon( X2-W2+currentcurve, X2+W2+currentcurve, Y2, X1-W1+currentcurve, X1+W1+currentcurve, Y1, SNOW_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/2-W2/12+currentcurve, X2-W2/2-W2/12-W2/25+currentcurve, Y2, X1-W1/2-W1/12+currentcurve, X1-W1/2-W1/12-W1/25+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
drawPolygon( X2-W2+W2/12+W2/25+currentcurve, X2-W2+W2/12+currentcurve, Y2, X1-W1+W1/12+W1/25+currentcurve, X1-W1+W1/12+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/12+currentcurve, X2-W2/12-W2/25+currentcurve, Y2, X1-W1/12+currentcurve, X1-W1/12-W1/25+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
drawPolygon( X2-W2/2+W2/12+W2/25+currentcurve, X2-W2/2+W2/12+currentcurve, Y2, X1-W1/2+W1/12+W1/25+currentcurve, X1-W1/2+W1/12+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2/12+currentcurve, X2+W2/12+W2/25+currentcurve, Y2, X1+W1/12+currentcurve, X1+W1/12+W1/25+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
drawPolygon( X2+W2/2-W2/12-W2/25+currentcurve, X2+W2/2-W2/12+currentcurve, Y2, X1+W1/2-W1/12-W1/25+currentcurve, X1+W1/2-W1/12+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2/2+W2/12+currentcurve, X2+W2/2+W2/12+W2/25+currentcurve, Y2, X1+W1/2+W1/12+currentcurve, X1+W1/2+W1/12+W1/25+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
drawPolygon( X2+W2-W2/12-W2/25+currentcurve, X2+W2-W2/12+currentcurve, Y2, X1+W1-W1/12-W1/25+currentcurve, X1+W1-W1/12+currentcurve, Y1, DARK_GREY_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2+currentcurve, 396, Y2, X1+W1+currentcurve, 396, Y1, LIGHT_SNOW_GRASS ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else if (circuit[index]->Environment == AFRICA) |
|
|
|
|
{ |
|
|
|
|
if (index%2==0) |
|
|
|
|
{ |
|
|
|
|
drawPolygon( 0, X2-W2+currentcurve, Y2, 0, X1-W1+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
drawPolygon( X2-W2+currentcurve, X2+W2+currentcurve, Y2, X1-W1+currentcurve, X1+W1+currentcurve, Y1, OCRE_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/2-W2/12+currentcurve, X2-W2/2-W2/12-W2/25+currentcurve, Y2, X1-W1/2-W1/12+currentcurve, X1-W1/2-W1/12-W1/25+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
drawPolygon( X2-W2+W2/12+W2/25+currentcurve, X2-W2+W2/12+currentcurve, Y2, X1-W1+W1/12+W1/25+currentcurve, X1-W1+W1/12+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/12+currentcurve, X2-W2/12-W2/25+currentcurve, Y2, X1-W1/12+currentcurve, X1-W1/12-W1/25+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
drawPolygon( X2-W2/2+W2/12+W2/25+currentcurve, X2-W2/2+W2/12+currentcurve, Y2, X1-W1/2+W1/12+W1/25+currentcurve, X1-W1/2+W1/12+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2/12+currentcurve, X2+W2/12+W2/25+currentcurve, Y2, X1+W1/12+currentcurve, X1+W1/12+W1/25+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
drawPolygon( X2+W2/2-W2/12-W2/25+currentcurve, X2+W2/2-W2/12+currentcurve, Y2, X1+W1/2-W1/12-W1/25+currentcurve, X1+W1/2-W1/12+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2/2+W2/12+currentcurve, X2+W2/2+W2/12+W2/25+currentcurve, Y2, X1+W1/2+W1/12+currentcurve, X1+W1/2+W1/12+W1/25+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
drawPolygon( X2+W2-W2/12-W2/25+currentcurve, X2+W2-W2/12+currentcurve, Y2, X1+W1-W1/12-W1/25+currentcurve, X1+W1-W1/12+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/50+currentcurve, X2+W2/50+currentcurve, Y2, X1-W1/50+currentcurve, X1+W1/50+currentcurve, Y1, LIGHT_GREEN_GRASS ); |
|
|
|
|
drawPolygon( X2+W2+currentcurve, 396, Y2, X1+W1+currentcurve, 396, Y1, DARK_EARTH ); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
drawPolygon( 0, X2-W2+currentcurve, Y2, 0, X1-W1+currentcurve, Y1, LIGHT_EARTH ); |
|
|
|
|
drawPolygon( X2-W2+currentcurve, X2+W2+currentcurve, Y2, X1-W1+currentcurve, X1+W1+currentcurve, Y1, OCRE_ROAD ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/2-W2/12+currentcurve, X2-W2/2-W2/12-W2/25+currentcurve, Y2, X1-W1/2-W1/12+currentcurve, X1-W1/2-W1/12-W1/25+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
drawPolygon( X2-W2+W2/12+W2/25+currentcurve, X2-W2+W2/12+currentcurve, Y2, X1-W1+W1/12+W1/25+currentcurve, X1-W1+W1/12+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/12+currentcurve, X2-W2/12-W2/25+currentcurve, Y2, X1-W1/12+currentcurve, X1-W1/12-W1/25+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
drawPolygon( X2-W2/2+W2/12+W2/25+currentcurve, X2-W2/2+W2/12+currentcurve, Y2, X1-W1/2+W1/12+W1/25+currentcurve, X1-W1/2+W1/12+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2/12+currentcurve, X2+W2/12+W2/25+currentcurve, Y2, X1+W1/12+currentcurve, X1+W1/12+W1/25+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
drawPolygon( X2+W2/2-W2/12-W2/25+currentcurve, X2+W2/2-W2/12+currentcurve, Y2, X1+W1/2-W1/12-W1/25+currentcurve, X1+W1/2-W1/12+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2+W2/2+W2/12+currentcurve, X2+W2/2+W2/12+W2/25+currentcurve, Y2, X1+W1/2+W1/12+currentcurve, X1+W1/2+W1/12+W1/25+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
drawPolygon( X2+W2-W2/12-W2/25+currentcurve, X2+W2-W2/12+currentcurve, Y2, X1+W1-W1/12-W1/25+currentcurve, X1+W1-W1/12+currentcurve, Y1, DARK_EARTH ); |
|
|
|
|
|
|
|
|
|
drawPolygon( X2-W2/50+currentcurve, X2+W2/50+currentcurve, Y2, X1-W1/50+currentcurve, X1+W1/50+currentcurve, Y1, LIGHT_GREEN_GRASS ); |
|
|
|
|
drawPolygon( X2+W2+currentcurve, 396, Y2, X1+W1+currentcurve, 396, Y1, LIGHT_EARTH ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -720,7 +828,7 @@ uint16_t findIndex( double currentZ )
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void prepareDecoration( void ) |
|
|
|
|
void prepareDecoration( int biometoload ) |
|
|
|
|
{ |
|
|
|
|
bopti_image_t const *src; |
|
|
|
|
|
|
|
|
@ -731,20 +839,65 @@ void prepareDecoration( void )
|
|
|
|
|
{ |
|
|
|
|
scale=3.0f/((float) (i+2)); |
|
|
|
|
|
|
|
|
|
if(k==0) src = &tree1; |
|
|
|
|
else if (k==1) src = &tree2; |
|
|
|
|
else if (k==2) src = &tree3; |
|
|
|
|
else if (k==3) src = &tree4; |
|
|
|
|
else if (k==4) src = &tree5; |
|
|
|
|
else if (k==5) src = &tree6; |
|
|
|
|
else if (k==6) src = &leftturn; |
|
|
|
|
else if (k==7) src = &rightturn; |
|
|
|
|
else if (k==8) src = &uphill; |
|
|
|
|
else if (k==9) src = &downhill; |
|
|
|
|
else if (k==10) src = &checkpoint; |
|
|
|
|
else if (k==11) src = &startlights; |
|
|
|
|
else if (k==12) src = &stoplights; |
|
|
|
|
else if (k==13) src = &waitlights; |
|
|
|
|
if (biometoload==PLAINS) |
|
|
|
|
{ |
|
|
|
|
if(k==0) src = &pl_tree1; |
|
|
|
|
else if (k==1) src = &pl_tree2; |
|
|
|
|
else if (k==2) src = &pl_tree3; |
|
|
|
|
else if (k==3) src = &pl_tree4; |
|
|
|
|
else if (k==4) src = &cc_bigleaf; |
|
|
|
|
else if (k==5) src = &cc_smallleaf; |
|
|
|
|
else if (k==6) src = &cc_rocks; |
|
|
|
|
} |
|
|
|
|
else if (biometoload==DESERT) |
|
|
|
|
{ |
|
|
|
|
if(k==0) src = &dt_tree1; |
|
|
|
|
else if (k==1) src = &dt_tree2; |
|
|
|
|
else if (k==2) src = &dt_tree3; |
|
|
|
|
else if (k==3) src = &dt_tree4; |
|
|
|
|
else if (k==4) src = &cc_bigleaf; |
|
|
|
|
else if (k==5) src = &dt_smallleaf; |
|
|
|
|
else if (k==6) src = &cc_rocks; |
|
|
|
|
} |
|
|
|
|
else if (biometoload==USA) |
|
|
|
|
{ |
|
|
|
|
if(k==0) src = &pl_tree1; |
|
|
|
|
else if (k==1) src = &pl_tree2; |
|
|
|
|
else if (k==2) src = &pl_tree3; |
|
|
|
|
else if (k==3) src = &us_tree4; |
|
|
|
|
else if (k==4) src = &cc_bigleaf; |
|
|
|
|
else if (k==5) src = &cc_smallleaf; |
|
|
|
|
else if (k==6) src = &cc_rocks; |
|
|
|
|
} |
|
|
|
|
else if (biometoload==FINLAND) |
|
|
|
|
{ |
|
|
|
|
if(k==0) src = &fi_tree1; |
|
|
|
|
else if (k==1) src = &fi_tree2; |
|
|
|
|
else if (k==2) src = &pl_tree3; // to be added
|
|
|
|
|
else if (k==3) src = &fi_tree4; |
|
|
|
|
else if (k==4) src = &cc_bigleaf; // to be added
|
|
|
|
|
else if (k==5) src = &cc_smallleaf; // to be added
|
|
|
|
|
else if (k==6) src = &fi_rocks; // to be added
|
|
|
|
|
} |
|
|
|
|
else if (biometoload==AFRICA) |
|
|
|
|
{ |
|
|
|
|
if(k==0) src = &pl_tree1; |
|
|
|
|
else if (k==1) src = &pl_tree2; |
|
|
|
|
else if (k==2) src = &pl_tree3; |
|
|
|
|
else if (k==3) src = &pl_tree4; |
|
|
|
|
else if (k==4) src = &af_bigleaf; |
|
|
|
|
else if (k==5) src = &cc_smallleaf; |
|
|
|
|
else if (k==6) src = &cc_rocks; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (k==7) src = &leftturn; |
|
|
|
|
else if (k==8) src = &rightturn; |
|
|
|
|
else if (k==9) src = &uphill; |
|
|
|
|
else if (k==10) src = &downhill; |
|
|
|
|
else if (k==11) src = &checkpoint; |
|
|
|
|
else if (k==12) src = &startlights; |
|
|
|
|
else if (k==13) src = &stoplights; |
|
|
|
|
else if (k==14) src = &waitlights; |
|
|
|
|
|
|
|
|
|
int width = (int) ((float) src->width * scale); |
|
|
|
|
int height = (int) ((float) src->height * scale); |
|
|
|
|