Change the condition field from an uint with #defines to an enum.
[super-star-trek.git] / src / events.c
index d4eac3f688803d965e05a1c123bbbe3629b82046..466867c83e511076aeb7b649a20f4714a1d9048e 100644 (file)
@@ -60,9 +60,9 @@ static bool cancelrest(void)
 void events(void) 
 /* run through the event queue looking for things to do */
 {
-    int istract=0, evcode, i=0, j, k, l;
+    int evcode, i=0, j, k, l;
     double fintim = game.state.date + game.optime, datemin, xtime, repair, yank=0;
-    bool radio_was_broken, ictbeam = false, ipage = false;
+    bool radio_was_broken, ictbeam = false, ipage = false, istract = false;
     struct quadrant *pdest, *q;
     coord w, hold;
     event *ev, *ev2;
@@ -93,6 +93,7 @@ void events(void)
 
     radio_was_broken = damaged(DRADIO);
 
+    hold.x = hold.y = 0;
     for (;;) {
        /* Select earliest extraneous event, evcode==0 if no events */
        evcode = FSPY;
@@ -120,7 +121,7 @@ void events(void)
            return;
        }
        /* Is life support adequate? */
-       if (damaged(DLIFSUP) && game.condit != IHDOCKED) {
+       if (damaged(DLIFSUP) && game.condition != docked) {
            if (game.lsupres < xtime && game.damage[DLIFSUP] > game.lsupres) {
                finish(FLIFESUP);
                return;
@@ -130,7 +131,7 @@ void events(void)
        }
        /* Fix devices */
        repair = xtime;
-       if (game.condit == IHDOCKED) repair /= game.docfac;
+       if (game.condition == docked) repair /= game.docfac;
        /* Don't fix Deathray here */
        for (l=0; l<NDEVICES; l++)
            if (game.damage[l] > 0.0 && l != DDRAY)
@@ -140,9 +141,9 @@ void events(void)
            prout(_("Lt. Uhura- \"Captain, the sub-space radio is working and"));
            prout(_("   surveillance reports are coming in."));
            skip(1);
-           if (game.iseenit==0) {
+           if (!game.iseenit) {
                attakreport(false);
-               game.iseenit = 1;
+               game.iseenit = true;
            }
            rechart();
            prout(_("   The star chart is now up to date.\""));
@@ -160,8 +161,8 @@ void events(void)
            break;
        case FSPY: /* Check with spy to see if S.C. should tractor beam */
            if (game.state.nscrem == 0 ||
-               ictbeam+istract > 0 ||
-               game.condit==IHDOCKED || game.isatb==1 || game.iscate==1) return;
+               ictbeam || istract ||
+               game.condition==docked || game.isatb==1 || game.iscate==1) return;
            if (game.ientesc ||
                (game.energy < 2000 && game.torps < 4 && game.shield < 1250) ||
                (damaged(DPHASER) && (damaged(DPHOTON) || game.torps < 4)) ||
@@ -169,8 +170,8 @@ void events(void)
                 (game.energy < 2500 || damaged(DPHASER)) &&
                 (game.torps < 5 || damaged(DPHOTON)))) {
                /* Tractor-beam her! */
-               istract=1;
-               yank = square(game.state.kscmdr.x-game.quadrant.x) + square(game.state.kscmdr.y-game.quadrant.y);
+               istract = true;
+               yank = distance(game.state.kscmdr, game.quadrant);
                /********* fall through to FTBEAM code ***********/
            }
            else return;
@@ -182,7 +183,7 @@ void events(void)
                }
                i = Rand()*game.state.remcom+1.0;
                yank = square(game.state.kcmdr[i].x-game.quadrant.x) + square(game.state.kcmdr[i].y-game.quadrant.y);
-               if (istract || game.condit == IHDOCKED || yank == 0) {
+               if (istract || game.condition == docked || yank == 0) {
                    /* Drats! Have to reschedule */
                    schedule(FTBEAM, 
                             game.optime + expran(1.5*game.intime/game.state.remcom));
@@ -202,7 +203,7 @@ void events(void)
            /* If Kirk & Co. screwing around on planet, handle */
            atover(true); /* atover(true) is Grab */
            if (game.alldone) return;
-           if (game.icraft == 1) { /* Caught in Galileo? */
+           if (game.icraft) { /* Caught in Galileo? */
                finish(FSTRACTOR);
                return;
            }
@@ -223,7 +224,7 @@ void events(void)
                game.quadrant = game.state.kscmdr;
            else
                game.quadrant = game.state.kcmdr[i];
-           iran(QUADSIZE, &game.sector.x, &game.sector.y);
+           game.sector = iran(QUADSIZE);
            crmshp();
            proutn(_(" is pulled to "));
            proutn(cramlc(quadrant, game.quadrant));
@@ -282,10 +283,10 @@ void events(void)
            if (game.isatb) /* extra time if SC already attacking */
                postpone(FCDBAS, scheduled(FSCDBAS)-game.state.date);
            game.future[FBATTAK].date = game.future[FCDBAS].date + expran(0.3*game.intime);
-           game.iseenit = 0;
-           if (!damaged(DRADIO) && game.condit != IHDOCKED
+           game.iseenit = false;
+           if (!damaged(DRADIO) && game.condition != docked
                break; /* No warning :-( */
-           game.iseenit = 1;
+           game.iseenit = true;
            if (!ipage) pause_game(1);
            ipage = true;
            skip(1);
@@ -332,7 +333,7 @@ void events(void)
                prout(_("Spock-  \"Captain, I believe the starbase has been destroyed.\""));
            }
            else if (game.state.rembase != 1 &&
-                    (!damaged(DRADIO) || game.condit == IHDOCKED)) {
+                    (!damaged(DRADIO) || game.condition == docked)) {
                /* Get word via subspace radio */
                if (!ipage) pause_game(1);
                ipage = true;
@@ -363,9 +364,9 @@ void events(void)
            break;
        case FSCMOVE: /* Supercommander moves */
            schedule(FSCMOVE, 0.2777);
-           if (game.ientesc+istract==0 &&
-               game.isatb != 1 &&
-               (game.iscate != 1 || !game.justin)) scom(&ipage);
+           if (!game.ientesc && !istract && game.isatb != 1 &&
+                       (game.iscate != 1 || !game.justin)) 
+               scom(&ipage);
            break;
        case FDSPROB: /* Move deep space probe */
            schedule(FDSPROB, 0.01);
@@ -379,7 +380,7 @@ void events(void)
                if (!VALID_QUADRANT(i, j) ||
                    game.state.galaxy[game.probec.x][game.probec.y].supernova) {
                    // Left galaxy or ran into supernova
-                   if (!damaged(DRADIO) || game.condit == IHDOCKED) {
+                   if (!damaged(DRADIO) || game.condition == docked) {
                        if (ipage==0) pause_game(1);
                        ipage = 1;
                        skip(1);
@@ -393,7 +394,7 @@ void events(void)
                    unschedule(FDSPROB);
                    break;
                }
-               if (!damaged(DRADIO) || game.condit == IHDOCKED) {
+               if (!damaged(DRADIO) || game.condition == docked) {
                    if (ipage==0) pause_game(1);
                    ipage = 1;
                    skip(1);
@@ -405,7 +406,7 @@ void events(void)
            pdest = &game.state.galaxy[game.probec.x][game.probec.y];
            /* Update star chart if Radio is working or have access to
               radio. */
-           if (!damaged(DRADIO) || game.condit == IHDOCKED) {
+           if (!damaged(DRADIO) || game.condition == docked) {
                struct page *chp = &game.state.chart[game.probec.x][game.probec.y];
 
                chp->klingons = pdest->klingons;
@@ -431,7 +432,7 @@ void events(void)
                   which has some stars which are inhabited and
                   not already under attack, which is not
                   supernova'ed, and which has some Klingons in it */
-               iran(GALSIZE, &w.x, &w.y);
+               w = iran(GALSIZE);
                q = &game.state.galaxy[w.x][w.y];
            } while (--i &&
                     (same(game.quadrant, w) || q->planet == NOPLANET ||
@@ -449,7 +450,7 @@ void events(void)
            q->status = distressed;
 
            /* tell the captain about it if we can */
-           if (!damaged(DRADIO) || game.condit == IHDOCKED)
+           if (!damaged(DRADIO) || game.condition == docked)
            {
                prout("Uhura- Captain, %s in %s reports it is under attack",
                      systemname(q->planet), cramlc(quadrant, w));
@@ -473,7 +474,7 @@ void events(void)
            ev2->quadrant = ev->quadrant;
 
            /* report the disaster if we can */
-           if (!damaged(DRADIO) || game.condit == IHDOCKED)
+           if (!damaged(DRADIO) || game.condition == docked)
            {
                prout("Uhura- We've lost contact with starsystem %s",
                      systemname(q->planet));
@@ -521,12 +522,12 @@ void events(void)
            game.state.remkl++;
            q->klingons++;
            if (same(game.quadrant, w))
-               newkling(++game.klhere, &hold);
+               newkling(++game.klhere);
 
            /* recompute time left */
            game.state.remtime = game.state.remres/(game.state.remkl+4*game.state.remcom);
            /* report the disaster if we can */
-           if (!damaged(DRADIO) || game.condit == IHDOCKED)
+           if (!damaged(DRADIO) || game.condition == docked)
            {
                if (same(game.quadrant, w)) {
                    prout("Spock- sensors indicate the Klingons have");
@@ -591,7 +592,7 @@ void wait(void)
        if (game.alldone) return;
        delay -= temp;
        /* Repair Deathray if long rest at starbase */
-       if (origTime-delay >= 9.99 && game.condit == IHDOCKED)
+       if (origTime-delay >= 9.99 && game.condition == docked)
            game.damage[DDRAY] = 0.0;
     } while 
        // leave if quadrant supernovas
@@ -713,7 +714,7 @@ void nova(coord nov)
                        kount++;
                        break;
                    case IHK: /* kill klingon */
-                       deadkl(scratch,iquad, scratch.x, scratch.y);
+                       deadkl(scratch,iquad, scratch);
                        break;
                    case IHC: /* Damage/destroy big enemies */
                    case IHS:
@@ -722,7 +723,7 @@ void nova(coord nov)
                            if (same(game.ks[ll], scratch)) break;
                        game.kpower[ll] -= 800.0; /* If firepower is lost, die */
                        if (game.kpower[ll] <= 0.0) {
-                           deadkl(scratch, iquad, scratch.x, scratch.y);
+                           deadkl(scratch, iquad, scratch);
                            break;
                        }
                        newc.x = scratch.x + scratch.x - hits[mm][1];
@@ -739,7 +740,7 @@ void nova(coord nov)
                            proutn(_(", blasted into "));
                            crmena(false, IHBLANK, sector, newc);
                            skip(1);
-                           deadkl(scratch, iquad, newc.x, newc.y);
+                           deadkl(scratch, iquad, newc);
                            break;
                        }
                        if (iquad1 != IHDOT) {
@@ -752,8 +753,7 @@ void nova(coord nov)
                        game.quad[scratch.x][scratch.y] = IHDOT;
                        game.quad[newc.x][newc.y] = iquad;
                        game.ks[ll] = newc;
-                       game.kavgd[ll] = sqrt(square(game.sector.x-newc.x)+square(game.sector.y-newc.y));
-                       game.kdist[ll] = game.kavgd[ll];
+                       game.kdist[ll] = game.kavgd[ll] = distance(game.sector, newc);
                        skip(1);
                        break;
                    }
@@ -819,7 +819,7 @@ void snova(bool induced, coord *w)
 
     if (!same(nq, game.quadrant) || game.justin) {
        /* it isn't here, or we just entered (treat as enroute) */
-       if (!damaged(DRADIO) || game.condit == IHDOCKED) {
+       if (!damaged(DRADIO) || game.condition == docked) {
            skip(1);
            prout(_("Message from Starfleet Command       Stardate %.2f"), game.state.date);
            prout(_("     Supernova in %s; caution advised."),
@@ -849,7 +849,7 @@ void snova(bool induced, coord *w)
            prouts("***************");
            skip(1);
            stars();
-           game.alldone=1;
+           game.alldone = true;
        }
     }
 
@@ -906,7 +906,7 @@ void snova(bool induced, coord *w)
        game.state.nplankl += npdead;
     }
     /* mark supernova in galaxy and in star chart */
-    if (same(game.quadrant, nq) || !damaged(DRADIO) || game.condit == IHDOCKED)
+    if (same(game.quadrant, nq) || !damaged(DRADIO) || game.condition == docked)
        game.state.galaxy[nq.x][nq.y].supernova = true;
     /* If supernova destroys last Klingons give special message */
     if (KLINGREM==0 && !same(nq, game.quadrant)) {