Fix worldgen dims bug
parent
6a15cfaa82
commit
d10ae63aa7
|
@ -6,6 +6,7 @@ typedef enum {
|
||||||
BLOCK_KIND_WATER,
|
BLOCK_KIND_WATER,
|
||||||
BLOCK_KIND_WALL,
|
BLOCK_KIND_WALL,
|
||||||
BLOCK_KIND_HILL,
|
BLOCK_KIND_HILL,
|
||||||
|
BLOCK_KIND_HILL_SNOW,
|
||||||
BLOCK_KIND_HOLE,
|
BLOCK_KIND_HOLE,
|
||||||
} block_kind;
|
} block_kind;
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#define WORLD_ERROR_INVALID_DIMENSIONS -0x0003
|
#define WORLD_ERROR_INVALID_DIMENSIONS -0x0003
|
||||||
#define WORLD_ERROR_INVALID_BUFFER -0x0004
|
#define WORLD_ERROR_INVALID_BUFFER -0x0004
|
||||||
|
|
||||||
int32_t world_init(int32_t seed, uint8_t width, uint8_t height);
|
int32_t world_init(int32_t seed, uint32_t width, uint32_t height);
|
||||||
int32_t world_destroy(void);
|
int32_t world_destroy(void);
|
||||||
|
|
||||||
uint32_t world_buf(uint8_t const **ptr, uint32_t *width);
|
uint32_t world_buf(uint8_t const **ptr, uint32_t *width);
|
||||||
|
|
|
@ -5,5 +5,6 @@ static block blocks[] = {
|
||||||
{.tex_id = ATLAS_XY(0, 0), .name = "base-ground", .flags = 0, .kind = BLOCK_KIND_GROUND, .biome = 0, .symbol = '.'},
|
{.tex_id = ATLAS_XY(0, 0), .name = "base-ground", .flags = 0, .kind = BLOCK_KIND_GROUND, .biome = 0, .symbol = '.'},
|
||||||
{.tex_id = ATLAS_XY(1, 0), .name = "base-wall", .flags = BLOCK_FLAG_COLLISION, .kind = BLOCK_KIND_WALL, .biome = 0, .symbol = '#'},
|
{.tex_id = ATLAS_XY(1, 0), .name = "base-wall", .flags = BLOCK_FLAG_COLLISION, .kind = BLOCK_KIND_WALL, .biome = 0, .symbol = '#'},
|
||||||
{.tex_id = ATLAS_XY(2, 0), .name = "base-hill", .flags = BLOCK_FLAG_COLLISION, .kind = BLOCK_KIND_HILL, .biome = 0, .symbol = '^'},
|
{.tex_id = ATLAS_XY(2, 0), .name = "base-hill", .flags = BLOCK_FLAG_COLLISION, .kind = BLOCK_KIND_HILL, .biome = 0, .symbol = '^'},
|
||||||
|
{.tex_id = ATLAS_XY(3, 0), .name = "base-hill-snow", .flags = BLOCK_FLAG_COLLISION, .kind = BLOCK_KIND_HILL_SNOW, .biome = 0, .symbol = '*'},
|
||||||
{.tex_id = ATLAS_XY(0, 1), .name = "base-water", .flags = BLOCK_FLAG_COLLISION, .kind = BLOCK_KIND_WATER, .biome = 0, .symbol = '~'},
|
{.tex_id = ATLAS_XY(0, 1), .name = "base-water", .flags = BLOCK_FLAG_COLLISION, .kind = BLOCK_KIND_WATER, .biome = 0, .symbol = '~'},
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,7 +9,7 @@ static uint32_t world_height = 0;
|
||||||
|
|
||||||
int32_t world_gen();
|
int32_t world_gen();
|
||||||
|
|
||||||
int32_t world_init(int32_t seed, uint8_t width, uint8_t height) {
|
int32_t world_init(int32_t seed, uint32_t width, uint32_t height) {
|
||||||
if (world) {
|
if (world) {
|
||||||
world_destroy();
|
world_destroy();
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,9 @@ static WORLD_BLOCK_OBSERVER(shaper) {
|
||||||
if (kind == BLOCK_KIND_WALL && kind == old_kind) {
|
if (kind == BLOCK_KIND_WALL && kind == old_kind) {
|
||||||
return blocks_find(biome, BLOCK_KIND_HILL);
|
return blocks_find(biome, BLOCK_KIND_HILL);
|
||||||
}
|
}
|
||||||
|
if (kind == BLOCK_KIND_HILL && kind == old_kind) {
|
||||||
|
return blocks_find(biome, BLOCK_KIND_HILL_SNOW);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return id;
|
return id;
|
||||||
|
@ -89,16 +92,15 @@ int32_t world_gen() {
|
||||||
world_fill_rect(grnd_id, 1, 1, world_width-2, world_height-2, NULL);
|
world_fill_rect(grnd_id, 1, 1, world_width-2, world_height-2, NULL);
|
||||||
|
|
||||||
// water
|
// water
|
||||||
for (int i=0; i<RAND_RANGE(0, 8); i++) {
|
for (int i=0; i<RAND_RANGE(0, 12); i++) {
|
||||||
world_fill_rect_anchor(watr_id, RAND_RANGE(0, world_width), RAND_RANGE(0, world_height), 4+RAND_RANGE(0,3), 4+RAND_RANGE(0,3), 0.5f, 0.5f, shaper_noise33);
|
world_fill_rect_anchor(watr_id, RAND_RANGE(0, world_width), RAND_RANGE(0, world_height), 4+RAND_RANGE(0,3), 4+RAND_RANGE(0,3), 0.5f, 0.5f, shaper_noise33);
|
||||||
}
|
}
|
||||||
|
|
||||||
// hills
|
const uint32_t HILLS_SIZE = 21;
|
||||||
world_fill_rect_anchor(wall_id, 14+RAND_RANGE(-10, 10), 21+RAND_RANGE(-10, 10), 8+RAND_RANGE(-2,4), 8+RAND_RANGE(-2,4), 0.5f, 0.5f, shaper_noise80);
|
|
||||||
world_fill_rect_anchor(wall_id, 14+RAND_RANGE(-10, 10), 21+RAND_RANGE(-10, 10), 4+RAND_RANGE(-2,4), 4+RAND_RANGE(-2,4), 0.5f, 0.5f, shaper_noise50);
|
|
||||||
|
|
||||||
for (int i=0; i<RAND_RANGE(8, 24); i++) {
|
// hills
|
||||||
world_fill_rect_anchor(wall_id, RAND_RANGE(0, world_width), RAND_RANGE(0, world_height), 4+RAND_RANGE(-2,4), 4+RAND_RANGE(-2,4), 0.5f, 0.5f, shaper_noise50);
|
for (int i=0; i<RAND_RANGE(8, 224); i++) {
|
||||||
|
world_fill_rect_anchor(wall_id, RAND_RANGE(0, world_width), RAND_RANGE(0, world_height), RAND_RANGE(0,HILLS_SIZE), RAND_RANGE(0,HILLS_SIZE), 0.5f, 0.5f, shaper_noise33);
|
||||||
}
|
}
|
||||||
|
|
||||||
return WORLD_ERROR_NONE;
|
return WORLD_ERROR_NONE;
|
||||||
|
|
Loading…
Reference in New Issue