@@ -43,6 +43,9 @@ class RenderPrimitive(object):
|
||||
|
||||
class Base(RenderPrimitive):
|
||||
name = "base"
|
||||
options = {
|
||||
"biomes": ("whether or not to use biomes", True),
|
||||
}
|
||||
|
||||
class Nether(RenderPrimitive):
|
||||
name = "nether"
|
||||
|
||||
@@ -17,7 +17,10 @@
|
||||
|
||||
#include "../overviewer.h"
|
||||
|
||||
#define DEFAULT_BIOME 4 /* forest, nice and green */
|
||||
|
||||
typedef struct {
|
||||
int use_biomes;
|
||||
/* grasscolor and foliagecolor lookup tables */
|
||||
PyObject *grasscolor, *foliagecolor, *watercolor;
|
||||
/* biome-compatible grass/leaf textures */
|
||||
@@ -74,6 +77,9 @@ static int
|
||||
base_start(void *data, RenderState *state, PyObject *support) {
|
||||
PrimitiveBase *self = (PrimitiveBase *)data;
|
||||
|
||||
if (!render_mode_parse_option(support, "biomes", "i", &(self->use_biomes)))
|
||||
return 1;
|
||||
|
||||
/* biome-compliant grass mask (includes sides!) */
|
||||
self->grass_texture = PyObject_GetAttrString(state->textures, "biome_grass_texture");
|
||||
|
||||
@@ -205,6 +211,7 @@ base_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, PyObjec
|
||||
float temp = 0.0, rain = 0.0;
|
||||
PyObject *color = NULL;
|
||||
|
||||
if (self->use_biomes) {
|
||||
/* average over all neighbors */
|
||||
for (dx = -1; dx <= 1; dx++) {
|
||||
for (dz = -1; dz <= 1; dz += (dx == 0 ? 2 : 1)) {
|
||||
@@ -213,7 +220,7 @@ base_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, PyObjec
|
||||
/* note -- biome 255 shows up on map borders.
|
||||
who knows what it is? certainly not I.
|
||||
*/
|
||||
biome = 4; /* forest -- reasonable default */
|
||||
biome = DEFAULT_BIOME; /* forest -- reasonable default */
|
||||
}
|
||||
|
||||
temp += biome_table[biome].temperature;
|
||||
@@ -222,6 +229,11 @@ base_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, PyObjec
|
||||
}
|
||||
temp /= 8.0;
|
||||
rain /= 8.0;
|
||||
} else {
|
||||
/* don't use biomes, just use the default */
|
||||
temp = biome_table[DEFAULT_BIOME].temperature;
|
||||
rain = biome_table[DEFAULT_BIOME].rainfall;
|
||||
}
|
||||
|
||||
/* second coordinate is actually scaled to fit inside the triangle
|
||||
so store it in rain */
|
||||
|
||||
Reference in New Issue
Block a user