feat: renamed LevelSpawnFn to DeserializeFn

This commit is contained in:
Sara 2024-02-22 21:12:34 +01:00
parent 630f60af94
commit b641589188
2 changed files with 10 additions and 10 deletions

View file

@ -6,7 +6,7 @@
#include "variant.h" #include "variant.h"
#include "ctype.h" #include "ctype.h"
static Dictionary internal_spawn_functions = { static Dictionary internal_deserializers = {
.list = { .data = NULL, .len = 0, .cap = 0, .element_size = 0 }, .list = { .data = NULL, .len = 0, .cap = 0, .element_size = 0 },
.element_size = 0 .element_size = 0
}; };
@ -17,22 +17,22 @@ static int is_colon(int c) { return c == ':'; }
static int ends_parameter(int c) { return c == '}' || c == ','; } static int ends_parameter(int c) { return c == '}' || c == ','; }
int level_init() { int level_init() {
internal_spawn_functions = dictionary_from_type(LevelSpawnFn); internal_deserializers = dictionary_from_type(DeserializeFn);
return 0; return 0;
} }
int level_clean() { int level_clean() {
dictionary_empty(&internal_spawn_functions); dictionary_empty(&internal_deserializers);
return 0; return 0;
} }
int level_register_spawner(const char* object_tag, LevelSpawnFn spawn_function) { int level_register_spawner(const char* object_tag, DeserializeFn spawn_function) {
dictionary_set_value(LevelSpawnFn, &internal_spawn_functions, object_tag, spawn_function); dictionary_set_value(DeserializeFn, &internal_deserializers, object_tag, spawn_function);
return 0; return 0;
} }
static inline static inline
void spawn_object(LevelSpawnFn spawner, Dictionary* args) { void spawn_object(DeserializeFn spawner, Dictionary* args) {
BehaviourEntity entity = spawner(args); BehaviourEntity entity = spawner(args);
game_world_add_entity(entity); game_world_add_entity(entity);
if(TC_MIRRORS(entity, PhysicsEntity)) if(TC_MIRRORS(entity, PhysicsEntity))
@ -140,7 +140,7 @@ int level_parse_file(FILE* fp) {
char buffer[length]; char buffer[length];
char* obj_tag = NULL; char* obj_tag = NULL;
Dictionary args = dictionary_new(sizeof(Variant)); Dictionary args = dictionary_new(sizeof(Variant));
LevelSpawnFn spawner = NULL; DeserializeFn spawner = NULL;
do { do {
// read the next line of the level file // read the next line of the level file
length = get_until(fp, buffer, sizeof(buffer)-1, is_open_bracket); length = get_until(fp, buffer, sizeof(buffer)-1, is_open_bracket);
@ -152,7 +152,7 @@ int level_parse_file(FILE* fp) {
obj_tag[length - start] = '\0'; obj_tag[length - start] = '\0';
strncpy(obj_tag, buffer + start, length - start); strncpy(obj_tag, buffer + start, length - start);
// find the spawn function // find the spawn function
if(dictionary_try_get(&internal_spawn_functions, obj_tag, &spawner)) { if(dictionary_try_get(&internal_deserializers, obj_tag, &spawner)) {
// load arguments from file and spawn object // load arguments from file and spawn object
load_args(fp, &args, buffer, sizeof(buffer)); load_args(fp, &args, buffer, sizeof(buffer));
spawn_object(spawner, &args); spawn_object(spawner, &args);

View file

@ -5,12 +5,12 @@
#include "behaviour_entity.h" #include "behaviour_entity.h"
#include "dictionary.h" #include "dictionary.h"
typedef BehaviourEntity(*LevelSpawnFn)(Dictionary* args); typedef BehaviourEntity(*DeserializeFn)(Dictionary* args);
extern int level_init(); extern int level_init();
extern int level_clean(); extern int level_clean();
extern int level_register_spawner(const char* object_tag, LevelSpawnFn spawn_function); extern int level_register_spawner(const char* object_tag, DeserializeFn spawn_function);
extern int level_parse_file(FILE* level); extern int level_parse_file(FILE* level);
extern int level_load_file(const char* path); extern int level_load_file(const char* path);