summaryrefslogtreecommitdiff
path: root/world.c
diff options
context:
space:
mode:
Diffstat (limited to 'world.c')
-rw-r--r--world.c23
1 files changed, 16 insertions, 7 deletions
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);