Initialize dwarf locations in YAML, not C.

Minimizes magic numbers.
This commit is contained in:
Eric S. Raymond 2024-01-02 10:32:23 -05:00
parent 1f9f39d789
commit b247359d7f
5 changed files with 28 additions and 8 deletions

15
init.c
View file

@ -11,6 +11,7 @@
#include <stdio.h>
#include <stdbool.h>
#include <time.h>
#include <assert.h>
#include "advent.h"
@ -21,17 +22,10 @@ struct settings_t settings = {
};
struct game_t game = {
.dwarves[1].loc = LOC_KINGHALL,
.dwarves[2].loc = LOC_WESTBANK,
.dwarves[3].loc = LOC_Y2,
.dwarves[4].loc = LOC_ALIKE3,
.dwarves[5].loc = LOC_COMPLEX,
/* Sixth dwarf is special (the pirate). He always starts at his
/* Last dwarf is special (the pirate). He always starts at his
* chest's eventual location inside the maze. This loc is saved
* in chloc for ref. The dead end in the other maze has its
* loc stored in chloc2. */
.dwarves[6].loc = LOC_MAZEEND12,
.chloc = LOC_MAZEEND12,
.chloc2 = LOC_DEADEND13,
.abbnum = 5,
@ -52,6 +46,11 @@ int initialise(void)
int seedval = (int)rand();
set_seed(seedval);
assert(NDWARVES == NDWARFLOCS);
for (int i = 1; i <= NDWARFLOCS; i++) {
game.dwarves[i].loc = dwarflocs[i-1];
}
for (int i = 1; i <= NOBJECTS; i++) {
game.objects[i].place = LOC_NOWHERE;
}