thrive/01_text_adventure/transition.c

42 lines
1.2 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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;
}