world code

isolation_bkp/dynres
Dominik Madarász 2021-01-11 15:48:17 +01:00
parent 0712851e3e
commit 88fa3cbb71
2 changed files with 16 additions and 2 deletions

View File

@ -10,4 +10,4 @@
int32_t world_gen(int32_t seed, uint8_t width, uint8_t height); int32_t world_gen(int32_t seed, uint8_t width, uint8_t height);
int32_t world_destroy(void); int32_t world_destroy(void);
uint32_t world_buf(uint8_t const **ptr); uint32_t world_buf(uint8_t const **ptr, uint32_t *width);

View File

@ -3,18 +3,32 @@
static uint8_t *world = NULL; static uint8_t *world = NULL;
static uint32_t world_size = 0; static uint32_t world_size = 0;
static uint32_t world_width = 0;
int32_t world_gen(int32_t seed, uint8_t width, uint8_t height) { int32_t world_gen(int32_t seed, uint8_t width, uint8_t height) {
if (world) {
world_destroy();
}
world_size = width*height;
world_width = width;
world = zpl_malloc(sizeof(uint8_t)*world_size);
if (!world) {
return WORLD_ERROR_OUTOFMEM;
}
return WORLD_ERROR_NONE; return WORLD_ERROR_NONE;
} }
int32_t world_destroy(void) { int32_t world_destroy(void) {
zpl_mfree(world);
world = NULL;
return WORLD_ERROR_NONE; return WORLD_ERROR_NONE;
} }
uint32_t world_buf(uint8_t const **ptr) { uint32_t world_buf(uint8_t const **ptr, uint32_t *width) {
ZPL_ASSERT_NOT_NULL(world); ZPL_ASSERT_NOT_NULL(world);
ZPL_ASSERT_NOT_NULL(ptr); ZPL_ASSERT_NOT_NULL(ptr);
*ptr = world; *ptr = world;
if (width) *width = world_width;
return world_size; return world_size;
} }