void _initDynamicLight(light *lght) { if (lght->fov) { TCOD_map_delete(lght->fov); } else { printf("Trying to init a light with no existing fov.\n"); } if (lght->lightMap) { TCOD_map_delete(lght->lightMap); } else { printf("Trying to init a light with no existing light map.\n"); } lght->fov = copyLevelMap(); lght->lightMap = copyLevelMap(); TCOD_map_compute_fov(lght->fov, lght->x, lght->y, lght->size, 1, FOV_SHADOW); }
void lightsShutdown() { light *next, *ptr = DYNAMIC_LIGHTS; printf("Cleaning up lights...\n"); while (ptr != NULL) { next = ptr->next; TCOD_map_delete(ptr->fov); if (ptr->lightMap) { TCOD_map_delete(ptr->lightMap); } free(ptr); ptr = next; } }
void map_destroy() { for (int i = 0; i < ITEM_COUNT; ++i) { point_node *node = items[i]; while (node != NULL) { point_node *next = node->next; free(node); node = next; } } TCOD_map_delete(tcod_map); }
void _resetActorForNewLevel(character *actor) { if (actor->fov) { TCOD_map_delete(actor->fov); } actor->fov = copyLevelMap(); if (actor->path) { TCOD_path_delete(actor->path); } actor->path = TCOD_path_new_using_function(WINDOW_WIDTH, WINDOW_HEIGHT, _actorPathCallback, actor, 1.41f); if (actor->itemLight) { resetLight(actor->itemLight); } TCOD_map_compute_fov(actor->fov, actor->x, actor->y, actor->sightRange, 1, FOV_SHADOW); }
/* Destroys a map instance */ void map_destroy(map_t* map) { free(map->tiles); TCOD_map_delete(map->fov); free(map); }
TCODMap::~TCODMap() { TCOD_map_delete(data); }