X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=src%2Fmap_objects.c;fp=src%2Fmap_objects.c;h=e825755b86a991b1b823756038d1df0a4181ec89;hb=aafa0cb49e7ec8600dad902411de6e76e111c939;hp=7e2472d0da521abe19b873088e7cb96f36571563;hpb=70e61f84d109d0f3072ab569774424b83136ae58;p=plomrogue diff --git a/src/map_objects.c b/src/map_objects.c index 7e2472d..e825755 100644 --- a/src/map_objects.c +++ b/src/map_objects.c @@ -78,9 +78,10 @@ extern void read_map_objects(struct World * world, FILE * file, char * line, char * f_name = "read_map_objects()"; struct MapObj ** mo_ptr_ptr = &world->map_objs; char * delim = " "; + struct MapObj * mo; while (try_fgets(line, linemax + 1, file, world, f_name)) { - struct MapObj * mo = malloc(sizeof(struct MapObj)); + mo = malloc(sizeof(struct MapObj)); mo->next = NULL; mo->id = atoi(strtok(line, delim)); if (mo->id > world->map_obj_count) @@ -94,6 +95,7 @@ extern void read_map_objects(struct World * world, FILE * file, char * line, * mo_ptr_ptr = mo; mo_ptr_ptr = &mo->next; } + world->last_map_obj = mo; } @@ -108,8 +110,16 @@ extern void add_map_object(struct World * world, uint8_t type) mo->type = mod->id; mo->lifepoints = mod->lifepoints; mo->pos = find_passable_pos(world->map); - mo->next = world->map_objs; - world->map_objs = mo; + mo->next = NULL; + if (NULL == world->last_map_obj) + { + world->map_objs = mo; + } + else + { + world->last_map_obj->next = mo; + } + world->last_map_obj = mo; } @@ -137,6 +147,25 @@ extern void free_map_objects(struct MapObj * mo_start) +extern struct MapObj * get_player(struct World * world) +{ + struct MapObj * ptr = world->map_objs; + while (1) + { + if (NULL == ptr) + { + return ptr; + } + if (0 == ptr->id) + { + return ptr; + } + ptr = ptr->next; + } +} + + + extern struct MapObjDef * get_map_object_def(struct World * w, uint8_t id) { struct MapObjDef * mod = w->map_obj_defs;