author | Alan Coopersmith <Alan.Coopersmith@Sun.COM> |
Thu, 18 Feb 2010 16:03:08 -0800 | |
changeset 907 | 3c35d611cdaa |
parent 546 | f3f84c886c69 |
child 919 | 425233ae7236 |
permissions | -rw-r--r-- |
546
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
1 |
/* |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
2 |
* Copyright (c) 1988-91 by Patrick J. Naughton. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
3 |
* |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
4 |
* Permission to use, copy, modify, and distribute this software and its |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
5 |
* documentation for any purpose and without fee is hereby granted, |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
6 |
* provided that the above copyright notice appear in all copies and that |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
7 |
* both that copyright notice and this permission notice appear in |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
8 |
* supporting documentation. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
9 |
* |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
10 |
* This file is provided AS IS with no warranties of any kind. The author |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
11 |
* shall have no liability with respect to the infringement of copyrights, |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
12 |
* trade secrets or any patents by this file or any part thereof. In no |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
13 |
* event will the author be liable for any lost revenue or profits or |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
14 |
* other special, indirect and consequential damages. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
15 |
*/ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
16 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
17 |
/* |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
18 |
* Copyright 1996 Sun Microsystems, Inc. All rights reserved. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
19 |
* Use is subject to license terms. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
20 |
* |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
21 |
* Permission is hereby granted, free of charge, to any person obtaining a |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
22 |
* copy of this software and associated documentation files (the |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
23 |
* "Software"), to deal in the Software without restriction, including |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
24 |
* without limitation the rights to use, copy, modify, merge, publish, |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
25 |
* distribute, and/or sell copies of the Software, and to permit persons |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
26 |
* to whom the Software is furnished to do so, provided that the above |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
27 |
* copyright notice(s) and this permission notice appear in all copies of |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
28 |
* the Software and that both the above copyright notice(s) and this |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
29 |
* permission notice appear in supporting documentation. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
30 |
* |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
31 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
32 |
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
33 |
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
34 |
* OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
35 |
* HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
36 |
* INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
37 |
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
38 |
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
39 |
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
40 |
* |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
41 |
* Except as contained in this notice, the name of a copyright holder |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
42 |
* shall not be used in advertising or otherwise to promote the sale, use |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
43 |
* or other dealings in this Software without prior written authorization |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
44 |
* of the copyright holder. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
45 |
*/ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
46 |
/*- |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
47 |
* pyro.c - Fireworks for xlock, the X Window System lockscreen. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
48 |
* |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
49 |
* Copyright (c) 1991 by Patrick J. Naughton. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
50 |
* |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
51 |
* See xlock.c for copying information. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
52 |
* |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
53 |
* Revision History: |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
54 |
* 16-Mar-91: Written. (received from David Brooks, [email protected]). |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
55 |
*/ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
56 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
57 |
/* The physics of the rockets is a little bogus, but it looks OK. Each is |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
58 |
* given an initial velocity impetus. They decelerate slightly (gravity |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
59 |
* overcomes the rocket's impulse) and explode as the rocket's main fuse |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
60 |
* gives out (we could add a ballistic stage, maybe). The individual |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
61 |
* stars fan out from the rocket, and they decelerate less quickly. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
62 |
* That's called bouyancy, but really it's again a visual preference. |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
63 |
*/ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
64 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
65 |
#include "xlock.h" |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
66 |
#include <math.h> |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
67 |
#define TWOPI 6.2831853 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
68 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
69 |
/* Define this >1 to get small rectangles instead of points */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
70 |
#ifndef STARSIZE |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
71 |
#define STARSIZE 1 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
72 |
#endif |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
73 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
74 |
#define SILENT 0 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
75 |
#define REDGLARE 1 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
76 |
#define BURSTINGINAIR 2 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
77 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
78 |
#define CLOUD 0 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
79 |
#define DOUBLECLOUD 1 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
80 |
/* Clearly other types and other fascinating visual effects could be added...*/ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
81 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
82 |
/* P_xxx parameters represent the reciprocal of the probability... */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
83 |
#define P_IGNITE 5000 /* ...of ignition per cycle */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
84 |
#define P_DOUBLECLOUD 10 /* ...of an ignition being double */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
85 |
#define P_MULTI 75 /* ...of an ignition being several @ once */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
86 |
#define P_FUSILLADE 250 /* ...of an ignition starting a fusillade */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
87 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
88 |
#define ROCKETW 2 /* Dimensions of rocket */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
89 |
#define ROCKETH 4 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
90 |
#define XVELFACTOR 0.0025 /* Max horizontal velocity / screen width */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
91 |
#define MINYVELFACTOR 0.016 /* Min vertical velocity / screen height */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
92 |
#define MAXYVELFACTOR 0.018 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
93 |
#define GRAVFACTOR 0.0002 /* delta v / screen height */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
94 |
#define MINFUSE 50 /* range of fuse lengths for rocket */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
95 |
#define MAXFUSE 100 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
96 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
97 |
#define FUSILFACTOR 10 /* Generate fusillade by reducing P_IGNITE */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
98 |
#define FUSILLEN 100 /* Length of fusillade, in ignitions */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
99 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
100 |
#define SVELFACTOR 0.1 /* Max star velocity / yvel */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
101 |
#define BOUYANCY 0.2 /* Reduction in grav deceleration for stars */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
102 |
#define MAXSTARS 75 /* Number of stars issued from a shell */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
103 |
#define MINSTARS 50 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
104 |
#define MINSFUSE 50 /* Range of fuse lengths for stars */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
105 |
#define MAXSFUSE 100 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
106 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
107 |
#define INTRAND(min,max) (random()%((max+1)-(min))+(min)) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
108 |
#define FLOATRAND(min,max) ((min)+(random()/MAXRAND)*((max)-(min))) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
109 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
110 |
static void ignite(); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
111 |
static void animate(); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
112 |
static void shootup(); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
113 |
static void burst(); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
114 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
115 |
typedef struct { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
116 |
int state; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
117 |
int shelltype; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
118 |
int color1, color2; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
119 |
int fuse; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
120 |
float xvel, yvel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
121 |
float x, y; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
122 |
int nstars; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
123 |
#if STARSIZE > 1 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
124 |
XRectangle Xpoints[MAXSTARS]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
125 |
XRectangle Xpoints2[MAXSTARS]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
126 |
#else |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
127 |
XPoint Xpoints[MAXSTARS]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
128 |
XPoint Xpoints2[MAXSTARS]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
129 |
#endif |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
130 |
float sx[MAXSTARS], sy[MAXSTARS]; /* Distance from notional |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
131 |
* center */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
132 |
float sxvel[MAXSTARS], syvel[MAXSTARS]; /* Relative to notional |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
133 |
* center */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
134 |
} rocket; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
135 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
136 |
typedef struct { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
137 |
Screen *scr; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
138 |
Colormap cmap; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
139 |
int p_ignite; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
140 |
unsigned long bgpixel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
141 |
unsigned long fgpixel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
142 |
unsigned long rockpixel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
143 |
GC bgGC; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
144 |
int nflying; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
145 |
int fusilcount; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
146 |
int width, lmargin, rmargin, height; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
147 |
float minvelx, maxvelx; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
148 |
float minvely, maxvely; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
149 |
float maxsvel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
150 |
float rockdecel, stardecel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
151 |
rocket *rockq; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
152 |
} pyrostruct; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
153 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
154 |
extern XColor ssblack[]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
155 |
extern XColor sswhite[]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
156 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
157 |
static pyrostruct pyros[MAXSCREENS]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
158 |
static int orig_p_ignite; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
159 |
static int just_started = True;/* Greet the user right away */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
160 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
161 |
void |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
162 |
initpyro(win) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
163 |
Window win; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
164 |
{ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
165 |
pyrostruct *pp = &pyros[screen]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
166 |
rocket *rp; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
167 |
XWindowAttributes xwa; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
168 |
XGCValues xgcv; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
169 |
int rockn, starn, bsize; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
170 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
171 |
XGetWindowAttributes(dsp, win, &xwa); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
172 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
173 |
orig_p_ignite = P_IGNITE / batchcount; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
174 |
if (orig_p_ignite <= 0) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
175 |
orig_p_ignite = 1; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
176 |
pp->p_ignite = orig_p_ignite; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
177 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
178 |
if (!pp->rockq) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
179 |
pp->rockq = (rocket *) malloc(batchcount * sizeof(rocket)); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
180 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
181 |
pp->nflying = pp->fusilcount = 0; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
182 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
183 |
bsize = (xwa.height <= 64) ? 1 : STARSIZE; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
184 |
for (rockn = 0, rp = pp->rockq; rockn < batchcount; rockn++, rp++) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
185 |
rp->state = SILENT; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
186 |
#if STARSIZE > 1 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
187 |
for (starn = 0; starn < MAXSTARS; starn++) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
188 |
rp->Xpoints[starn].width = rp->Xpoints[starn].height = |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
189 |
rp->Xpoints2[starn].width = rp->Xpoints2[starn].height = bsize; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
190 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
191 |
#endif |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
192 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
193 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
194 |
pp->width = xwa.width; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
195 |
pp->lmargin = xwa.width / 16; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
196 |
pp->rmargin = xwa.width - pp->lmargin; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
197 |
pp->height = xwa.height; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
198 |
pp->scr = ScreenOfDisplay(dsp, screen); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
199 |
pp->cmap = xwa.colormap; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
200 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
201 |
pp->fgpixel = sswhite[screen].pixel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
202 |
pp->bgpixel = ssblack[screen].pixel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
203 |
if (!mono && Scr[screen].npixels > 3) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
204 |
pp->rockpixel = Scr[screen].pixels[3]; /* Just the right shade of |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
205 |
* orange */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
206 |
else |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
207 |
pp->rockpixel = pp->fgpixel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
208 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
209 |
if (!pp->bgGC) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
210 |
xgcv.foreground = pp->bgpixel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
211 |
pp->bgGC = XCreateGC(dsp, win, GCForeground, &xgcv); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
212 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
213 |
/* Geometry-dependent physical data: */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
214 |
pp->maxvelx = (float) (xwa.width) * XVELFACTOR; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
215 |
pp->minvelx = -pp->maxvelx; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
216 |
pp->minvely = -(float) (xwa.height) * MINYVELFACTOR; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
217 |
pp->maxvely = -(float) (xwa.height) * MAXYVELFACTOR; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
218 |
pp->maxsvel = pp->minvely * SVELFACTOR; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
219 |
pp->rockdecel = (float) (pp->height) * GRAVFACTOR; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
220 |
pp->stardecel = pp->rockdecel * BOUYANCY; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
221 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
222 |
XFillRectangle(dsp, win, pp->bgGC, 0, 0, xwa.width, xwa.height); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
223 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
224 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
225 |
/*ARGSUSED*/ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
226 |
void |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
227 |
drawpyro(win) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
228 |
Window win; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
229 |
{ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
230 |
pyrostruct *pp = &pyros[screen]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
231 |
rocket *rp; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
232 |
int rockn; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
233 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
234 |
if (pp->p_ignite == 0) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
235 |
pp->p_ignite = 1; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
236 |
if (just_started || (random() % pp->p_ignite == 0)) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
237 |
just_started = False; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
238 |
if (random() % P_FUSILLADE == 0) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
239 |
pp->p_ignite = orig_p_ignite / FUSILFACTOR; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
240 |
pp->fusilcount = INTRAND(FUSILLEN * 9 / 10, FUSILLEN * 11 / 10); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
241 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
242 |
ignite(pp); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
243 |
if (pp->fusilcount > 0) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
244 |
if (--pp->fusilcount == 0) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
245 |
pp->p_ignite = orig_p_ignite; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
246 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
247 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
248 |
for (rockn = pp->nflying, rp = pp->rockq; rockn > 0; rp++) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
249 |
if (rp->state != SILENT) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
250 |
animate(win, pp, rp); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
251 |
rockn--; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
252 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
253 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
254 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
255 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
256 |
static void |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
257 |
ignite(pp) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
258 |
pyrostruct *pp; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
259 |
{ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
260 |
rocket *rp; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
261 |
int multi, shelltype, nstars, fuse, npix, pix, color1, color2; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
262 |
float xvel, yvel, x; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
263 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
264 |
x = random() % pp->width; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
265 |
xvel = FLOATRAND(-pp->maxvelx, pp->maxvelx); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
266 |
/* All this to stop too many rockets going offscreen: */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
267 |
if (x < pp->lmargin && xvel < 0.0 || x > pp->rmargin && xvel > 0.0) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
268 |
xvel = -xvel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
269 |
yvel = FLOATRAND(pp->minvely, pp->maxvely); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
270 |
fuse = INTRAND(MINFUSE, MAXFUSE); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
271 |
nstars = INTRAND(MINSTARS, MAXSTARS); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
272 |
if (!mono && (npix = Scr[screen].npixels) > 2) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
273 |
color1 = Scr[screen].pixels[pix = random() % npix]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
274 |
color2 = Scr[screen].pixels[(pix + (npix / 2)) % npix]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
275 |
} else { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
276 |
color1 = color2 = sswhite[screen].pixel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
277 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
278 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
279 |
multi = 1; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
280 |
if (random() % P_DOUBLECLOUD == 0) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
281 |
shelltype = DOUBLECLOUD; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
282 |
else { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
283 |
shelltype = CLOUD; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
284 |
if (random() % P_MULTI == 0) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
285 |
multi = INTRAND(5, 15); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
286 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
287 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
288 |
rp = pp->rockq; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
289 |
while (multi--) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
290 |
if (pp->nflying >= batchcount) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
291 |
return; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
292 |
while (rp->state != SILENT) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
293 |
rp++; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
294 |
pp->nflying++; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
295 |
rp->shelltype = shelltype; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
296 |
rp->state = REDGLARE; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
297 |
rp->color1 = color1; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
298 |
rp->color2 = color2; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
299 |
rp->xvel = xvel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
300 |
rp->yvel = FLOATRAND(yvel * 0.97, yvel * 1.03); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
301 |
rp->fuse = INTRAND((fuse * 90) / 100, (fuse * 110) / 100); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
302 |
rp->x = x + FLOATRAND(multi * 7.6, multi * 8.4); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
303 |
rp->y = pp->height - 1; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
304 |
rp->nstars = nstars; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
305 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
306 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
307 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
308 |
static void |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
309 |
animate(win, pp, rp) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
310 |
Window win; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
311 |
pyrostruct *pp; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
312 |
rocket *rp; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
313 |
{ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
314 |
int starn; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
315 |
float r, theta; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
316 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
317 |
if (rp->state == REDGLARE) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
318 |
shootup(win, pp, rp); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
319 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
320 |
/* Handle setup for explosion */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
321 |
if (rp->state == BURSTINGINAIR) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
322 |
for (starn = 0; starn < rp->nstars; starn++) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
323 |
rp->sx[starn] = rp->sy[starn] = 0.0; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
324 |
rp->Xpoints[starn].x = (int) rp->x; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
325 |
rp->Xpoints[starn].y = (int) rp->y; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
326 |
if (rp->shelltype == DOUBLECLOUD) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
327 |
rp->Xpoints2[starn].x = (int) rp->x; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
328 |
rp->Xpoints2[starn].y = (int) rp->y; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
329 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
330 |
/* This isn't accurate solid geometry, but it looks OK. */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
331 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
332 |
r = FLOATRAND(0.0, pp->maxsvel); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
333 |
theta = FLOATRAND(0.0, TWOPI); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
334 |
rp->sxvel[starn] = r * cos(theta); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
335 |
rp->syvel[starn] = r * sin(theta); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
336 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
337 |
rp->fuse = INTRAND(MINSFUSE, MAXSFUSE); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
338 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
339 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
340 |
if (rp->state == BURSTINGINAIR) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
341 |
burst(win, pp, rp); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
342 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
343 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
344 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
345 |
static void |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
346 |
shootup(win, pp, rp) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
347 |
Window win; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
348 |
pyrostruct *pp; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
349 |
rocket *rp; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
350 |
{ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
351 |
XFillRectangle(dsp, win, pp->bgGC, (int) (rp->x), (int) (rp->y), |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
352 |
ROCKETW, ROCKETH + 3); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
353 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
354 |
if (rp->fuse-- <= 0) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
355 |
rp->state = BURSTINGINAIR; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
356 |
return; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
357 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
358 |
rp->x += rp->xvel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
359 |
rp->y += rp->yvel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
360 |
rp->yvel += pp->rockdecel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
361 |
XSetForeground(dsp, Scr[screen].gc, pp->rockpixel); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
362 |
XFillRectangle(dsp, win, Scr[screen].gc, (int) (rp->x), (int) (rp->y), |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
363 |
ROCKETW, ROCKETH + random() % 4); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
364 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
365 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
366 |
static void |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
367 |
burst(win, pp, rp) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
368 |
Window win; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
369 |
pyrostruct *pp; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
370 |
rocket *rp; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
371 |
{ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
372 |
register int starn; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
373 |
register int nstars, stype; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
374 |
register float rx, ry, sd; /* Help compiler optimize :-) */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
375 |
register float sx, sy; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
376 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
377 |
nstars = rp->nstars; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
378 |
stype = rp->shelltype; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
379 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
380 |
#if STARSIZE > 1 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
381 |
XFillRectangles(dsp, win, pp->bgGC, rp->Xpoints, nstars); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
382 |
if (stype == DOUBLECLOUD) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
383 |
XFillRectangles(dsp, win, pp->bgGC, rp->Xpoints2, nstars); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
384 |
#else |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
385 |
XDrawPoints(dsp, win, pp->bgGC, rp->Xpoints, nstars, CoordModeOrigin); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
386 |
if (stype == DOUBLECLOUD) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
387 |
XDrawPoints(dsp, win, pp->bgGC, rp->Xpoints2, nstars, CoordModeOrigin); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
388 |
#endif |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
389 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
390 |
if (rp->fuse-- <= 0) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
391 |
rp->state = SILENT; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
392 |
pp->nflying--; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
393 |
return; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
394 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
395 |
/* Stagger the stars' decay */ |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
396 |
if (rp->fuse <= 7) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
397 |
if ((rp->nstars = nstars = nstars * 90 / 100) == 0) |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
398 |
return; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
399 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
400 |
rx = rp->x; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
401 |
ry = rp->y; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
402 |
sd = pp->stardecel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
403 |
for (starn = 0; starn < nstars; starn++) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
404 |
sx = rp->sx[starn] += rp->sxvel[starn]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
405 |
sy = rp->sy[starn] += rp->syvel[starn]; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
406 |
rp->syvel[starn] += sd; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
407 |
rp->Xpoints[starn].x = (int) (rx + sx); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
408 |
rp->Xpoints[starn].y = (int) (ry + sy); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
409 |
if (stype == DOUBLECLOUD) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
410 |
rp->Xpoints2[starn].x = (int) (rx + 1.7 * sx); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
411 |
rp->Xpoints2[starn].y = (int) (ry + 1.7 * sy); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
412 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
413 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
414 |
rp->x = rx + rp->xvel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
415 |
rp->y = ry + rp->yvel; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
416 |
rp->yvel += sd; |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
417 |
|
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
418 |
XSetForeground(dsp, Scr[screen].gc, rp->color1); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
419 |
#if STARSIZE > 1 |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
420 |
XFillRectangles(dsp, win, Scr[screen].gc, rp->Xpoints, nstars); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
421 |
if (stype == DOUBLECLOUD) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
422 |
XSetForeground(dsp, Scr[screen].gc, rp->color2); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
423 |
XFillRectangles(dsp, win, Scr[screen].gc, rp->Xpoints2, nstars); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
424 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
425 |
#else |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
426 |
XDrawPoints(dsp, win, Scr[screen].gc, rp->Xpoints, nstars, CoordModeOrigin); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
427 |
if (stype == DOUBLECLOUD) { |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
428 |
XSetForeground(dsp, Scr[screen].gc, rp->color2); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
429 |
XDrawPoints(dsp, win, Scr[screen].gc, rp->Xpoints2, nstars, |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
430 |
CoordModeOrigin); |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
431 |
} |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
432 |
#endif |
f3f84c886c69
6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff
changeset
|
433 |
} |