Commit graph

306 commits

Author SHA1 Message Date
Eric S. Raymond
62ee15c892 Pack more globals into the game block structure. 2017-06-07 00:41:51 -04:00
Eric S. Raymond
bb78ca96ce Capture clock variables into the game-state block. 2017-06-07 00:15:31 -04:00
Eric S. Raymond
ab04fe4d41 More more globals into the game state block. 2017-06-06 21:46:17 -04:00
Eric S. Raymond
07c0020a7a First step in game state encapsulation: the dwarf & pirate locations. 2017-06-06 21:34:11 -04:00
Eric S. Raymond
e4f8218d9c Gotoectomy+. 2017-06-06 20:32:00 -04:00
Eric S. Raymond
d8e8bc8e89 Gotoectomy. 2017-06-06 20:01:01 -04:00
Eric S. Raymond
978168523a Magic-number elimination. 2017-06-06 11:12:00 -04:00
Eric S. Raymond
fd10d380df Abstract out NOBJECTS (formerly magic number 100). 2017-06-06 10:44:25 -04:00
Eric S. Raymond
4d6078d8a8 Replace homebrew IABS() with C kubrary labs(3). 2017-06-06 09:21:46 -04:00
Eric S. Raymond
d402e09411 Header consolidation - main.h, misc.h, and share.h merge to advent.h.
For a project this small size with a small type ontology, it's better
C style to have one header where all the assumptions about types and
structures are immediately visible.

This is a first step towards turning all that global state into a handful
of structures - probably just two, one saveable as a binary game state.
2017-06-02 15:06:33 -04:00
Michael Jarvis
40ccd3d80d use char, not signed char 2017-06-01 17:45:29 -05:00
Jason S. Ninneman
c9ba5831c9 Remove erroneous comment about PRNG usage. 2017-05-30 17:19:01 -07:00
Eric S. Raymond
6a6670e3ca Fix things so seed doesn't cost clock time. 2017-05-30 20:08:55 -04:00
Jason S. Ninneman
71fcc814f8 Launder seed generation through rand() to ensure seed diversity.
This doesn't affect reproducibility because a) the seed value written to logs is the output of this process, and b) the argument to the seed command *doesn't* get laundered.
2017-05-30 14:58:55 -07:00
Jason S. Ninneman
fda1abed97 Remove an obfuscation scheme for the reservoir magic word. 2017-05-29 13:34:34 -07:00
Jason S. Ninneman
519d8f07e6 Really mean it about strict C99 compliance. 2017-05-29 09:30:37 -07:00
Eric S. Raymond
5ae76995d2 Simplify build: nested makefiles considered harmful. 2017-05-29 01:33:59 -04:00
Jason S. Ninneman
f0528b0ded Move database compilation out into its own tool (for now). 2017-05-28 21:46:54 -07:00
Jason S. Ninneman
d6b59a1c12 Apply further polish and add in a couple of missing size variables. 2017-05-28 17:21:04 -07:00
Jason S. Ninneman
df46df6979 Factor out handling of variables populated from the database.
This reorganization is a first step toward handling database compilation separately.
2017-05-28 15:42:05 -07:00
Jason S. Ninneman
f9eca41f3a Ensure the ZZZZ magic word is reproducible.
This happens by making the SEED command also regenerate the magic word.
2017-05-26 16:34:16 -07:00
Eric S. Raymond
5c4fdc35eb Flush log on interrupt, just for convenience. 2017-05-26 07:22:24 -04:00
Eric S. Raymond
7763e1aa22 Repeatable seeding is working. 2017-05-25 18:52:39 -04:00
Eric S. Raymond
79ef3e38c2 Implement fallback handler that looks at the raw command buffer.
With database cinpilation not broken this time...
2017-05-25 18:21:38 -04:00
Eric S. Raymond
6ba9a7de7f Once again, take srand()/random() out of the initialization chain.
They have exactly the wrong kind of randomness for this job - not
returning consistent sequences across different platforms or C library
versions, and because pseodorandom not really better than sampling
the clock.
2017-05-24 23:36:25 -04:00
Eric S. Raymond
3a2c0ca199 Reapply "Clean up logic for exiting input loop and scoring." 2017-05-24 22:51:36 -04:00
Jason S. Ninneman
ba1369310d Remove disused label. 2017-05-24 15:43:34 -07:00
Eric S. Raymond
31837249f8 Revert SEED handling and comment orocessing. It broke database compilation.
This code is remarkably like the game it implements - a maze of twisty
little FORTRANisms, all alike.  Very easy to get lost.
2017-05-24 18:24:09 -04:00
Eric S. Raymond
c703bd78d9 Clean up logic for exiting input loop and scoring. 2017-05-24 11:16:59 -04:00
Eric S. Raymond
cf219e920b Seed command fully implemented but apparently buggy.
Dwarf appearance is not yet reproducible.
2017-05-24 09:06:41 -04:00
Eric S. Raymond
65c081a0ac Implement stub handler for SEED command. Not hooked up to PRNG yet. 2017-05-24 08:30:06 -04:00
Jason S. Ninneman
8a8770375e Add seedable PRNG using an adaptation the original LCG algorithm. 2017-05-23 23:37:56 -07:00
Eric S. Raymond
484ca4e9fd Revert structurization changes, they broke database compilation...
...bug showing only if adventure.data was absent.  We'll need to sneak up
on this more carefully.
2017-05-24 00:17:19 -04:00
Eric S. Raymond
f9eb6383f1 Revert a variable name previously changed to be out of the way.
Also, make output from replays easier to interpret by adding prompts.
2017-05-23 22:29:24 -04:00
Eric S. Raymond
f72141fbe3 More structurization. 2017-05-23 20:59:21 -04:00
Eric S. Raymond
f68f3a1205 More globals to the game structure. 2017-05-23 20:34:53 -04:00
Eric S. Raymond
c3add5c206 More global-to-structure moves. 2017-05-23 20:22:35 -04:00
Eric S. Raymond
50ed247042 More comment cleanup. 2017-05-23 19:49:49 -04:00
Eric S. Raymond
bbe68abd30 Fixed case in a comment. 2017-05-23 19:45:18 -04:00
Eric S. Raymond
fa1f859162 Move more globals into the state structure. 2017-05-23 19:40:34 -04:00
Eric S. Raymond
42189d79d7 Begin gathering saveable game state into a structure. Not yet complete.
No logic changes.  A bunch of globals turn into fields (with the same names
except for lowercasing) in struct game_t.

Eventually this will allow drastic simplification of the save/load logic.
2017-05-23 18:47:04 -04:00
Eric S. Raymond
dc9d9e467b Input source is parametrized all the way down.
This means that, potentially, do_command() could be called on any text file
pointer and the right thing would happen.
2017-05-23 15:57:38 -04:00
Eric S. Raymond
c6867b374a Begin factoring out the command interpreter. 2017-05-23 14:48:41 -04:00
Eric S. Raymond
935d8b8e68 Added oldstyle option. 2017-05-23 11:28:56 -04:00
Eric S. Raymond
f89f63c6d1 Fix capitalization glitches. 2017-05-23 09:18:28 -04:00
Eric S. Raymond
943b3a62e6 Add -l option to enable command logging. 2017-05-23 08:57:35 -04:00
Eric S. Raymond
040f19adde Fix strange inside-out organization of the input routines.
Seems to have nbben a result of FORTRAN not having anything like a
stream object that can be passed around.

A step towards logging and log replay.
2017-05-22 21:26:14 -04:00
Eric S. Raymond
01b2c05cbb More magic-number elimination. 2017-05-22 20:51:55 -04:00
Eric S. Raymond
18767d52dd Fix up case on all comments to make them more readable. No code changes.
The all-capsing was a FORTRAN remnant.Also, we change a few FORTRANisms
so they are less confusing in this C context; ".TRUE." and ".FALSE." become
"true" and "false", "MOD" is mapped to % in places tha t are like C expressions
and (usually) "modulo" in places that aren't.
2017-05-21 13:12:24 -04:00
Eric S. Raymond
17ad4891ee More boolification.
Constants and formals have been converted, but not globals yet.
2017-05-18 17:28:18 -04:00