open-src/app/xlock/sun-src/pyro.c
author X gate hg captive account <xhg@xserver.us.oracle.com>
Wed, 19 Aug 2015 13:48:41 -0700
changeset 1484 bc8922b8e1d2
parent 943 294f64612d23
permissions -rw-r--r--
Added tag s11u3_30 for changeset 221e9d9cc9cb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
/*
943
294f64612d23 6948254 Mass update of X gate sources to Oracle copyright format
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 919
diff changeset
    18
 * Copyright (c) 1991, 1996, Oracle and/or its affiliates. All rights reserved.
546
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    19
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    20
 * Permission is hereby granted, free of charge, to any person obtaining a
919
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    21
 * copy of this software and associated documentation files (the "Software"),
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    22
 * to deal in the Software without restriction, including without limitation
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    23
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    24
 * and/or sell copies of the Software, and to permit persons to whom the
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    25
 * Software is furnished to do so, subject to the following conditions:
546
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    26
 *
919
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    27
 * The above copyright notice and this permission notice (including the next
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    28
 * paragraph) shall be included in all copies or substantial portions of the
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    29
 * Software.
546
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    30
 *
919
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    31
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    32
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    33
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    34
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    35
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    36
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
425233ae7236 6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents: 907
diff changeset
    37
 * DEALINGS IN THE SOFTWARE.
546
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    38
 */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    39
/*-
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    40
 * 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
    41
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    42
 * Copyright (c) 1991 by Patrick J. Naughton.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    43
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    44
 * See xlock.c for copying information.
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
 * Revision History:
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    47
 * 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
    48
 */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    49
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    50
/* 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
    51
 * 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
    52
 * 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
    53
 * 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
    54
 * 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
    55
 * 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
    56
 */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    57
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    58
#include "xlock.h"
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    59
#include <math.h>
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    60
#define TWOPI 6.2831853
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    61
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    62
/* 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
    63
#ifndef STARSIZE
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    64
#define STARSIZE 1
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    65
#endif
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    66
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    67
#define SILENT 0
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    68
#define REDGLARE 1
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    69
#define BURSTINGINAIR 2
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    70
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    71
#define CLOUD 0
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    72
#define DOUBLECLOUD 1
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    73
/* 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
    74
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    75
/* 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
    76
#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
    77
#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
    78
#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
    79
#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
    80
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    81
#define ROCKETW 2		/* Dimensions of rocket */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    82
#define ROCKETH 4
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    83
#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
    84
#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
    85
#define MAXYVELFACTOR 0.018
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    86
#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
    87
#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
    88
#define MAXFUSE 100
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    89
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    90
#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
    91
#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
    92
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    93
#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
    94
#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
    95
#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
    96
#define MINSTARS 50
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    97
#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
    98
#define MAXSFUSE 100
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 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
   101
#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
   102
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   103
static void ignite();
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   104
static void animate();
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   105
static void shootup();
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   106
static void burst();
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   107
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   108
typedef struct {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   109
    int         state;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   110
    int         shelltype;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   111
    int         color1, color2;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   112
    int         fuse;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   113
    float       xvel, yvel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   114
    float       x, y;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   115
    int         nstars;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   116
#if STARSIZE > 1
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   117
    XRectangle  Xpoints[MAXSTARS];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   118
    XRectangle  Xpoints2[MAXSTARS];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   119
#else
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   120
    XPoint      Xpoints[MAXSTARS];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   121
    XPoint      Xpoints2[MAXSTARS];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   122
#endif
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   123
    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
   124
						 * center  */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   125
    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
   126
							 * center */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   127
}           rocket;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   128
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   129
typedef struct {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   130
    Screen     *scr;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   131
    Colormap    cmap;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   132
    int         p_ignite;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   133
    unsigned long bgpixel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   134
    unsigned long fgpixel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   135
    unsigned long rockpixel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   136
    GC          bgGC;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   137
    int         nflying;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   138
    int         fusilcount;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   139
    int         width, lmargin, rmargin, height;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   140
    float       minvelx, maxvelx;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   141
    float       minvely, maxvely;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   142
    float       maxsvel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   143
    float       rockdecel, stardecel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   144
    rocket     *rockq;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   145
}           pyrostruct;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   146
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   147
extern XColor ssblack[];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   148
extern XColor sswhite[];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   149
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   150
static pyrostruct pyros[MAXSCREENS];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   151
static int  orig_p_ignite;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   152
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
   153
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   154
void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   155
initpyro(win)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   156
    Window      win;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   157
{
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   158
    pyrostruct *pp = &pyros[screen];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   159
    rocket     *rp;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   160
    XWindowAttributes xwa;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   161
    XGCValues   xgcv;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   162
    int         rockn, starn, bsize;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   163
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   164
    XGetWindowAttributes(dsp, win, &xwa);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   165
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   166
    orig_p_ignite = P_IGNITE / batchcount;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   167
    if (orig_p_ignite <= 0)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   168
	orig_p_ignite = 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   169
    pp->p_ignite = orig_p_ignite;
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
    if (!pp->rockq) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   172
	pp->rockq = (rocket *) malloc(batchcount * sizeof(rocket));
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   173
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   174
    pp->nflying = pp->fusilcount = 0;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   175
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   176
    bsize = (xwa.height <= 64) ? 1 : STARSIZE;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   177
    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
   178
	rp->state = SILENT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   179
#if STARSIZE > 1
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   180
	for (starn = 0; starn < MAXSTARS; starn++) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   181
	    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
   182
		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
   183
	}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   184
#endif
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   185
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   186
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   187
    pp->width = xwa.width;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   188
    pp->lmargin = xwa.width / 16;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   189
    pp->rmargin = xwa.width - pp->lmargin;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   190
    pp->height = xwa.height;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   191
    pp->scr = ScreenOfDisplay(dsp, screen);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   192
    pp->cmap = xwa.colormap;
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->fgpixel = sswhite[screen].pixel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   195
    pp->bgpixel = ssblack[screen].pixel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   196
    if (!mono && Scr[screen].npixels > 3)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   197
	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
   198
						 * orange */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   199
    else
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   200
	pp->rockpixel = pp->fgpixel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   201
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   202
    if (!pp->bgGC) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   203
	xgcv.foreground = pp->bgpixel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   204
	pp->bgGC = XCreateGC(dsp, win, GCForeground, &xgcv);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   205
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   206
/* Geometry-dependent physical data: */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   207
    pp->maxvelx = (float) (xwa.width) * XVELFACTOR;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   208
    pp->minvelx = -pp->maxvelx;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   209
    pp->minvely = -(float) (xwa.height) * MINYVELFACTOR;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   210
    pp->maxvely = -(float) (xwa.height) * MAXYVELFACTOR;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   211
    pp->maxsvel = pp->minvely * SVELFACTOR;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   212
    pp->rockdecel = (float) (pp->height) * GRAVFACTOR;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   213
    pp->stardecel = pp->rockdecel * BOUYANCY;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   214
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   215
    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
   216
}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   217
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   218
/*ARGSUSED*/
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   219
void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   220
drawpyro(win)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   221
    Window      win;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   222
{
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   223
    pyrostruct *pp = &pyros[screen];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   224
    rocket     *rp;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   225
    int         rockn;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   226
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   227
    if (pp->p_ignite == 0)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   228
	pp->p_ignite = 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   229
    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
   230
	just_started = False;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   231
	if (random() % P_FUSILLADE == 0) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   232
	    pp->p_ignite = orig_p_ignite / FUSILFACTOR;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   233
	    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
   234
	}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   235
	ignite(pp);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   236
	if (pp->fusilcount > 0) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   237
	    if (--pp->fusilcount == 0)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   238
		pp->p_ignite = orig_p_ignite;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   239
	}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   240
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   241
    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
   242
	if (rp->state != SILENT) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   243
	    animate(win, pp, rp);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   244
	    rockn--;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   245
	}
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
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   249
static void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   250
ignite(pp)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   251
    pyrostruct *pp;
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
    rocket     *rp;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   254
    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
   255
    float       xvel, yvel, x;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   256
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   257
    x = random() % pp->width;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   258
    xvel = FLOATRAND(-pp->maxvelx, pp->maxvelx);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   259
/* 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
   260
    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
   261
	xvel = -xvel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   262
    yvel = FLOATRAND(pp->minvely, pp->maxvely);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   263
    fuse = INTRAND(MINFUSE, MAXFUSE);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   264
    nstars = INTRAND(MINSTARS, MAXSTARS);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   265
    if (!mono && (npix = Scr[screen].npixels) > 2) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   266
	color1 = Scr[screen].pixels[pix = random() % npix];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   267
	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
   268
    } else {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   269
	color1 = color2 = sswhite[screen].pixel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   270
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   271
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   272
    multi = 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   273
    if (random() % P_DOUBLECLOUD == 0)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   274
	shelltype = DOUBLECLOUD;
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
	shelltype = CLOUD;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   277
	if (random() % P_MULTI == 0)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   278
	    multi = INTRAND(5, 15);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   279
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   280
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   281
    rp = pp->rockq;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   282
    while (multi--) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   283
	if (pp->nflying >= batchcount)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   284
	    return;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   285
	while (rp->state != SILENT)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   286
	    rp++;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   287
	pp->nflying++;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   288
	rp->shelltype = shelltype;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   289
	rp->state = REDGLARE;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   290
	rp->color1 = color1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   291
	rp->color2 = color2;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   292
	rp->xvel = xvel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   293
	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
   294
	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
   295
	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
   296
	rp->y = pp->height - 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   297
	rp->nstars = nstars;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   298
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   299
}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   300
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   301
static void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   302
animate(win, pp, rp)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   303
    Window      win;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   304
    pyrostruct *pp;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   305
    rocket     *rp;
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
    int         starn;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   308
    float       r, theta;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   309
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   310
    if (rp->state == REDGLARE) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   311
	shootup(win, pp, rp);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   312
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   313
/* Handle setup for explosion */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   314
	if (rp->state == BURSTINGINAIR) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   315
	    for (starn = 0; starn < rp->nstars; starn++) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   316
		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
   317
		rp->Xpoints[starn].x = (int) rp->x;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   318
		rp->Xpoints[starn].y = (int) rp->y;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   319
		if (rp->shelltype == DOUBLECLOUD) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   320
		    rp->Xpoints2[starn].x = (int) rp->x;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   321
		    rp->Xpoints2[starn].y = (int) rp->y;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   322
		}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   323
/* 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
   324
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   325
		r = FLOATRAND(0.0, pp->maxsvel);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   326
		theta = FLOATRAND(0.0, TWOPI);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   327
		rp->sxvel[starn] = r * cos(theta);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   328
		rp->syvel[starn] = r * sin(theta);
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
	    rp->fuse = INTRAND(MINSFUSE, MAXSFUSE);
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
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   333
    if (rp->state == BURSTINGINAIR) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   334
	burst(win, pp, rp);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   335
    }
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
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   338
static void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   339
shootup(win, pp, rp)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   340
    Window      win;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   341
    pyrostruct *pp;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   342
    rocket     *rp;
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
    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
   345
		   ROCKETW, ROCKETH + 3);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   346
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   347
    if (rp->fuse-- <= 0) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   348
	rp->state = BURSTINGINAIR;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   349
	return;
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
    rp->x += rp->xvel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   352
    rp->y += rp->yvel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   353
    rp->yvel += pp->rockdecel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   354
    XSetForeground(dsp, Scr[screen].gc, pp->rockpixel);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   355
    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
   356
		   ROCKETW, ROCKETH + random() % 4);
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
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   359
static void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   360
burst(win, pp, rp)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   361
    Window      win;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   362
    pyrostruct *pp;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   363
    rocket     *rp;
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
    register int starn;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   366
    register int nstars, stype;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   367
    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
   368
    register float sx, sy;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   369
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   370
    nstars = rp->nstars;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   371
    stype = rp->shelltype;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   372
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   373
#if STARSIZE > 1
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   374
    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
   375
    if (stype == DOUBLECLOUD)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   376
	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
   377
#else
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   378
    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
   379
    if (stype == DOUBLECLOUD)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   380
	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
   381
#endif
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   382
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   383
    if (rp->fuse-- <= 0) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   384
	rp->state = SILENT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   385
	pp->nflying--;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   386
	return;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   387
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   388
/* Stagger the stars' decay */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   389
    if (rp->fuse <= 7) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   390
	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
   391
	    return;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   392
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   393
    rx = rp->x;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   394
    ry = rp->y;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   395
    sd = pp->stardecel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   396
    for (starn = 0; starn < nstars; starn++) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   397
	sx = rp->sx[starn] += rp->sxvel[starn];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   398
	sy = rp->sy[starn] += rp->syvel[starn];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   399
	rp->syvel[starn] += sd;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   400
	rp->Xpoints[starn].x = (int) (rx + sx);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   401
	rp->Xpoints[starn].y = (int) (ry + sy);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   402
	if (stype == DOUBLECLOUD) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   403
	    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
   404
	    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
   405
	}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   406
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   407
    rp->x = rx + rp->xvel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   408
    rp->y = ry + rp->yvel;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   409
    rp->yvel += sd;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   410
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   411
    XSetForeground(dsp, Scr[screen].gc, rp->color1);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   412
#if STARSIZE > 1
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   413
    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
   414
    if (stype == DOUBLECLOUD) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   415
	XSetForeground(dsp, Scr[screen].gc, rp->color2);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   416
	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
   417
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   418
#else
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   419
    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
   420
    if (stype == DOUBLECLOUD) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   421
	XSetForeground(dsp, Scr[screen].gc, rp->color2);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   422
	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
   423
		    CoordModeOrigin);
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
#endif
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   426
}