integrate subwindows fully into all parts of curses
[unix-history] / usr / src / games / trek / initquad.c
CommitLineData
e28303e4
KM
1#ifndef lint
2static char sccsid[] = "@(#)initquad.c 4.1 (Berkeley) %G%";
3#endif not lint
4
5# include "trek.h"
6
7/*
8** Paramize Quadrant Upon Entering
9**
10** A quadrant is initialized from the information held in the
11** Quad matrix. Basically, everything is just initialized
12** randomly, except for the starship, which goes into a fixed
13** sector.
14**
15** If there are Klingons in the quadrant, the captain is informed
16** that the condition is RED, and he is given a chance to put
17** his shields up if the computer is working.
18**
19** The flag `f' is set to disable the check for condition red.
20** This mode is used in situations where you know you are going
21** to be docked, i.e., abandon() and help().
22*/
23
24initquad(f)
25int f;
26{
27 register int i, j;
28 int rx, ry;
29 int nbases, nstars;
30 register struct quad *q;
31 int nholes;
32
33 q = &Quad[Ship.quadx][Ship.quady];
34
35 /* ignored supernova'ed quadrants (this is checked again later anyway */
36 if (q->stars < 0)
37 return;
38 Etc.nkling = q->klings;
39 nbases = q->bases;
40 nstars = q->stars;
41 nholes = q->holes;
42
43 /* have we blundered into a battle zone w/ shields down? */
44 if (Etc.nkling > 0 && !f)
45 {
46 printf("Condition RED\n");
47 Ship.cond = RED;
48 if (!damaged(COMPUTER))
49 shield(1);
50 }
51
52 /* clear out the quadrant */
53 for (i = 0; i < NSECTS; i++)
54 for (j = 0; j < NSECTS; j++)
55 Sect[i][j] = EMPTY;
56
57 /* initialize Enterprise */
58 Sect[Ship.sectx][Ship.secty] = Ship.ship;
59
60 /* initialize Klingons */
61 for (i = 0; i < Etc.nkling; i++)
62 {
63 sector(&rx, &ry);
64 Sect[rx][ry] = KLINGON;
65 Etc.klingon[i].x = rx;
66 Etc.klingon[i].y = ry;
67 Etc.klingon[i].power = Param.klingpwr;
68 Etc.klingon[i].srndreq = 0;
69 }
70 compkldist(1);
71
72 /* initialize star base */
73 if (nbases > 0)
74 {
75 sector(&rx, &ry);
76 Sect[rx][ry] = BASE;
77 Etc.starbase.x = rx;
78 Etc.starbase.y = ry;
79 }
80
81 /* initialize inhabited starsystem */
82 if (q->systemname != 0)
83 {
84 sector(&rx, &ry);
85 Sect[rx][ry] = INHABIT;
86 nstars =- 1;
87 }
88
89 /* initialize black holes */
90 for (i = 0; i < nholes; i++)
91 {
92 sector(&rx, &ry);
93 Sect[rx][ry] = HOLE;
94 }
95
96 /* initialize stars */
97 for (i = 0; i < nstars; i++)
98 {
99 sector(&rx, &ry);
100 Sect[rx][ry] = STAR;
101 }
102 Move.newquad = 1;
103}
104
105
106sector(x, y)
107int *x, *y;
108{
109 register int i, j;
110
111 do
112 {
113 i = ranf(NSECTS);
114 j = ranf(NSECTS);
115 } while (Sect[i][j] != EMPTY);
116 *x = i;
117 *y = j;
118 return;
119}