(linenum→info "unix/slp.c:2238")

bsd-games/2.17/trek/srscan.c

    1: /*      $NetBSD: srscan.c,v 1.6 2003/08/07 09:37:54 agc Exp $        */
    2: 
    3: /*
    4:  * Copyright (c) 1980, 1993
    5:  *      The Regents of the University of California.  All rights reserved.
    6:  *
    7:  * Redistribution and use in source and binary forms, with or without
    8:  * modification, are permitted provided that the following conditions
    9:  * are met:
   10:  * 1. Redistributions of source code must retain the above copyright
   11:  *    notice, this list of conditions and the following disclaimer.
   12:  * 2. Redistributions in binary form must reproduce the above copyright
   13:  *    notice, this list of conditions and the following disclaimer in the
   14:  *    documentation and/or other materials provided with the distribution.
   15:  * 3. Neither the name of the University nor the names of its contributors
   16:  *    may be used to endorse or promote products derived from this software
   17:  *    without specific prior written permission.
   18:  *
   19:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   20:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   21:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   22:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   23:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   24:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   25:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   26:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   27:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   28:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   29:  * SUCH DAMAGE.
   30:  */
   31: 
   32: #include <sys/cdefs.h>
   33: #ifndef lint
   34: #if 0
   35: static char sccsid[] = "@(#)srscan.c    8.1 (Berkeley) 5/31/93";
   36: #else
   37: __RCSID("$NetBSD: srscan.c,v 1.6 2003/08/07 09:37:54 agc Exp $");
   38: #endif
   39: #endif /* not lint */
   40: 
   41: #include <stdio.h>
   42: #include "trek.h"
   43: #include "getpar.h"
   44: 
   45: /*
   46: **  SHORT RANGE SENSOR SCAN
   47: **
   48: **      A short range scan is taken of the current quadrant.  If the
   49: **      flag 'f' is one, it is an "auto srscan", which is not done
   50: **      unless in 'fast' mode.  It does a status report and a srscan.
   51: **      If 'f' is -1, you get a status report only.  If it is zero,
   52: **      you get a srscan and an optional status report.  The status
   53: **      report is taken if you enter "srscan yes"; for all srscans
   54: **      thereafter you get a status report with your srscan until
   55: **      you type "srscan no".  It defaults to on.
   56: **
   57: **      The current quadrant is filled in on the computer chart.
   58: */
   59: 
   60: const char      *const Color[4] =
   61: {
   62:         "GREEN",
   63:         "DOCKED",
   64:         "YELLOW",
   65:         "RED"
   66: };
   67: 
   68: void
   69: srscan(f)
   70: int     f;
   71: {
   72:         int            i, j;
   73:         int            statinfo;
   74:         const char     *s;
   75:         int            percent;
   76:         struct quad    *q = NULL;
   77:         const struct cvntab    *p;
   78: 
   79:         if (f >= 0 && check_out(SRSCAN))
   80:         {
   81:                 return;
   82:         }
   83:         if (f)
   84:                 statinfo = 1;
   85:         else
   86:         {
   87:                 if (!testnl())
   88:                         Etc.statreport = getynpar("status report");
   89:                 statinfo = Etc.statreport;
   90:         }
   91:         if (f > 0)
   92:         {
   93:                 Etc.statreport = 1;
   94:                 if (!Etc.fast)
   95:                         return;
   96:         }
   97:         if (f >= 0)
   98:         {
   99:                 printf("\nShort range sensor scan\n");
  100:                 q = &Quad[Ship.quadx][Ship.quady];
  101:                 q->scanned = q->klings * 100 + q->bases * 10 + q->stars;
  102:                 printf("  ");
  103:                 for (i = 0; i < NSECTS; i++)
  104:                 {
  105:                         printf("%d ", i);
  106:                 }
  107:                 printf("\n");
  108:         }
  109: 
  110:         for (i = 0; i < NSECTS; i++)
  111:         {
  112:                 if (f >= 0)
  113:                 {
  114:                         printf("%d ", i);
  115:                         for (j = 0; j < NSECTS; j++)
  116:                                 printf("%c ", Sect[i][j]);
  117:                         printf("%d", i);
  118:                         if (statinfo)
  119:                                 printf("   ");
  120:                 }
  121:                 if (statinfo)
  122:                         switch (i)
  123:                         {
  124:                           case 0:
  125:                                 printf("stardate      %.2f", Now.date);
  126:                                 break;
  127:                           case 1:
  128:                                 printf("condition     %s", Color[Ship.cond]);
  129:                                 if (Ship.cloaked)
  130:                                         printf(", CLOAKED");
  131:                                 break;
  132:                           case 2:
  133:                                 printf("position      %d,%d/%d,%d",Ship.quadx, Ship.quady, Ship.sectx, Ship.secty);
  134:                                 break;
  135:                           case 3:
  136:                                 printf("warp factor   %.1f", Ship.warp);
  137:                                 break;
  138:                           case 4:
  139:                                 printf("total energy  %d", Ship.energy);
  140:                                 break;
  141:                           case 5:
  142:                                 printf("torpedoes     %d", Ship.torped);
  143:                                 break;
  144:                           case 6:
  145:                                 s = "down";
  146:                                 if (Ship.shldup)
  147:                                         s = "up";
  148:                                 if (damaged(SHIELD))
  149:                                         s = "damaged";
  150:                                 percent = 100.0 * Ship.shield / Param.shield;
  151:                                 printf("shields       %s, %d%%", s, percent);
  152:                                 break;
  153:                           case 7:
  154:                                 printf("Klingons left %d", Now.klings);
  155:                                 break;
  156:                           case 8:
  157:                                 printf("time left     %.2f", Now.time);
  158:                                 break;
  159:                           case 9:
  160:                                 printf("life support  ");
  161:                                 if (damaged(LIFESUP))
  162:                                 {
  163:                                         printf("damaged, reserves = %.2f", Ship.reserves);
  164:                                         break;
  165:                                 }
  166:                                 printf("active");
  167:                                 break;
  168:                         }
  169:                 printf("\n");
  170:         }
  171:         if (f < 0)
  172:         {
  173:                 printf("current crew  %d\n", Ship.crew);
  174:                 printf("brig space    %d\n", Ship.brigfree);
  175:                 printf("Klingon power %d\n", Param.klingpwr);
  176:                 p = &Lentab[Game.length - 1];
  177:                 if (Game.length > 2)
  178:                         p--;
  179:                 printf("Length, Skill %s%s, ", p->abrev, p->full);
  180:                 p = &Skitab[Game.skill - 1];
  181:                 printf("%s%s\n", p->abrev, p->full);
  182:                 return;
  183:         }
  184:         printf("  ");
  185:         for (i = 0; i < NSECTS; i++)
  186:                 printf("%d ", i);
  187:         printf("\n");
  188: 
  189:         if (q->qsystemname & Q_DISTRESSED)
  190:                 printf("Distressed ");
  191:         if (q->qsystemname)
  192:                 printf("Starsystem %s\n", systemname(q));
  193: }
Syntax (Markdown)