1 #include <math.h>
2 
3 
4 #include "globals.h"
5 #include "sizes.h"
6 #include "object.h"
7 #include "screen.h"
8 #include "ship.h"
9 
10 
11 struct Star StarArray[NUM_STARS];
12 float ShakePos;
13 int ShakeTimer;
14 
15 
16 // Function to initialize star array
InitStars()17 void InitStars()
18 {
19   int i;
20   float randfloat;
21   float distance;
22 
23   ShakePos=0.15;
24   ShakeTimer=0;
25 
26   for (i=0; i<NUM_STARS; i++) {
27     randfloat=rand()%256+1;
28     StarArray[i].StarColor.red=randfloat/256.0;
29     randfloat=rand()%256+1;
30     StarArray[i].StarColor.green=randfloat/256.0;
31     randfloat=rand()%256+1;
32     StarArray[i].StarColor.blue=randfloat/256.0;
33     randfloat=rand()%256+1.0;
34     StarArray[i].Position.x=randfloat/128.0-1.0;
35     randfloat=rand()%256+1.0;
36     StarArray[i].Position.y=randfloat/128.0-1.0;
37     randfloat=rand()%256+1.0;
38     StarArray[i].Position.z=randfloat/128.0-1.0;
39 
40     distance=StarArray[i].Position.x*StarArray[i].Position.x+
41 	     StarArray[i].Position.y*StarArray[i].Position.y+
42 	     StarArray[i].Position.z*StarArray[i].Position.z;
43     distance=sqrt(distance);
44     StarArray[i].Position.x=(StarArray[i].Position.x/distance)*15.0;
45     StarArray[i].Position.y=(StarArray[i].Position.y/distance)*15.0;
46     StarArray[i].Position.z=(StarArray[i].Position.z/distance)*15.0;
47   }
48 }
49 
50 
DrawStars()51 void DrawStars()
52 {
53   int i, j;
54   float randfloat;
55   struct Point newpoint;
56 
57   // Make stars flicker
58   for (i=0; i<3; i++) {
59     j=rand()%NUM_STARS;
60     randfloat=rand()%256+1;
61     StarArray[j].StarColor.red=randfloat/256.0;
62     randfloat=rand()%256+1;
63     StarArray[j].StarColor.green=randfloat/256.0;
64     randfloat=rand()%256+1;
65     StarArray[j].StarColor.blue=randfloat/256.0;
66     randfloat=rand()%256+1.0;
67   }
68 
69   if (Ships[myShip]->Shaking) {
70     ShakeTimer++;
71     if (ShakeTimer%2==0) {
72       ShakePos*=-1.0;
73     }
74   }
75 
76   for (i=0; i<NUM_STARS; i++) {
77     if (Ships[myShip]->Shaking) {
78       DrawPoint(&StarArray[i].Position, &StarArray[i].StarColor, ShakePos, 0);
79     } else {
80       DrawPoint(&StarArray[i].Position, &StarArray[i].StarColor);
81     }
82   }
83 }
84