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.
This commit is contained in:
parent
dc9d9e467b
commit
42189d79d7
11 changed files with 260 additions and 231 deletions
18
misc.c
18
misc.c
|
@ -15,11 +15,11 @@ void fSPEAK(long N) {
|
|||
long BLANK, CASE, I, K, L, NEG, NPARMS, PARM, PRMTYP, STATE;
|
||||
|
||||
/* Print the message which starts at LINES(N). Precede it with a blank line
|
||||
* unless BLKLIN is false. */
|
||||
* unless game.blklin is false. */
|
||||
|
||||
|
||||
if(N == 0)return;
|
||||
BLANK=BLKLIN;
|
||||
BLANK=game.blklin;
|
||||
K=N;
|
||||
NPARMS=1;
|
||||
L10: L=IABS(LINES[K])-1;
|
||||
|
@ -182,11 +182,11 @@ long JUNK;
|
|||
* WORD2 (chars 6 thru 10 in WORD2X), else WORD2 is -1. */
|
||||
|
||||
|
||||
L10: if(BLKLIN)TYPE0();
|
||||
L10: if(game.blklin)TYPE0();
|
||||
MAPLIN(input);
|
||||
if(input == stdin && feof(stdin)) score(1);
|
||||
WORD1=GETTXT(true,true,true,0);
|
||||
if(BLKLIN && WORD1 < 0) goto L10;
|
||||
if(game.blklin && WORD1 < 0) goto L10;
|
||||
WORD1X=GETTXT(false,true,true,0);
|
||||
L12: JUNK=GETTXT(false,true,true,0);
|
||||
if(JUNK > 0) goto L12;
|
||||
|
@ -650,13 +650,13 @@ long TEMP;
|
|||
|
||||
/* Start toting an object, removing it from the list of things at its former
|
||||
* location. Incr holdng unless it was already being toted. If OBJECT>100
|
||||
* (moving "fixed" second loc), don't change PLACE or HOLDNG. */
|
||||
* (moving "fixed" second loc), don't change PLACE or game.holdng. */
|
||||
|
||||
|
||||
if(OBJECT > 100) goto L5;
|
||||
if(PLACE[OBJECT] == -1)return;
|
||||
PLACE[OBJECT]= -1;
|
||||
HOLDNG=HOLDNG+1;
|
||||
game.holdng=game.holdng+1;
|
||||
L5: if(ATLOC[WHERE] != OBJECT) goto L6;
|
||||
ATLOC[WHERE]=LINK[OBJECT];
|
||||
return;
|
||||
|
@ -676,11 +676,11 @@ void fDROP(long OBJECT, long WHERE) {
|
|||
;
|
||||
|
||||
/* Place an object at a given loc, prefixing it onto the ATLOC list. Decr
|
||||
* HOLDNG if the object was being toted. */
|
||||
* game.holdng if the object was being toted. */
|
||||
|
||||
|
||||
if(OBJECT > 100) goto L1;
|
||||
if(PLACE[OBJECT] == -1)HOLDNG=HOLDNG-1;
|
||||
if(PLACE[OBJECT] == -1)game.holdng=game.holdng-1;
|
||||
PLACE[OBJECT]=WHERE;
|
||||
goto L2;
|
||||
L1: {long x = OBJECT-100; FIXED[x]=WHERE;}
|
||||
|
@ -703,7 +703,7 @@ long ATDWRF, I;
|
|||
|
||||
|
||||
ATDWRF=0;
|
||||
if(DFLAG < 2)return(ATDWRF);
|
||||
if(game.dflag < 2)return(ATDWRF);
|
||||
ATDWRF= -1;
|
||||
for (I=1; I<=5; I++) {
|
||||
if(DLOC[I] == WHERE) goto L2;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue