From f13cac1a0d67418dbce84ad4baad59af3327117b Mon Sep 17 00:00:00 2001 From: Orangerot Date: Thu, 12 Jun 2025 00:51:42 +0200 Subject: feat: draw world bounds and add world_room --- world.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'world.c') diff --git a/world.c b/world.c index 3b7c6ba..d8d925e 100644 --- a/world.c +++ b/world.c @@ -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); -- cgit v1.2.3