X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=main.c;h=1865483964d109c9a4aa7c5b7dd69d0d373d0d6a;hp=f9fb116a1034bbd1f6a3f7d85c2d79e30d9bde60;hb=6667ffd1f10e75ee4b75a3430d76e6f1b4e51090;hpb=a437136543d8b38168e446f43ec0cb815623dc09 diff --git a/main.c b/main.c index f9fb116..1865483 100644 --- a/main.c +++ b/main.c @@ -1,17 +1,4 @@ /* - * There used to be a note that said this: - * - * The author - Don Woods - apologises for the style of the code; it - * is a result of running the original Fortran IV source through a - * home-brew Fortran-to-C converter. - * - * Now that the code has been restructured into something much closer - * to idiomatic C, the following is more appropriate: - * - * ESR apologizes for the remaing gotos (now confined to one function - * in this file - there used to be over 350 of them, *everywhere*). - * Applying the Structured Program Theorem can be hard. - * * Copyright (c) 1977, 2005 by Will Crowther and Don Woods * Copyright (c) 2017 by Eric S. Raymond * SPDX-License-Identifier: BSD-2-clause @@ -723,7 +710,7 @@ static void playermove( int motion) * game.prop[TROLL]=TROLL_UNPAID.) Special stuff * for bear. */ if (game.prop[TROLL] == TROLL_PAIDONCE) { - pspeak(TROLL, look, TROLL_PAIDONCE, true); + pspeak(TROLL, look, true, TROLL_PAIDONCE); game.prop[TROLL] = TROLL_UNPAID; move(TROLL2, LOC_NOWHERE); move(TROLL2 + NOBJECTS, IS_FREE); @@ -969,7 +956,7 @@ static void listobjects(void) kk = (game.loc == game.fixed[STEPS]) ? STEPS_UP : STEPS_DOWN; - pspeak(obj, look, kk, true); + pspeak(obj, look, true, kk); } } } @@ -981,14 +968,14 @@ void clear_command(command_t *cmd) cmd->obj = NO_OBJECT; } -/* +/* * This function probably does too many disparate things. It checks for hints, - * sees if the gamed is closed, checks for darkness, gets user input, increments - * the turns in the game state, checks to see if we should be closing, gets the - * command input, and preprocesses some implied verbs in the case that the user + * sees if the gamed is closed, checks for darkness, gets user input, increments + * the turns in the game state, checks to see if we should be closing, gets the + * command input, and preprocesses some implied verbs in the case that the user * put in a single word motion or object command. - * - * This was the lesser evil -- it got rid of a really nasty goto in the main + * + * This was the lesser evil -- it got rid of a really nasty goto in the main * input parser/state transition engine. This should be refactored further. */ bool get_preprocessed_command_input(command_t *command) @@ -1005,7 +992,7 @@ bool get_preprocessed_command_input(command_t *command) * separate from their respective piles. */ if (game.closed) { if (game.prop[OYSTER] < 0 && TOTING(OYSTER)) - pspeak(OYSTER, look, 1, true); + pspeak(OYSTER, look, true, 1); for (size_t i = 1; i <= NOBJECTS; i++) { if (TOTING(i) && game.prop[i] < 0) game.prop[i] = STASHED(i); @@ -1163,7 +1150,7 @@ static bool do_command() listobjects(); clear_command(&command); - + do { // Get pre-processed command input from user command_given = get_preprocessed_command_input(&command); @@ -1218,7 +1205,7 @@ static bool do_command() BUG(VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3); // LCOV_EXCL_LINE } - if(command_given) { + if (command_given) { switch (action(command)) { case GO_TERMINATE: return true; @@ -1229,7 +1216,7 @@ static bool do_command() continue; /* back to top of main interpreter loop */ case GO_CLEAROBJ: clear_command(&command); - /* FALL THROUGH */ + /* FALL THROUGH */ case GO_CHECKHINT: command_given = false; break; @@ -1260,7 +1247,7 @@ static bool do_command() } } while (!command_executed); } while (!command_given); - } + } } /* end */