#include #include #include #include "transition.h" #include "game.h" #define TRANSITIONS_PATH "./transitions.txt" char transition_buffer[2001]; void game_load_transitions(Game *g) { FILE *transitions_file = fopen(TRANSITIONS_PATH, "r"); while ((fgets(transition_buffer, 2000, transitions_file)) != NULL) { char *token = strtok(transition_buffer, "|"); g->transitions->transitions[g->transitions->count].from = find_room(g->rooms, token); token = strtok(NULL, "|"); g->transitions->transitions[g->transitions->count].via = command_from_string(token); token = strtok(NULL, "|"); g->transitions->transitions[g->transitions->count].to = find_room(g->rooms, token); token = strtok(NULL, "|"); g->transitions->transitions[g->transitions->count].description = malloc(strlen(token) + 1); strcpy(g->transitions->transitions[g->transitions->count].description, token); g->transitions->count++; } fclose(transitions_file); } Transition *find_transition(Transitions *t, Room *from, Command via) { for (int i = 0; i < t->count; i++) { Transition *candidate = &t->transitions[i]; if (candidate->from == from && candidate->via == via) return candidate; } return NULL; }