From: NHOrus Date: Sat, 1 Jul 2017 11:36:54 +0000 (+0300) Subject: Spread documentation from init.c It was empty without anything to document. Reindente... X-Git-Tag: takebird~161 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=0a87fc9f78c40354068749f93cbbed80e217cd88;p=open-adventure.git Spread documentation from init.c It was empty without anything to document. Reindented, too --- diff --git a/advent.h b/advent.h index 35dd8e0..ac648fe 100644 --- a/advent.h +++ b/advent.h @@ -56,15 +56,15 @@ #define BUG(x) bug(x, #x) enum bugtype { - SPECIAL_TRAVEL_500_GT_L_GT_300_EXCEEDS_GOTO_LIST, - VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3, - INTRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST, - TRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST, - CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION, - LOCATION_HAS_NO_TRAVEL_ENTRIES, - HINT_NUMBER_EXCEEDS_GOTO_LIST, - SPEECHPART_NOT_TRANSITIVE_OR_INTRANSITIVE_OR_UNKNOWN, - ACTION_RETURNED_PHASE_CODE_BEYOND_END_OF_SWITCH, + SPECIAL_TRAVEL_500_GT_L_GT_300_EXCEEDS_GOTO_LIST, + VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3, + INTRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST, + TRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST, + CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION, + LOCATION_HAS_NO_TRAVEL_ENTRIES, + HINT_NUMBER_EXCEEDS_GOTO_LIST, + SPEECHPART_NOT_TRANSITIVE_OR_INTRANSITIVE_OR_UNKNOWN, + ACTION_RETURNED_PHASE_CODE_BEYOND_END_OF_SWITCH, }; enum speaktype {touch, look, hear, study, change}; @@ -78,19 +78,19 @@ enum speechpart {unknown, intransitive, transitive}; * The values don't matter, but perturb their order at your peril. */ enum phase_codes { - GO_TERMINATE, - GO_MOVE, - GO_TOP, - GO_CLEAROBJ, - GO_CHECKHINT, - GO_CHECKFOO, - GO_DIRECTION, - GO_LOOKUP, - GO_WORD2, - GO_SPECIALS, - GO_UNKNOWN, - GO_ACTION, - GO_DWARFWAKE, + GO_TERMINATE, + GO_MOVE, + GO_TOP, + GO_CLEAROBJ, + GO_CHECKHINT, + GO_CHECKFOO, + GO_DIRECTION, + GO_LOOKUP, + GO_WORD2, + GO_SPECIALS, + GO_UNKNOWN, + GO_ACTION, + GO_DWARFWAKE, }; typedef long token_t; // word token - someday this will be char[TOKLEN+1] @@ -110,7 +110,15 @@ struct game_t { bool closng; // whether it's closing time yet long conds; // min value for cond(loc) if loc has any hints long detail; + + /* dflag controls the level of activation of dwarves: + * 0 No dwarf stuff yet (wait until reaches Hall Of Mists) + * 1 Reached Hall Of Mists, but hasn't met first dwarf + * 2 Met first dwarf, others start moving, no knives thrown yet + * 3 A knife has been thrown (first set always misses) + * 3+ Dwarves are mad (increases their accuracy) */ long dflag; + long dkill; long dtotal; long foobar; // current progress in saying "FEE FIE FOE FOO". @@ -136,16 +144,16 @@ struct game_t { bool wzdark; // whether the loc he's leaving was dark char zzword[6]; // randomly generated magic word from bird bool blooded; // has player drunk of dragon's blood? - long abbrev[NLOCATIONS + 1]; + long abbrev[NLOCATIONS + 1]; long atloc[NLOCATIONS + 1]; - long dseen[NDWARVES + 1]; - long dloc[NDWARVES + 1]; - long odloc[NDWARVES + 1]; + long dseen[NDWARVES + 1]; // true if dwarf has seen him + long dloc[NDWARVES + 1]; // location of dwarves, initially hard-wired in + long odloc[NDWARVES + 1]; // prior loc of each dwarf, initially garbage long fixed[NOBJECTS + 1]; long link[NOBJECTS * 2 + 1]; long place[NOBJECTS + 1]; - long hinted[NHINTS]; - long hintlc[NHINTS]; + long hinted[NHINTS]; // hintlc[i] is how long he's been at LOC with cond bit i + long hintlc[NHINTS]; // hinted[i] is true iff hint i has been used. long prop[NOBJECTS + 1]; }; diff --git a/cheat.c b/cheat.c index 55b0c46..5bca67f 100644 --- a/cheat.c +++ b/cheat.c @@ -8,18 +8,23 @@ #include "dungeon.h" struct game_t game = { - .chloc = LOC_DEADEND12, - .chloc2 = LOC_DEADEND13, .dloc[1] = LOC_KINGHALL, .dloc[2] = LOC_WESTBANK, .dloc[3] = LOC_Y2, .dloc[4] = LOC_ALIKE3, .dloc[5] = LOC_COMPLEX, + + /* Sixth 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. */ .dloc[6] = LOC_DEADEND12, - .abbnum = 5, - .clock1 = WARNTIME, - .clock2 = FLASHTIME, - .blklin = true + .chloc = LOC_DEADEND12, + .chloc2 = LOC_DEADEND13, + .abbnum = 5, + .clock1 = WARNTIME, + .clock2 = FLASHTIME, + .blklin = true }; FILE *logfp = NULL, *rfp = NULL; diff --git a/init.c b/init.c index 7964ceb..4d05e0f 100644 --- a/init.c +++ b/init.c @@ -30,9 +30,8 @@ void initialise(void) * We'll use the DROP subroutine, which prefaces new objects on the * lists. Since we want things in the other order, we'll run the * loop backwards. If the object is in two locs, we drop it twice. - * This also sets up "game.place" and "fixed" as copies of "PLAC" and - * "FIXD". Also, since two-placed objects are typically best - * described last, we'll drop them first. */ + * Also, since two-placed objects are typically best described + * last, we'll drop them first. */ for (int i = NOBJECTS; i >= 1; i--) { if (objects[i].fixd > 0) { drop(i + NOBJECTS, objects[i].fixd); @@ -57,31 +56,5 @@ void initialise(void) game.tally = game.tally - game.prop[treasure]; } } - - /* Clear the hint stuff. game.hintlc[i] is how long he's been at LOC - * with cond bit i. game.hinted[i] is true iff hint i has been - * used. */ - for (int i = 0; i < NHINTS; i++) { - game.hinted[i] = false; - game.hintlc[i] = 0; - } - - /* Initialise the dwarves. game.dloc is loc of dwarves, - * hard-wired in. game.odloc is prior loc of each dwarf, - * initially garbage. DALTLC is alternate initial loc for dwarf, - * in case one of them starts out on top of the adventurer. (No - * 2 of the 5 initial locs are adjacent.) game.dseen is true if - * dwarf has seen him. game.dflag controls the level of - * activation of all this: - * 0 No dwarf stuff yet (wait until reaches Hall Of Mists) - * 1 Reached Hall Of Mists, but hasn't met first dwarf - * 2 Met first dwarf, others start moving, no knives thrown yet - * 3 A knife has been thrown (first set always misses) - * 3+ Dwarves are mad (increases their accuracy) - * Sixth dwarf is special (the pirate). He always starts at his - * chest's eventual location inside the maze. This loc is saved - * in game.chloc for ref. the dead end in the other maze has its - * loc stored in game.chloc2. */ - game.conds = setbit(11); } diff --git a/main.c b/main.c index 3905054..a6027f8 100644 --- a/main.c +++ b/main.c @@ -28,18 +28,23 @@ #define DIM(a) (sizeof(a)/sizeof(a[0])) struct game_t game = { - .chloc = LOC_DEADEND12, - .chloc2 = LOC_DEADEND13, .dloc[1] = LOC_KINGHALL, .dloc[2] = LOC_WESTBANK, .dloc[3] = LOC_Y2, .dloc[4] = LOC_ALIKE3, .dloc[5] = LOC_COMPLEX, + + /* Sixth 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. */ .dloc[6] = LOC_DEADEND12, - .abbnum = 5, - .clock1 = WARNTIME, - .clock2 = FLASHTIME, - .blklin = true + .chloc = LOC_DEADEND12, + .chloc2 = LOC_DEADEND13, + .abbnum = 5, + .clock1 = WARNTIME, + .clock2 = FLASHTIME, + .blklin = true }; FILE *logfp = NULL, *rfp = NULL; @@ -384,9 +389,12 @@ static bool dwarfmove(void) if (PCT(50)) game.dloc[j] = 0; } + + /* Alternate initial loc for dwarf, in case one of them + * starts out on top of the adventurer. */ for (int i = 1; i <= NDWARVES - 1; i++) { if (game.dloc[i] == game.loc) - game.dloc[i] = DALTLC; + game.dloc[i] = DALTLC; // game.odloc[i] = game.dloc[i]; } rspeak(DWARF_RAN); @@ -1143,7 +1151,7 @@ Lookup: rspeak(DONT_KNOW, command.wd1, command.wd1x); goto L2600; } - /* FIXME: magic numbers related to vocabulary */ + /* FIXME: magic numbers related to vocabulary */ kmod = MOD(defn, 1000); switch (defn / 1000) { case 0: diff --git a/misc.c b/misc.c index c16e9af..7cc26fc 100644 --- a/misc.c +++ b/misc.c @@ -37,17 +37,17 @@ void* xmalloc(size_t size) void packed_to_token(long packed, char token[6]) { - // The advent->ascii mapping. - const char advent_to_ascii[] = { - ' ', '!', '"', '#', '$', '%', '&', '\'', - '(', ')', '*', '+', ',', '-', '.', '/', - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', ':', ';', '<', '=', '>', '?', - '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', - 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', - 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', - 'X', 'Y', 'Z', '\0', '\0', '\0', '\0', '\0', -}; + // The advent->ascii mapping. + const char advent_to_ascii[] = { + ' ', '!', '"', '#', '$', '%', '&', '\'', + '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', '\0', '\0', '\0', '\0', '\0', + }; // Unpack and map back to ASCII. for (int i = 0; i < 5; ++i) { @@ -69,26 +69,26 @@ void packed_to_token(long packed, char token[6]) long token_to_packed(const char token[6]) { - const char ascii_to_advent[] = { - 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, - - 0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, - - 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, -}; + const char ascii_to_advent[] = { + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, + }; size_t t_len = strlen(token); long packed = 0; @@ -242,7 +242,7 @@ void vspeak(const char* msg, va_list ap) } } *renderp = 0; - + // Print the message. printf("%s\n", rendered);