From 9612846d7981b0f2aad4a83f02a49431c611a807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Sat, 8 May 2021 09:07:24 +0200 Subject: [PATCH] addt'l world dim changes --- code/apps/client/header/world_view.h | 3 +-- code/apps/client/source/world_view.c | 7 +++---- code/common/world/world.c | 10 ++++------ code/common/world/world_gen.c | 24 ++++++++++++------------ 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/code/apps/client/header/world_view.h b/code/apps/client/header/world_view.h index babfec8..43a7fda 100644 --- a/code/apps/client/header/world_view.h +++ b/code/apps/client/header/world_view.h @@ -10,8 +10,7 @@ typedef struct { librg_world *tracker; uint32_t size; - uint32_t width; - uint32_t height; + uint32_t dim; uint16_t block_size; uint16_t chunk_size; uint16_t chunk_amount; diff --git a/code/apps/client/source/world_view.c b/code/apps/client/source/world_view.c index a59d720..41aaf93 100644 --- a/code/apps/client/source/world_view.c +++ b/code/apps/client/source/world_view.c @@ -45,13 +45,12 @@ world_view world_view_create(uint16_t view_id) { void world_view_init(world_view *view, uint64_t ent_id, uint16_t block_size, uint16_t chunk_size, uint16_t chunk_amount) { view->owner_id = ent_id; + view->block_size = block_size; view->chunk_size = chunk_size; view->chunk_amount = chunk_amount; - view->width = block_size * chunk_size * chunk_amount; - view->height = block_size * chunk_size * chunk_amount; - view->block_size = block_size; - view->size = view->width * view->height; + view->dim = block_size * chunk_size * chunk_amount; + view->size = view->dim * view->dim; librg_config_chunksize_set(view->tracker, block_size * chunk_size, block_size * chunk_size, 1); librg_config_chunkamount_set(view->tracker, chunk_amount, chunk_amount, 1); diff --git a/code/common/world/world.c b/code/common/world/world.c index 18847cd..dad5084 100644 --- a/code/common/world/world.c +++ b/code/common/world/world.c @@ -11,11 +11,10 @@ typedef struct { uint8_t *data; uint32_t seed; uint32_t size; - uint32_t width; - uint32_t height; uint16_t block_size; uint16_t chunk_size; uint16_t chunk_amount; + uint16_t dim; uint64_t tracker_update; ecs_world_t *ecs; librg_world *tracker; @@ -86,10 +85,9 @@ int32_t world_init(int32_t seed, uint16_t block_size, uint16_t chunk_size, uint1 world.chunk_size = chunk_size; world.chunk_amount = chunk_amount; - world.width = chunk_size * chunk_amount; - world.height = chunk_size * chunk_amount; world.block_size = block_size; - world.size = world.width * world.height; + world.dim = (world.chunk_size * world.chunk_amount);; + world.size = world.dim * world.dim; if (world.tracker == NULL) { world.tracker = librg_world_create(); @@ -201,7 +199,7 @@ uint32_t world_buf(uint8_t const **ptr, uint32_t *width) { ZPL_ASSERT_NOT_NULL(world.data); ZPL_ASSERT_NOT_NULL(ptr); *ptr = world.data; - if (width) *width = world.width; + if (width) *width = world.dim; return world.size; } diff --git a/code/common/world/world_gen.c b/code/common/world/world_gen.c index d845a3d..30992b0 100644 --- a/code/common/world/world_gen.c +++ b/code/common/world/world_gen.c @@ -16,9 +16,9 @@ typedef WORLD_BLOCK_OBSERVER(world_block_observer_proc); static void world_fill_rect(uint32_t id, uint32_t x, uint32_t y, uint32_t w, uint32_t h, world_block_observer_proc *proc) { for (uint32_t cy=y; cy= world.width) continue; - if (cy < 0 || cy >= world.height) continue; - uint32_t i = (cy*world.width) + cx; + if (cx < 0 || cx >= world.dim) continue; + if (cy < 0 || cy >= world.dim) continue; + uint32_t i = (cy*world.dim) + cx; if (proc) { uint32_t new_id = (*proc)(id, i); @@ -36,9 +36,9 @@ static void world_fill_rect(uint32_t id, uint32_t x, uint32_t y, uint32_t w, uin static void world_fill_circle(uint32_t id, uint32_t x, uint32_t y, uint32_t w, uint32_t h, world_block_observer_proc *proc) { for (uint32_t cy=y; cy= world.width) continue; - if (cy < 0 || cy >= world.height) continue; - uint32_t i = (cy*world.width) + cx; + if (cx < 0 || cx >= world.dim) continue; + if (cy < 0 || cy >= world.dim) continue; + uint32_t i = (cy*world.dim) + cx; if (proc) { uint32_t new_id = (*proc)(id, i); @@ -78,8 +78,8 @@ static WORLD_BLOCK_OBSERVER(shaper) { } static uint8_t world_perlin_cond(uint32_t block_idx, double chance) { - uint32_t x = block_idx % world.width; - uint32_t y = block_idx / world.width; + uint32_t x = block_idx % world.dim; + uint32_t y = block_idx / world.dim; return perlin_fbm(world.seed, x, y, WORLD_PERLIN_FREQ, WORLD_PERLIN_OCTAVES) < chance; } @@ -112,21 +112,21 @@ int32_t world_gen() { srand(world.seed); // walls - world_fill_rect(wall_id, 0, 0, world.width, world.height, NULL); + world_fill_rect(wall_id, 0, 0, world.dim, world.dim, NULL); // ground - world_fill_rect(grnd_id, 1, 1, world.width-2, world.height-2, NULL); + world_fill_rect(grnd_id, 1, 1, world.dim-2, world.dim-2, NULL); // water for (int i=0; i