]> git.cameronkatri.com Git - bsdgames-darwin.git/blob - trek/initquad.c
Warnsify and remove local implementations of libc functions.
[bsdgames-darwin.git] / trek / initquad.c
1 /* $NetBSD: initquad.c,v 1.4 1997/10/12 21:24:55 christos 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. All advertising materials mentioning features or use of this software
16 * must display the following acknowledgement:
17 * This product includes software developed by the University of
18 * California, Berkeley and its contributors.
19 * 4. Neither the name of the University nor the names of its contributors
20 * may be used to endorse or promote products derived from this software
21 * without specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 */
35
36 #include <sys/cdefs.h>
37 #ifndef lint
38 #if 0
39 static char sccsid[] = "@(#)initquad.c 8.1 (Berkeley) 5/31/93";
40 #else
41 __RCSID("$NetBSD: initquad.c,v 1.4 1997/10/12 21:24:55 christos Exp $");
42 #endif
43 #endif /* not lint */
44
45 #include <stdio.h>
46 #include "trek.h"
47
48 /*
49 ** Paramize Quadrant Upon Entering
50 **
51 ** A quadrant is initialized from the information held in the
52 ** Quad matrix. Basically, everything is just initialized
53 ** randomly, except for the starship, which goes into a fixed
54 ** sector.
55 **
56 ** If there are Klingons in the quadrant, the captain is informed
57 ** that the condition is RED, and he is given a chance to put
58 ** his shields up if the computer is working.
59 **
60 ** The flag `f' is set to disable the check for condition red.
61 ** This mode is used in situations where you know you are going
62 ** to be docked, i.e., abandon() and help().
63 */
64
65 void
66 initquad(f)
67 int f;
68 {
69 int i, j;
70 int rx, ry;
71 int nbases, nstars;
72 struct quad *q;
73 int nholes;
74
75 q = &Quad[Ship.quadx][Ship.quady];
76
77 /* ignored supernova'ed quadrants (this is checked again later anyway */
78 if (q->stars < 0)
79 return;
80 Etc.nkling = q->klings;
81 nbases = q->bases;
82 nstars = q->stars;
83 nholes = q->holes;
84
85 /* have we blundered into a battle zone w/ shields down? */
86 if (Etc.nkling > 0 && !f)
87 {
88 printf("Condition RED\n");
89 Ship.cond = RED;
90 if (!damaged(COMPUTER))
91 shield(1);
92 }
93
94 /* clear out the quadrant */
95 for (i = 0; i < NSECTS; i++)
96 for (j = 0; j < NSECTS; j++)
97 Sect[i][j] = EMPTY;
98
99 /* initialize Enterprise */
100 Sect[Ship.sectx][Ship.secty] = Ship.ship;
101
102 /* initialize Klingons */
103 for (i = 0; i < Etc.nkling; i++)
104 {
105 sector(&rx, &ry);
106 Sect[rx][ry] = KLINGON;
107 Etc.klingon[i].x = rx;
108 Etc.klingon[i].y = ry;
109 Etc.klingon[i].power = Param.klingpwr;
110 Etc.klingon[i].srndreq = 0;
111 }
112 compkldist(1);
113
114 /* initialize star base */
115 if (nbases > 0)
116 {
117 sector(&rx, &ry);
118 Sect[rx][ry] = BASE;
119 Etc.starbase.x = rx;
120 Etc.starbase.y = ry;
121 }
122
123 /* initialize inhabited starsystem */
124 if (q->qsystemname != 0)
125 {
126 sector(&rx, &ry);
127 Sect[rx][ry] = INHABIT;
128 nstars -= 1;
129 }
130
131 /* initialize black holes */
132 for (i = 0; i < nholes; i++)
133 {
134 sector(&rx, &ry);
135 Sect[rx][ry] = HOLE;
136 }
137
138 /* initialize stars */
139 for (i = 0; i < nstars; i++)
140 {
141 sector(&rx, &ry);
142 Sect[rx][ry] = STAR;
143 }
144 Move.newquad = 1;
145 }
146
147
148 void
149 sector(x, y)
150 int *x, *y;
151 {
152 int i, j;
153
154 do
155 {
156 i = ranf(NSECTS);
157 j = ranf(NSECTS);
158 } while (Sect[i][j] != EMPTY);
159 *x = i;
160 *y = j;
161 return;
162 }