diff options
author | Orangerot <purple@orangerot.dev> | 2025-06-12 00:51:42 +0200 |
---|---|---|
committer | Orangerot <purple@orangerot.dev> | 2025-06-12 00:51:42 +0200 |
commit | f13cac1a0d67418dbce84ad4baad59af3327117b (patch) | |
tree | d2b794c079da2371230c66ad32aca5a48aefc5c8 /world.c | |
parent | fe42371c8c5b80b174372de846fafb7590fc3ff1 (diff) |
Diffstat (limited to 'world.c')
-rw-r--r-- | world.c | 23 |
1 files changed, 16 insertions, 7 deletions
@@ -136,9 +136,13 @@ void gen_terrain(struct World *world) { generate_river(world, global_minimum_map_i); } -// void gen_room() { -// -// } +void gen_room(struct World *world) { + int map_size = world->size; + + world->map = GenImageColor(map_size, map_size, BLACK); + world->map_texture = LoadTextureFromImage(world->map); + world->map_data = LoadImageColors(world->map); +} // // void unload_world() {} @@ -152,13 +156,18 @@ void draw_world(struct World *world) { int x = i % map_size, y = i / map_size; int gradients[4][2] = {{0,-1},{-1,0},{0,1},{1,0}}; for (int gradient_i = 0; gradient_i < 4; gradient_i++) { - int dx = CLAMP(x + gradients[gradient_i][0], 0, map_size - 1); - int dy = CLAMP(y + gradients[gradient_i][1], 0, map_size - 1); - for (int height = map_data[i].g; height < map_data[dy * map_size + dx].g; height++) { + int dx = x + gradients[gradient_i][0]; + int dy = y + gradients[gradient_i][1]; + int is_border = (dx < 0 || dx >= map_size || dy < 0 || dy >= map_size); + + dx = CLAMP(dx, 0, map_size - 1); + dy = CLAMP(dy, 0, map_size - 1); + int height = MAX(map_data[dy * map_size + dx].g, is_border); + for (int step = map_data[i].g; step < height; step++) { DrawModelEx(wall, (Vector3){ .x = map_size * (x / (float) map_size - 0.5f), - .y = height, + .y = step, .z = map_size * (y / (float) map_size - 0.5f) }, (Vector3) {0, 1, 0}, gradient_i * 90.f, (Vector3) {1,1,1}, WHITE); |