Simplified the logic for refeshing starcharts.
authorEric S. Raymond <esr@thyrsus.com>
Sat, 12 Feb 2005 04:33:52 +0000 (04:33 +0000)
committerEric S. Raymond <esr@thyrsus.com>
Sat, 12 Feb 2005 04:33:52 +0000 (04:33 +0000)
events.c
moving.c
reports.c
setup.c
sst.c
sst.h

index 2935404971853361eb375ce2f3c12a16b31673d2..d734cce5c79111967e726c376632e62c1d49bc45 100644 (file)
--- a/events.c
+++ b/events.c
@@ -50,8 +50,7 @@ void events(void)
                game.damage[l] -= (game.damage[l]-repair > 0.0 ? repair : game.damage[l]);
        /* If radio repaired, update star chart and attack reports */
        if (radio_was_broken && game.damage[DRADIO] == 0.0) {
-           stdamtim = FOREVER;
-           prout("Lt. Uhura- \"Captain, the sub-space radio is working and");
+1          prout("Lt. Uhura- \"Captain, the sub-space radio is working and");
            prout("   surveillance reports are coming in.");
            skip(1);
            if (iseenit==0) {
index 31374c2ebd4bdd82c85e6ebfc9617b2e7736d07e..7dee9e5f8089b3f521b8ec54c6751f9b5c679678 100644 (file)
--- a/moving.c
+++ b/moving.c
@@ -233,7 +233,7 @@ void dock(int l)
     shield = inshld;
     torps = intorps;
     lsupres = inlsr;
-    if (stdamtim != FOREVER &&
+    if (game.damage[DRADIO] == 0.0 &&
        (game.future[FCDBAS] < FOREVER || isatb == 1) && iseenit == 0) {
        /* get attack report from base */
        prout("Lt. Uhura- \"Captain, an important message from the starbase:\"");
index 29bcba5d061c865e26a101e210a4bb473b3b3eea..d4b1f63c4f4c40944a7e15f89b203102ddda1e0c 100644 (file)
--- a/reports.c
+++ b/reports.c
@@ -175,7 +175,7 @@ void rechart(void)
 /* update the chart in the Enterprise's computer from galaxy data */
 {
     int i, j;
-    stdamtim = game.state.date;
+    lastchart = game.state.date;
     for_quadrants(i)
        for_quadrants(j) 
            if (game.state.galaxy[i][j].charted) {
@@ -190,23 +190,19 @@ void chart(int nn)
     int i,j;
     char *cp;
     chew();
-    if (stdamtim != FOREVER && stdamtim != game.state.date && condit == IHDOCKED) {
+
+    if (game.damage[DRADIO] == 0.0)
+       rechart();
+
+    if (lastchart < game.state.date && condit == IHDOCKED) {
        proutn("Spock-  \"I revised the Star Chart from the starbase's records.\"\n\r");
-    }
-    if (nn == 0) proutn("       STAR CHART FOR THE KNOWN GALAXY\n\r");
-    if (stdamtim != FOREVER) {
-       if (condit == IHDOCKED) {
-           /* We are docked, so restore chart from base information */
-           rechart();
-       }
-       else if (game.state.date-stdamtim) {
-           prout("(Last surveillance update %d stardates ago).",
-                  (int)(game.state.date-stdamtim));
-       }
-    }
-    else if (game.damage[DRADIO] == 0.0)
        rechart();
+    }
 
+    if (nn == 0) proutn("       STAR CHART FOR THE KNOWN GALAXY\n\r");
+    if (game.state.date > lastchart)
+       prout("(Last surveillance update %d stardates ago).",
+             (int)(game.state.date-lastchart));
     prout("      1    2    3    4    5    6    7    8");
     for_quadrants(i) {
        proutn("%d |", i);
diff --git a/setup.c b/setup.c
index 496341375e552e9f09dd6a8351d8bcbfa1e3184f..d729c615576ba411ca1d8dd6a0cbd15df19780ab 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -242,7 +242,7 @@ void setup(int needprompt)
     game.future[FSCDBAS] = FOREVER;
     game.future[FDSPROB] = FOREVER;
     // Starchart is functional but we've never seen it
-    stdamtim = FOREVER;
+    lastchart = FOREVER;
     // Put stars in the galaxy
     instar = 0;
     for_quadrants(i)
diff --git a/sst.c b/sst.c
index 87595a694e8c7670e7e6a82203cec54e10f66abe..5fddb15ee24e25cafb1321041dce3eef7eaf8f6b 100644 (file)
--- a/sst.c
+++ b/sst.c
@@ -751,7 +751,6 @@ void debugme(void)
        for (i=0; i < NDEVICES; i++) 
            if (game.damage[i] > 0.0) 
                game.damage[i] = 0.0;
-       stdamtim = FOREVER;
     }
     proutn("Toggle idebug? ");
     if (ja() != 0) {
@@ -770,8 +769,6 @@ void debugme(void)
            key = scan();
            if (key == IHALPHA &&  isit("y")) {
                game.damage[i] = 10.0;
-               if (i == DRADIO) 
-                   stdamtim = game.state.date;
            }
        }
     }
diff --git a/sst.h b/sst.h
index f514d5cb0541d2ad4a2920b7027713123863d7dc..cb20407d46c54ec4984c0daa9a06f72291b90631 100644 (file)
--- a/sst.h
+++ b/sst.h
@@ -233,7 +233,7 @@ EXTERN struct {
        docfac,
        resting,
        damfac,
-       stdamtim,
+       lastchart,
        cryprob,
        probex,
        probey,
@@ -243,88 +243,88 @@ EXTERN struct {
 } game;
 
 #define inkling game.inkling           // Initial number of klingons
-#define inbase game.inbase                     // Initial number of bases
-#define incom game.incom                       // Initian number of commanders
-#define instar game.instar                     // Initial stars
+#define inbase game.inbase             // Initial number of bases
+#define incom game.incom               // Initian number of commanders
+#define instar game.instar             // Initial stars
 #define intorps game.intorps           // Initial/Max torpedoes
-#define condit game.condit                     // Condition (red, yellow, green docked)
-#define torps game.torps                       // number of torpedoes
-#define ship game.ship                         // Ship type -- 'E' is Enterprise
-#define quadx game.quadx                       // where we are
-#define quady game.quady                       //
-#define sectx game.sectx                       // where we are
-#define secty game.secty                       //
-#define length game.length                     // length of game
-#define skill game.skill                       // skill level
-#define basex game.basex                       // position of base in current quad
-#define basey game.basey                       //
-#define klhere game.klhere                     // klingons here
+#define condit game.condit             // Condition (red/yellow/green/docked)
+#define torps game.torps               // number of torpedoes
+#define ship game.ship                 // Ship type -- 'E' is Enterprise
+#define quadx game.quadx               // where we are
+#define quady game.quady               //
+#define sectx game.sectx               // where we are
+#define secty game.secty               //
+#define length game.length             // length of game
+#define skill game.skill               // skill level
+#define basex game.basex               // position of base in current quad
+#define basey game.basey               //
+#define klhere game.klhere             // klingons here
 #define comhere game.comhere           // commanders here
-#define casual game.casual                     // causalties
-#define nhelp game.nhelp                       // calls for help
-#define nkinks game.nkinks                     //
-#define ididit game.ididit                     // Action taken -- allows enemy to attack
+#define casual game.casual             // causalties
+#define nhelp game.nhelp               // calls for help
+#define nkinks game.nkinks             //
+#define ididit game.ididit             // Action taken -- allows enemy to attack
 #define gamewon game.gamewon           // Finished!
-#define alive game.alive                       // We are alive (not killed)
-#define justin game.justin                     // just entered quadrant
+#define alive game.alive               // We are alive (not killed)
+#define justin game.justin             // just entered quadrant
 #define alldone game.alldone           // game is now finished
 #define shldchg game.shldchg           // shield is changing (affects efficiency)
-#define plnetx game.plnetx                     // location of planet in quadrant
-#define plnety game.plnety                     //
+#define plnetx game.plnetx             // location of planet in quadrant
+#define plnety game.plnety             //
 #define inorbit game.inorbit           // orbiting
-#define landed game.landed                     // party on planet (1), on ship (-1)
-#define iplnet game.iplnet                     // planet # in quadrant
-#define imine game.imine                       // mining
-#define inplan game.inplan                     // initial planets
+#define landed game.landed             // party on planet (1), on ship (-1)
+#define iplnet game.iplnet             // planet # in quadrant
+#define imine game.imine               // mining
+#define inplan game.inplan             // initial planets
 #define nenhere game.nenhere           // Number of enemies in quadrant
-#define ishere game.ishere                     // Super-commander in quandrant
-#define neutz game.neutz                       // Romulan Neutral Zone
-#define irhere game.irhere                     // Romulans in quadrant
-#define icraft game.icraft                     // Kirk in Galileo
+#define ishere game.ishere             // Super-commander in quandrant
+#define neutz game.neutz               // Romulan Neutral Zone
+#define irhere game.irhere             // Romulans in quadrant
+#define icraft game.icraft             // Kirk in Galileo
 #define ientesc game.ientesc           // Attempted escape from supercommander
 #define iscraft game.iscraft           // =1 if craft on ship, -1 if removed from game
-#define isatb game.isatb                       // =1 if SuperCommander is attacking base
-#define iscate game.iscate                     // Super Commander is here
+#define isatb game.isatb               // =1 if SuperCommander is attacking base
+#define iscate game.iscate             // Super Commander is here
 #ifdef DEBUG
-#define idebug game.idebug                     // Debug mode
+#define idebug game.idebug             // Debug mode
 #endif
-#define iattak game.iattak                     // attack recursion elimination (was cracks[4])
+#define iattak game.iattak             // attack recursion elimination (was cracks[4])
 #define icrystl game.icrystl           // dilithium crystals aboard
-#define tourn game.tourn                       // Tournament number
-#define thawed game.thawed                     // Thawed game
-#define batx game.batx                         // Base coordinates being attacked
-#define baty game.baty                         //
-#define ithere game.ithere                     // Tholean is here 
-#define ithx game.ithx                         // coordinates of tholean
+#define tourn game.tourn               // Tournament number
+#define thawed game.thawed             // Thawed game
+#define batx game.batx                 // Base coordinates being attacked
+#define baty game.baty                 //
+#define ithere game.ithere             // Tholean is here 
+#define ithx game.ithx                 // coordinates of tholean
 #define ithy game.ithy
 #define iseenit game.iseenit           // Seen base attack report
 #define inresor game.inresor           // initial resources
-#define intime game.intime                     // initial time
-#define inenrg game.inenrg                     // Initial/Max Energy
-#define inshld game.inshld                     // Initial/Max Shield
-#define inlsr game.inlsr                       // initial life support resources
-#define indate game.indate                     // Initial date
-#define energy game.energy                     // Energy level
-#define shield game.shield                     // Shield level
-#define shldup game.shldup                     // Shields are up
+#define intime game.intime             // initial time
+#define inenrg game.inenrg             // Initial/Max Energy
+#define inshld game.inshld             // Initial/Max Shield
+#define inlsr game.inlsr               // initial life support resources
+#define indate game.indate             // Initial date
+#define energy game.energy             // Energy level
+#define shield game.shield             // Shield level
+#define shldup game.shldup             // Shields are up
 #define warpfac game.warpfac           // Warp speed
-#define wfacsq game.wfacsq                     // squared warp factor
+#define wfacsq game.wfacsq             // squared warp factor
 #define lsupres game.lsupres           // life support reserves
-#define dist game.dist                         // movement distance
-#define direc game.direc                       // movement direction
-#define Time game.Time                         // time taken by current operation
-#define docfac game.docfac                     // repair factor when docking (constant?)
+#define dist game.dist                 // movement distance
+#define direc game.direc               // movement direction
+#define Time game.Time                 // time taken by current operation
+#define docfac game.docfac             // repair factor when docking (constant?)
 #define resting game.resting           // rest time
-#define damfac game.damfac                     // damage factor
-#define stdamtim game.stdamtim         // time that star chart was damaged
+#define damfac game.damfac             // damage factor
+#define lastchart game.lastchart       // time star chart was last updated
 #define cryprob game.cryprob           // probability that crystal will work
-#define probex game.probex                     // location of probe
+#define probex game.probex             // location of probe
 #define probey game.probey
 #define probecx game.probecx           // current probe quadrant
 #define probecy game.probecy   
 #define probeinx game.probeinx         // Probe x,y increment
 #define probeiny game.probeiny         
-#define proben game.proben                     // number of moves for probe
+#define proben game.proben             // number of moves for probe
 #define isarmed game.isarmed           // Probe is armed
 #define nprobes game.nprobes           // number of probes available