Annotation of 43BSD/games/trek/dock.c, revision 1.1.1.1

1.1       root        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[] = "@(#)dock.c     5.1 (Berkeley) 5/30/85";
                      9: #endif not lint
                     10: 
                     11: # include      "trek.h"
                     12: 
                     13: /*
                     14: **  DOCK TO STARBASE
                     15: **
                     16: **     The starship is docked to a starbase.  For this to work you
                     17: **     must be adjacent to a starbase.
                     18: **
                     19: **     You get your supplies replenished and your captives are
                     20: **     disembarked.  Note that your score is updated now, not when
                     21: **     you actually take the captives.
                     22: **
                     23: **     Any repairs that need to be done are rescheduled to take
                     24: **     place sooner.  This provides for the faster repairs when you
                     25: **     are docked.
                     26: */
                     27: 
                     28: dock()
                     29: {
                     30:        register int            i, j;
                     31:        int                     ok;
                     32:        register struct event   *e;
                     33: 
                     34:        if (Ship.cond == DOCKED)
                     35:                return (printf("Chekov: But captain, we are already docked\n"));
                     36:        /* check for ok to dock, i.e., adjacent to a starbase */
                     37:        ok = 0;
                     38:        for (i = Ship.sectx - 1; i <= Ship.sectx + 1 && !ok; i++)
                     39:        {
                     40:                if (i < 0 || i >= NSECTS)
                     41:                        continue;
                     42:                for (j = Ship.secty - 1; j <= Ship.secty + 1; j++)
                     43:                {
                     44:                        if (j  < 0 || j >= NSECTS)
                     45:                                continue;
                     46:                        if (Sect[i][j] == BASE)
                     47:                        {
                     48:                                ok++;
                     49:                                break;
                     50:                        }
                     51:                }
                     52:        }
                     53:        if (!ok)
                     54:                return (printf("Chekov: But captain, we are not adjacent to a starbase.\n"));
                     55: 
                     56:        /* restore resources */
                     57:        Ship.energy = Param.energy;
                     58:        Ship.torped = Param.torped;
                     59:        Ship.shield = Param.shield;
                     60:        Ship.crew = Param.crew;
                     61:        Game.captives += Param.brigfree - Ship.brigfree;
                     62:        Ship.brigfree = Param.brigfree;
                     63: 
                     64:        /* reset ship's defenses */
                     65:        Ship.shldup = 0;
                     66:        Ship.cloaked = 0;
                     67:        Ship.cond = DOCKED;
                     68:        Ship.reserves = Param.reserves;
                     69: 
                     70:        /* recalibrate space inertial navigation system */
                     71:        Ship.sinsbad = 0;
                     72: 
                     73:        /* output any saved radio messages */
                     74:        dumpssradio();
                     75: 
                     76:        /* reschedule any device repairs */
                     77:        for (i = 0; i < MAXEVENTS; i++)
                     78:        {
                     79:                e = &Event[i];
                     80:                if (e->evcode != E_FIXDV)
                     81:                        continue;
                     82:                reschedule(e, (e->date - Now.date) * Param.dockfac);
                     83:        }
                     84:        return;
                     85: }
                     86: 
                     87: 
                     88: /*
                     89: **  LEAVE A STARBASE
                     90: **
                     91: **     This is the inverse of dock().  The main function it performs
                     92: **     is to reschedule any damages so that they will take longer.
                     93: */
                     94: 
                     95: undock()
                     96: {
                     97:        register struct event   *e;
                     98:        register int            i;
                     99: 
                    100:        if (Ship.cond != DOCKED)
                    101:        {
                    102:                printf("Sulu: Pardon me captain, but we are not docked.\n");
                    103:                return;
                    104:        }
                    105:        Ship.cond = GREEN;
                    106:        Move.free = 0;
                    107: 
                    108:        /* reschedule device repair times (again) */
                    109:        for (i = 0; i < MAXEVENTS; i++)
                    110:        {
                    111:                e = &Event[i];
                    112:                if (e->evcode != E_FIXDV)
                    113:                        continue;
                    114:                reschedule(e, (e->date - Now.date) / Param.dockfac);
                    115:        }
                    116:        return;
                    117: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.