Next step towards structure merge.
[super-star-trek.git] / setup.c
diff --git a/setup.c b/setup.c
index 8cd1536bc95af5709bbe35e1d035ed1a0b0e5831..6484243bb9879f24d3faac343f9eb8c3124814b6 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -36,7 +36,7 @@ void freeze(int boss) {
                skip(1);\r
                return;\r
        }\r
-       fwrite(&d, sizeof(d), 1, fp);\r
+       fwrite(&state, sizeof(state), 1, fp);\r
        fwrite(&snapsht, sizeof(snapsht), 1, fp);\r
        fwrite(quad, sizeof(quad), 1, fp);\r
        fwrite(kx, sizeof(kx), 1, fp);\r
@@ -47,7 +47,7 @@ void freeze(int boss) {
        fwrite(kavgd, sizeof(kavgd), 1, fp);\r
        fwrite(damage, sizeof(damage), 1, fp);\r
        fwrite(future, sizeof(future), 1, fp);\r
-       fwrite(&game, sizeof(game), 1, fp);\r
+       fwrite(&frozen, sizeof(frozen), 1, fp);\r
        fwrite(passwd, sizeof(passwd), 1, fp);\r
 \r
        fclose(fp);\r
@@ -80,7 +80,7 @@ void thaw(void) {
                skip(1);\r
                return;\r
        }\r
-       fread(&d, sizeof(d), 1, fp);\r
+       fread(&state, sizeof(state), 1, fp);\r
        fread(&snapsht, sizeof(snapsht), 1, fp);\r
        fread(quad, sizeof(quad), 1, fp);\r
        fread(kx, sizeof(kx), 1, fp);\r
@@ -91,7 +91,7 @@ void thaw(void) {
        fread(kavgd, sizeof(kavgd), 1, fp);\r
        fread(damage, sizeof(damage), 1, fp);\r
        fread(future, sizeof(future), 1, fp);\r
-       fread(&game, sizeof(game), 1, fp);\r
+       fread(&frozen, sizeof(frozen), 1, fp);\r
        fread(passwd, sizeof(passwd), 1, fp);\r
 \r
        fclose(fp);\r
@@ -140,7 +140,7 @@ void abandn(void) {
                prout("Captain and crew escape in shuttle craft.");\r
                prout("Remainder of ship's complement beam down");\r
                prout("to nearest habitable planet.");\r
-               if (d.rembase==0) {\r
+               if (state.rembase==0) {\r
                        /* Ops! no place to go... */\r
                        finish(FABANDN);\r
                        return;\r
@@ -151,11 +151,11 @@ void abandn(void) {
                nprobes = 0; /* No probes */\r
                prout("You are captured by Klingons and released to");\r
                prout("the Federation in a prisoner-of-war exchange.");\r
-               nb = Rand()*d.rembase+1;\r
+               nb = Rand()*state.rembase+1;\r
                /* Set up quadrant and position FQ adjacient to base */\r
-               if (quadx!=d.baseqx[nb] || quady!=d.baseqy[nb]) {\r
-                       quadx = d.baseqx[nb];\r
-                       quady = d.baseqy[nb];\r
+               if (quadx!=state.baseqx[nb] || quady!=state.baseqy[nb]) {\r
+                       quadx = state.baseqx[nb];\r
+                       quady = state.baseqy[nb];\r
                        sectx = secty = 5;\r
                        newqad(1);\r
                }\r
@@ -222,22 +222,22 @@ void setup(void) {
        for (i=0; i <= ndevice; i++) damage[i] = 0.0;\r
        // Set up assorted game parameters\r
        batx = baty = 0;\r
-       d.date = indate = 100.0*(int)(31.0*Rand()+20.0);\r
-       d.killk = d.killc = nkinks = nhelp = resting = casual = d.nromkl = 0;\r
-       isatb = iscate = imine = icrystl = icraft = d.nsckill = d.nplankl = 0;\r
+       state.date = indate = 100.0*(int)(31.0*Rand()+20.0);\r
+       state.killk = state.killc = nkinks = nhelp = resting = casual = state.nromkl = 0;\r
+       isatb = iscate = imine = icrystl = icraft = state.nsckill = state.nplankl = 0;\r
        iscraft = 1;\r
        landed = -1;\r
        alive = 1;\r
        docfac = 0.25;\r
        for (i = 1; i <= 8; i++)\r
-               for (j = 1; j <= 8; j++) d.newstuf[i][j] = starch[i][j] = 0;\r
+               for (j = 1; j <= 8; j++) state.newstuf[i][j] = starch[i][j] = 0;\r
        // Initialize times for extraneous events\r
-       future[FSNOVA] = d.date + expran(0.5 * intime);\r
-       future[FTBEAM] = d.date + expran(1.5 * (intime / d.remcom));\r
-       future[FSNAP] = d.date + 1.0 + Rand(); // Force an early snapshot\r
-       future[FBATTAK] = d.date + expran(0.3*intime);\r
+       future[FSNOVA] = state.date + expran(0.5 * intime);\r
+       future[FTBEAM] = state.date + expran(1.5 * (intime / state.remcom));\r
+       future[FSNAP] = state.date + 1.0 + Rand(); // Force an early snapshot\r
+       future[FBATTAK] = state.date + expran(0.3*intime);\r
        future[FCDBAS] = 1e30;\r
-       future[FSCMOVE] = d.nscrem ? d.date+0.2777 : 1e30;\r
+       future[FSCMOVE] = state.nscrem ? state.date+0.2777 : 1e30;\r
        future[FSCDBAS] = 1e30;\r
        future[FDSPROB] = 1e30;\r
        // Starchart is functional\r
@@ -248,18 +248,18 @@ void setup(void) {
                for (j=1; j<=8; j++) {\r
                        int k = Rand()*9.0 + 1.0;\r
                        instar += k;\r
-                       d.galaxy[i][j] = k;\r
+                       state.galaxy[i][j] = k;\r
                }\r
        // Locate star bases in galaxy\r
        for (i = 1; i <= inbase; i++) {\r
                int contflag;\r
                do {\r
                        do iran8(&ix, &iy);\r
-                       while (d.galaxy[ix][iy] >= 10);\r
+                       while (state.galaxy[ix][iy] >= 10);\r
                        contflag = FALSE;\r
                        for (j = i-1; j > 0; j--) {\r
                                /* Improved placement algorithm to spread out bases */\r
-                               double distq = square(ix-d.baseqx[j]) + square(iy-d.baseqy[j]);\r
+                               double distq = square(ix-state.baseqx[j]) + square(iy-state.baseqy[j]);\r
                                if (distq < 6.0*(6-inbase) && Rand() < 0.75) {\r
                                        contflag = TRUE;\r
 #ifdef DEBUG\r
@@ -275,13 +275,13 @@ void setup(void) {
                        }\r
                } while (contflag);\r
                        \r
-               d.baseqx[i] = ix;\r
-               d.baseqy[i] = iy;\r
+               state.baseqx[i] = ix;\r
+               state.baseqy[i] = iy;\r
                starch[ix][iy] = -1;\r
-               d.galaxy[ix][iy] += 10;\r
+               state.galaxy[ix][iy] += 10;\r
        }\r
        // Position ordinary Klingon Battle Cruisers\r
-       krem = inkling - incom - d.nscrem;\r
+       krem = inkling - incom - state.nscrem;\r
        klumper = 0.25*skill*(9.0-length)+1.0;\r
        if (klumper > 9) klumper = 9; // Can't have more than 9 in quadrant\r
        do {\r
@@ -291,8 +291,8 @@ void setup(void) {
                krem -= klump;\r
                klump *= 100;\r
                do iran8(&ix, &iy);\r
-               while (d.galaxy[ix][iy] + klump >= 1000);\r
-               d.galaxy[ix][iy] += klump;\r
+               while (state.galaxy[ix][iy] + klump >= 1000);\r
+               state.galaxy[ix][iy] += klump;\r
        } while (krem > 0);\r
        // Position Klingon Commander Ships\r
 #ifdef DEBUG\r
@@ -303,47 +303,47 @@ void setup(void) {
                        do { /* IF debugging, put commanders by bases, always! */\r
 #ifdef DEBUG\r
                                if (idebug && klumper <= inbase) {\r
-                                       ix = d.baseqx[klumper];\r
-                                       iy = d.baseqy[klumper];\r
+                                       ix = state.baseqx[klumper];\r
+                                       iy = state.baseqy[klumper];\r
                                        klumper++;\r
                                }\r
                                else\r
 #endif\r
                                        iran8(&ix, &iy);\r
                        }\r
-                       while ((d.galaxy[ix][iy] < 99 && Rand() < 0.75)||\r
-                                  d.galaxy[ix][iy]>899);\r
+                       while ((state.galaxy[ix][iy] < 99 && Rand() < 0.75)||\r
+                                  state.galaxy[ix][iy]>899);\r
                        // check for duplicate\r
                        for (j = 1; j < i; j++)\r
-                               if (d.cx[j]==ix && d.cy[j]==iy) break;\r
+                               if (state.cx[j]==ix && state.cy[j]==iy) break;\r
                } while (j < i);\r
-               d.galaxy[ix][iy] += 100;\r
-               d.cx[i] = ix;\r
-               d.cy[i] = iy;\r
+               state.galaxy[ix][iy] += 100;\r
+               state.cx[i] = ix;\r
+               state.cy[i] = iy;\r
        }\r
        // Locate planets in galaxy\r
        for (i = 1; i <= inplan; i++) {\r
                do iran8(&ix, &iy);\r
-               while (d.newstuf[ix][iy] > 0);\r
-               d.newstuf[ix][iy] = 1;\r
-               d.plnets[i].x = ix;\r
-               d.plnets[i].y = iy;\r
-               d.plnets[i].pclass = Rand()*3.0 + 1.0; // Planet class M N or O\r
-               d.plnets[i].crystals = 1.5*Rand();              // 1 in 3 chance of crystals\r
-               d.plnets[i].known = 0;\r
+               while (state.newstuf[ix][iy] > 0);\r
+               state.newstuf[ix][iy] = 1;\r
+               state.plnets[i].x = ix;\r
+               state.plnets[i].y = iy;\r
+               state.plnets[i].pclass = Rand()*3.0 + 1.0; // Planet class M N or O\r
+               state.plnets[i].crystals = 1.5*Rand();          // 1 in 3 chance of crystals\r
+               state.plnets[i].known = 0;\r
        }\r
        // Locate Romulans\r
-       for (i = 1; i <= d.nromrem; i++) {\r
+       for (i = 1; i <= state.nromrem; i++) {\r
                iran8(&ix, &iy);\r
-               d.newstuf[ix][iy] += 10;\r
+               state.newstuf[ix][iy] += 10;\r
        }\r
        // Locate the Super Commander\r
-       if (d.nscrem > 0) {\r
+       if (state.nscrem > 0) {\r
                do iran8(&ix, &iy);\r
-               while (d.galaxy[ix][iy] >= 900);\r
-               d.isx = ix;\r
-               d.isy = iy;\r
-               d.galaxy[ix][iy] += 100;\r
+               while (state.galaxy[ix][iy] >= 900);\r
+               state.isx = ix;\r
+               state.isy = iy;\r
+               state.galaxy[ix][iy] += 100;\r
        }\r
        // Place thing (in tournament game, thingx == -1, don't want one!)\r
        if (Rand() < 0.1 && thingx != -1) {\r
@@ -355,11 +355,11 @@ void setup(void) {
 \r
 //     idate = date;\r
        skip(3);\r
-       d.snap = 0;\r
+       state.snap = 0;\r
                \r
        if (skill == 1) {\r
                printf("It is stardate %d. The Federation is being attacked by\n",\r
-                          (int)d.date);\r
+                          (int)state.date);\r
                printf("a deadly Klingon invasion force. As captain of the United\n"\r
                           "Starship U.S.S. Enterprise, it is your mission to seek out\n"\r
                           "and destroy this invasion force of %d battle cruisers.\n",\r
@@ -373,12 +373,12 @@ void setup(void) {
        else {\r
                printf("Stardate %d.\n\n"\r
                           "%d Klingons.\nAn unknown number of Romulans\n",\r
-                          (int)d.date, inkling);\r
-               if (d.nscrem) printf("and one (GULP) Super-Commander.\n");\r
+                          (int)state.date, inkling);\r
+               if (state.nscrem) printf("and one (GULP) Super-Commander.\n");\r
                printf("%d stardates\n%d starbases in  ",(int)intime, inbase);\r
        }\r
        for (i = 1; i <= inbase; i++) {\r
-               cramlc(0, d.baseqx[i], d.baseqy[i]);\r
+               cramlc(0, state.baseqx[i], state.baseqy[i]);\r
                if (i < inbase) proutn("  ");\r
        }\r
        skip(2);\r
@@ -388,7 +388,7 @@ void setup(void) {
        cramlc(2, sectx, secty);\r
        skip(2);\r
        prout("Good Luck!");\r
-       if (d.nscrem) proutn("  YOU'LL NEED IT.");\r
+       if (state.nscrem) proutn("  YOU'LL NEED IT.");\r
        skip(1);\r
        newqad(0);\r
        if (nenhere) shldup=1.0;\r
@@ -476,22 +476,22 @@ int choose(void) {
 \r
        // Use parameters to generate initial values of things\r
        damfac = 0.5 * skill;\r
-       d.rembase = 3.0*Rand()+2.0;\r
-       inbase = d.rembase;\r
+       state.rembase = 3.0*Rand()+2.0;\r
+       inbase = state.rembase;\r
        inplan = (PLNETMAX/2) + (PLNETMAX/2+1)*Rand();\r
-       d.nromrem = (2.0+Rand())*skill;\r
-       d.nscrem = (skill > 2? 1 : 0);\r
-       d.remtime = 7.0 * length;\r
-       intime = d.remtime;\r
-       d.remkl = 2.0*intime*((skill+1 - 2*Rand())*skill*0.1+.15);\r
-       inkling = d.remkl;\r
+       state.nromrem = (2.0+Rand())*skill;\r
+       state.nscrem = (skill > 2? 1 : 0);\r
+       state.remtime = 7.0 * length;\r
+       intime = state.remtime;\r
+       state.remkl = 2.0*intime*((skill+1 - 2*Rand())*skill*0.1+.15);\r
+       inkling = state.remkl;\r
        incom = skill + 0.0625*inkling*Rand();\r
-       d.remcom= min(10, incom);\r
-       incom = d.remcom;\r
-       d.remres = (inkling+4*incom)*intime;\r
-       inresor = d.remres;\r
+       state.remcom= min(10, incom);\r
+       incom = state.remcom;\r
+       state.remres = (inkling+4*incom)*intime;\r
+       inresor = state.remres;\r
        if (inkling > 50) {\r
-               inbase = (d.rembase += 1);\r
+               inbase = (state.rembase += 1);\r
        }\r
        return FALSE;\r
 }\r
@@ -505,14 +505,14 @@ void dropin(int iquad, int *ix, int *iy) {
 void newcnd(void) {\r
        condit = IHGREEN;\r
        if (energy < 1000.0) condit = IHYELLOW;\r
-       if (d.galaxy[quadx][quady] > 99 || d.newstuf[quadx][quady] > 9)\r
+       if (state.galaxy[quadx][quady] > 99 || state.newstuf[quadx][quady] > 9)\r
                condit = IHRED;\r
 }\r
 \r
 \r
 void newqad(int shutup) {\r
-       int quadnum = d.galaxy[quadx][quady];\r
-       int newnum = d.newstuf[quadx][quady];\r
+       int quadnum = state.galaxy[quadx][quady];\r
+       int newnum = state.newstuf[quadx][quady];\r
        int i, j, ix, iy, nplan;\r
 \r
        iattak = 1;\r
@@ -583,17 +583,17 @@ void newqad(int shutup) {
                        kpower[i] = Rand()*150.0 +300.0 +25.0*skill;\r
                }\r
                // If we need a commander, promote a Klingon\r
-               for (i = 1; i <= d.remcom ; i++) \r
-                       if (d.cx[i]==quadx && d.cy[i]==quady) break;\r
+               for (i = 1; i <= state.remcom ; i++) \r
+                       if (state.cx[i]==quadx && state.cy[i]==quady) break;\r
                        \r
-               if (i <= d.remcom) {\r
+               if (i <= state.remcom) {\r
                        quad[ix][iy] = IHC;\r
                        kpower[klhere] = 950.0+400.0*Rand()+50.0*skill;\r
                        comhere = 1;\r
                }\r
 \r
                // If we need a super-commander, promote a Klingon\r
-               if (quadx == d.isx && quady == d.isy) {\r
+               if (quadx == state.isx && quady == state.isy) {\r
                        quad[kx[1]][ky[1]] = IHS;\r
                        kpower[1] = 1175.0 + 400.0*Rand() + 125.0*skill;\r
                        iscate = 1;\r
@@ -618,7 +618,7 @@ void newqad(int shutup) {
        if (nplan) {\r
                // If quadrant needs a planet, put it in\r
                for (i=1; i <= inplan; i++)\r
-                       if (d.plnets[i].x == quadx && d.plnets[i].y == quady) break;\r
+                       if (state.plnets[i].x == quadx && state.plnets[i].y == quady) break;\r
                if (i <= inplan) {\r
                        iplnet = i;\r
                        dropin(IHP, &plnetx, &plnety);\r