1: /*
   2:  * Copyright (c) 1980 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  */
   6: 
   7: #ifndef lint
   8: static char sccsid[] = "@(#)srscan.c	5.1 (Berkeley) 1/29/86";
   9: #endif not lint
  10: 
  11: # include   "trek.h"
  12: # include   "getpar.h"
  13: 
  14: /*
  15: **  SHORT RANGE SENSOR SCAN
  16: **
  17: **	A short range scan is taken of the current quadrant.  If the
  18: **	flag 'f' is one, it is an "auto srscan", which is not done
  19: **	unless in 'fast' mode.  It does a status report and a srscan.
  20: **	If 'f' is -1, you get a status report only.  If it is zero,
  21: **	you get a srscan and an optional status report.  The status
  22: **	report is taken if you enter "srscan yes"; for all srscans
  23: **	thereafter you get a status report with your srscan until
  24: **	you type "srscan no".  It defaults to on.
  25: **
  26: **	The current quadrant is filled in on the computer chart.
  27: */
  28: 
  29: char    *Color[4] =
  30: {
  31:     "GREEN",
  32:     "DOCKED",
  33:     "YELLOW",
  34:     "RED"
  35: };
  36: 
  37: srscan(f)
  38: int f;
  39: {
  40:     register int        i, j;
  41:     register int        statinfo;
  42:     char            *s;
  43:     int         percent;
  44:     struct quad     *q;
  45:     extern struct cvntab    Skitab[];
  46:     extern struct cvntab    Lentab[];
  47:     struct cvntab       *p;
  48: 
  49:     if (f >= 0 && check_out(SRSCAN))
  50:     {
  51:         return;
  52:     }
  53:     if (f)
  54:         statinfo = 1;
  55:     else
  56:     {
  57:         if (!testnl())
  58:             Etc.statreport = getynpar("status report");
  59:         statinfo = Etc.statreport;
  60:     }
  61:     if (f > 0)
  62:     {
  63:         Etc.statreport = 1;
  64:         if (!Etc.fast)
  65:             return;
  66:     }
  67:     if (f >= 0)
  68:     {
  69:         printf("\nShort range sensor scan\n");
  70:         q = &Quad[Ship.quadx][Ship.quady];
  71:         q->scanned = q->klings * 100 + q->bases * 10 + q->stars;
  72:         printf("  ");
  73:         for (i = 0; i < NSECTS; i++)
  74:         {
  75:             printf("%d ", i);
  76:         }
  77:         printf("\n");
  78:     }
  79: 
  80:     for (i = 0; i < NSECTS; i++)
  81:     {
  82:         if (f >= 0)
  83:         {
  84:             printf("%d ", i);
  85:             for (j = 0; j < NSECTS; j++)
  86:                 printf("%c ", Sect[i][j]);
  87:             printf("%d", i);
  88:             if (statinfo)
  89:                 printf("   ");
  90:         }
  91:         if (statinfo)
  92:             switch (i)
  93:             {
  94:               case 0:
  95:                 printf("stardate      %.2f", Now.date);
  96:                 break;
  97:               case 1:
  98:                 printf("condition     %s", Color[Ship.cond]);
  99:                 if (Ship.cloaked)
 100:                     printf(", CLOAKED");
 101:                 break;
 102:               case 2:
 103:                 printf("position      %d,%d/%d,%d",Ship.quadx, Ship.quady, Ship.sectx, Ship.secty);
 104:                 break;
 105:               case 3:
 106:                 printf("warp factor   %.1f", Ship.warp);
 107:                 break;
 108:               case 4:
 109:                 printf("total energy  %d", Ship.energy);
 110:                 break;
 111:               case 5:
 112:                 printf("torpedoes     %d", Ship.torped);
 113:                 break;
 114:               case 6:
 115:                 s = "down";
 116:                 if (Ship.shldup)
 117:                     s = "up";
 118:                 if (damaged(SHIELD))
 119:                     s = "damaged";
 120:                 percent = 100.0 * Ship.shield / Param.shield;
 121:                 printf("shields       %s, %d%%", s, percent);
 122:                 break;
 123:               case 7:
 124:                 printf("Klingons left %d", Now.klings);
 125:                 break;
 126:               case 8:
 127:                 printf("time left     %.2f", Now.time);
 128:                 break;
 129:               case 9:
 130:                 printf("life support  ");
 131:                 if (damaged(LIFESUP))
 132:                 {
 133:                     printf("damaged, reserves = %.2f", Ship.reserves);
 134:                     break;
 135:                 }
 136:                 printf("active");
 137:                 break;
 138:             }
 139:         printf("\n");
 140:     }
 141:     if (f < 0)
 142:     {
 143:         printf("current crew  %d\n", Ship.crew);
 144:         printf("brig space    %d\n", Ship.brigfree);
 145:         printf("Klingon power %d\n", Param.klingpwr);
 146:         p = &Lentab[Game.length - 1];
 147:         if (Game.length > 2)
 148:             p--;
 149:         printf("Length, Skill %s%s, ", p->abrev, p->full);
 150:         p = &Skitab[Game.skill - 1];
 151:         printf("%s%s\n", p->abrev, p->full);
 152:         return;
 153:     }
 154:     printf("  ");
 155:     for (i = 0; i < NSECTS; i++)
 156:         printf("%d ", i);
 157:     printf("\n");
 158: 
 159:     if (q->qsystemname & Q_DISTRESSED)
 160:         printf("Distressed ");
 161:     if (q->qsystemname)
 162:         printf("Starsystem %s\n", systemname(q));
 163: }

Defined functions

srscan defined in line 37; used 4 times

Defined variables

Color defined in line 29; used 1 times
  • in line 98
sccsid defined in line 8; never used
Last modified: 1986-02-01
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2260
Valid CSS Valid XHTML 1.0 Strict