world_size -> chunk_amount

isolation_bkp/dynres
Dominik Madarász 2021-05-08 08:55:12 +02:00
parent ad4167b4f7
commit 57b1193ef1
8 changed files with 32 additions and 28 deletions

View File

@ -14,9 +14,9 @@ typedef struct {
uint32_t height; uint32_t height;
uint16_t block_size; uint16_t block_size;
uint16_t chunk_size; uint16_t chunk_size;
uint16_t world_size; uint16_t chunk_amount;
} world_view; } world_view;
world_view world_view_create(uint16_t view_id); 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 world_size); void world_view_init(world_view *view, uint64_t ent_id, uint16_t block_size, uint16_t chunk_size, uint16_t chunk_amount);
void world_view_destroy(world_view *view); void world_view_destroy(world_view *view);

View File

@ -94,7 +94,7 @@ void flecs_dash_init() {
ecs_set_target_fps(world_ecs(), 60); ecs_set_target_fps(world_ecs(), 60);
} }
void game_init(int8_t play_mode, uint32_t num_viewers, int32_t seed, uint16_t block_size, uint16_t chunk_size, uint16_t world_size, int8_t is_dash_enabled) { void game_init(int8_t play_mode, uint32_t num_viewers, int32_t seed, uint16_t block_size, uint16_t chunk_size, uint16_t chunk_amount, int8_t is_dash_enabled) {
is_viewer_only = play_mode; is_viewer_only = play_mode;
platform_init(); platform_init();
world_viewers_init(num_viewers); world_viewers_init(num_viewers);
@ -108,7 +108,7 @@ void game_init(int8_t play_mode, uint32_t num_viewers, int32_t seed, uint16_t bl
} else { } else {
stdcpp_set_os_api(); stdcpp_set_os_api();
world_setup_pkt_handlers(pkt_reader, sp_pkt_writer); world_setup_pkt_handlers(pkt_reader, sp_pkt_writer);
world_init(seed, block_size, chunk_size, world_size); world_init(seed, block_size, chunk_size, chunk_amount);
if (is_dash_enabled) flecs_dash_init(); if (is_dash_enabled) flecs_dash_init();
} }

View File

@ -43,18 +43,18 @@ world_view world_view_create(uint16_t view_id) {
return view; return view;
} }
void world_view_init(world_view *view, uint64_t ent_id, uint16_t block_size, uint16_t chunk_size, uint16_t world_size) { 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->owner_id = ent_id;
view->chunk_size = chunk_size; view->chunk_size = chunk_size;
view->world_size = world_size; view->chunk_amount = chunk_amount;
view->width = chunk_size * world_size; view->width = block_size * chunk_size * chunk_amount;
view->height = chunk_size * world_size; view->height = block_size * chunk_size * chunk_amount;
view->block_size = block_size; view->block_size = block_size;
view->size = view->width * view->height; view->size = view->width * view->height;
librg_config_chunksize_set(view->tracker, block_size * chunk_size, block_size * chunk_size, 1); librg_config_chunksize_set(view->tracker, block_size * chunk_size, block_size * chunk_size, 1);
librg_config_chunkamount_set(view->tracker, world_size, world_size, 1); librg_config_chunkamount_set(view->tracker, chunk_amount, chunk_amount, 1);
librg_config_chunkoffset_set(view->tracker, LIBRG_OFFSET_MID, LIBRG_OFFSET_MID, 0); librg_config_chunkoffset_set(view->tracker, LIBRG_OFFSET_MID, LIBRG_OFFSET_MID, 0);
librg_event_set(view->tracker, LIBRG_READ_CREATE, tracker_read_create); librg_event_set(view->tracker, LIBRG_READ_CREATE, tracker_read_create);

View File

@ -2,7 +2,7 @@
#include "system.h" #include "system.h"
#include "world_view.h" #include "world_view.h"
void game_init(int8_t play_mode, uint32_t num_viewers, int32_t seed, uint16_t block_size, uint16_t chunk_size, uint16_t world_size, int8_t is_dash_enabled); void game_init(int8_t play_mode, uint32_t num_viewers, int32_t seed, uint16_t block_size, uint16_t chunk_size, uint16_t chunk_amount, int8_t is_dash_enabled);
void game_shutdown(); void game_shutdown();
uint8_t game_is_running(); uint8_t game_is_running();
int8_t game_is_networked(); int8_t game_is_networked();

View File

@ -33,6 +33,6 @@ int32_t pkt_00_init_handler(pkt_header *header) {
uint64_t peer_id = (uint64_t)header->udata; uint64_t peer_id = (uint64_t)header->udata;
uint64_t ent_id = player_spawn(NULL); uint64_t ent_id = player_spawn(NULL);
ecs_set(world_ecs(), ent_id, ClientInfo, {.peer = ent_id, .view_id = header->view_id }); ecs_set(world_ecs(), ent_id, ClientInfo, {.peer = ent_id, .view_id = header->view_id });
pkt_01_welcome_send(peer_id, header->view_id, ent_id, world_block_size(), world_chunk_size(), world_world_size()); pkt_01_welcome_send(peer_id, header->view_id, ent_id, world_block_size(), world_chunk_size(), world_chunk_amount());
return 0; return 0;
} }

View File

@ -30,10 +30,9 @@ uint64_t player_spawn(char *name) {
ecs_add(world_ecs(), e, Walking); ecs_add(world_ecs(), e, Walking);
ecs_add(world_ecs(), e, Player); ecs_add(world_ecs(), e, Player);
Position *pos = ecs_get_mut(world_ecs(), e, Position, NULL); Position *pos = ecs_get_mut(world_ecs(), e, Position, NULL);
uint16_t world_dim = world_block_size() * world_chunk_size() * world_world_size(); uint16_t half_world_dim = world_dim() / 2;
uint16_t half_world_dim = world_dim / 2; pos->x=rand() % world_dim() - half_world_dim;
pos->x=rand() % world_dim - half_world_dim; pos->y=rand() % world_dim() - half_world_dim;
pos->y=rand() % world_dim - half_world_dim;
librg_entity_track(world_tracker(), e); librg_entity_track(world_tracker(), e);
librg_entity_owner_set(world_tracker(), e, (int64_t)e); librg_entity_owner_set(world_tracker(), e, (int64_t)e);

View File

@ -15,7 +15,7 @@ typedef struct {
uint32_t height; uint32_t height;
uint16_t block_size; uint16_t block_size;
uint16_t chunk_size; uint16_t chunk_size;
uint16_t world_size; uint16_t chunk_amount;
uint64_t tracker_update; uint64_t tracker_update;
ecs_world_t *ecs; ecs_world_t *ecs;
librg_world *tracker; librg_world *tracker;
@ -77,17 +77,17 @@ void world_setup_pkt_handlers(world_pkt_reader_proc *reader_proc, world_pkt_writ
world.writer_proc = writer_proc; world.writer_proc = writer_proc;
} }
int32_t world_init(int32_t seed, uint16_t block_size, uint16_t chunk_size, uint16_t world_size) { int32_t world_init(int32_t seed, uint16_t block_size, uint16_t chunk_size, uint16_t chunk_amount) {
if (world.data) { if (world.data) {
return 0; return 0;
} }
world.seed = seed; world.seed = seed;
world.chunk_size = chunk_size; world.chunk_size = chunk_size;
world.world_size = world_size; world.chunk_amount = chunk_amount;
world.width = chunk_size * world_size; world.width = chunk_size * chunk_amount;
world.height = chunk_size * world_size; world.height = chunk_size * chunk_amount;
world.block_size = block_size; world.block_size = block_size;
world.size = world.width * world.height; world.size = world.width * world.height;
@ -102,7 +102,7 @@ int32_t world_init(int32_t seed, uint16_t block_size, uint16_t chunk_size, uint1
/* config our world grid */ /* config our world grid */
librg_config_chunksize_set(world.tracker, block_size * chunk_size, block_size * chunk_size, 0); librg_config_chunksize_set(world.tracker, block_size * chunk_size, block_size * chunk_size, 0);
librg_config_chunkamount_set(world.tracker, world_size, world_size, 0); librg_config_chunkamount_set(world.tracker, chunk_amount, chunk_amount, 0);
librg_config_chunkoffset_set(world.tracker, LIBRG_OFFSET_MID, LIBRG_OFFSET_MID, 0); librg_config_chunkoffset_set(world.tracker, LIBRG_OFFSET_MID, LIBRG_OFFSET_MID, 0);
librg_event_set(world.tracker, LIBRG_WRITE_CREATE, tracker_write_create); librg_event_set(world.tracker, LIBRG_WRITE_CREATE, tracker_write_create);
@ -121,11 +121,11 @@ int32_t world_init(int32_t seed, uint16_t block_size, uint16_t chunk_size, uint1
ECS_IMPORT(world.ecs, General); ECS_IMPORT(world.ecs, General);
for (int i = 0; i < world_size * world_size; ++i) { for (int i = 0; i < chunk_amount * chunk_amount; ++i) {
ecs_entity_t e = ecs_new(world.ecs, 0); ecs_entity_t e = ecs_new(world.ecs, 0);
Chunk *chunk = ecs_get_mut(world.ecs, e, Chunk, NULL); Chunk *chunk = ecs_get_mut(world.ecs, e, Chunk, NULL);
chunk->x = i % world_size - world_size/2; chunk->x = i % chunk_amount - chunk_amount/2;
chunk->y = i / world_size - world_size/2; chunk->y = i / chunk_amount - chunk_amount/2;
librg_chunk chid = librg_chunk_from_chunkpos(world.tracker, chunk->x, chunk->y, 0); librg_chunk chid = librg_chunk_from_chunkpos(world.tracker, chunk->x, chunk->y, 0);
librg_entity_track(world.tracker, e); librg_entity_track(world.tracker, e);
@ -221,8 +221,12 @@ uint16_t world_chunk_size(void) {
return world.chunk_size; return world.chunk_size;
} }
uint16_t world_world_size(void) { uint16_t world_chunk_amount(void) {
return world.world_size; return world.chunk_amount;
}
uint16_t world_dim(void) {
return world.block_size * world.chunk_size * world.chunk_amount;
} }
#include "world_gen.c" #include "world_gen.c"

View File

@ -18,7 +18,7 @@ typedef WORLD_PKT_READER(world_pkt_reader_proc);
typedef WORLD_PKT_WRITER(world_pkt_writer_proc); typedef WORLD_PKT_WRITER(world_pkt_writer_proc);
void world_setup_pkt_handlers(world_pkt_reader_proc *reader_proc, world_pkt_writer_proc *writer_proc); void world_setup_pkt_handlers(world_pkt_reader_proc *reader_proc, world_pkt_writer_proc *writer_proc);
int32_t world_init(int32_t seed, uint16_t block_size, uint16_t chunk_size, uint16_t world_size); int32_t world_init(int32_t seed, uint16_t block_size, uint16_t chunk_size, uint16_t chunk_amount);
int32_t world_destroy(void); int32_t world_destroy(void);
int32_t world_update(void); int32_t world_update(void);
int32_t world_read(void* data, uint32_t datalen, void *udata); int32_t world_read(void* data, uint32_t datalen, void *udata);
@ -30,4 +30,5 @@ librg_world * world_tracker(void);
uint16_t world_block_size(void); uint16_t world_block_size(void);
uint16_t world_chunk_size(void); uint16_t world_chunk_size(void);
uint16_t world_world_size(void); uint16_t world_chunk_amount(void);
uint16_t world_dim(void);