Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Star.cs
Go to the documentation of this file.
1using System;
4
5namespace Terraria;
6
7public class Star
8{
10
11 public float scale;
12
13 public float rotation;
14
15 public int type;
16
17 public float twinkle;
18
19 public float twinkleSpeed;
20
21 public float rotationSpeed;
22
23 public bool falling;
24
25 public bool hidden;
26
28
29 public int fallTime;
30
31 public static bool dayCheck = false;
32
33 public static float starfallBoost = 1f;
34
35 public static int starFallCount = 0;
36
37 public float fadeIn;
38
39 public static void NightSetup()
40 {
41 starfallBoost = 1f;
42 int maxValue = 10;
43 int maxValue2 = 3;
45 {
46 maxValue = 5;
47 maxValue2 = 2;
48 }
49 if (Main.rand.Next(maxValue) == 0)
50 {
51 starfallBoost = (float)Main.rand.Next(300, 501) * 0.01f;
52 }
53 else if (Main.rand.Next(maxValue2) == 0)
54 {
55 starfallBoost = (float)Main.rand.Next(100, 151) * 0.01f;
56 }
57 starFallCount = 0;
58 }
59
60 public static void StarFall(float positionX)
61 {
63 int num = -1;
64 float num2 = -1f;
65 float num3 = positionX / Main.rightWorld * 1920f;
66 for (int i = 0; i < Main.numStars; i++)
67 {
68 if (!Main.star[i].hidden && !Main.star[i].falling)
69 {
70 float num4 = Math.Abs(Main.star[i].position.X - num3);
71 if (num2 == -1f || num4 < num2)
72 {
73 num = i;
74 num2 = num4;
75 }
76 }
77 }
78 if (num >= 0)
79 {
80 Main.star[num].Fall();
81 }
82 }
83
84 public static void SpawnStars(int s = -1)
85 {
87 int num = fastRandom.Next(200, 400);
88 int num2 = 0;
89 int num3 = num;
90 if (s >= 0)
91 {
92 num2 = s;
93 num3 = s + 1;
94 }
95 for (int i = num2; i < num3; i++)
96 {
97 Main.star[i] = new Star();
98 if (s >= 0)
99 {
100 Main.star[i].fadeIn = 1f;
101 int num4 = 10;
102 int num5 = -2000;
103 for (int j = 0; j < num4; j++)
104 {
105 float num6 = fastRandom.Next(1921);
106 int num7 = 2000;
107 for (int k = 0; k < Main.numStars; k++)
108 {
109 if (k != s && !Main.star[k].hidden && !Main.star[k].falling)
110 {
111 int num8 = (int)Math.Abs(num6 - Main.star[k].position.X);
112 if (num8 < num7)
113 {
114 num7 = num8;
115 }
116 }
117 }
118 if (s == 0 || num7 > num5)
119 {
120 num5 = num7;
121 Main.star[i].position.X = num6;
122 }
123 }
124 }
125 else
126 {
127 Main.star[i].position.X = fastRandom.Next(1921);
128 }
129 Main.star[i].position.Y = fastRandom.Next(1201);
130 Main.star[i].rotation = (float)fastRandom.Next(628) * 0.01f;
131 Main.star[i].scale = (float)fastRandom.Next(70, 130) * 0.006f;
132 Main.star[i].type = fastRandom.Next(0, 4);
133 Main.star[i].twinkle = (float)fastRandom.Next(60, 101) * 0.01f;
134 Main.star[i].twinkleSpeed = (float)fastRandom.Next(30, 110) * 0.0001f;
135 if (fastRandom.Next(2) == 0)
136 {
137 Main.star[i].twinkleSpeed *= -1f;
138 }
139 Main.star[i].rotationSpeed = (float)fastRandom.Next(5, 50) * 0.0001f;
140 if (fastRandom.Next(2) == 0)
141 {
142 Main.star[i].rotationSpeed *= -1f;
143 }
144 if (fastRandom.Next(40) == 0)
145 {
146 Main.star[i].scale *= 2f;
147 Main.star[i].twinkleSpeed /= 2f;
148 Main.star[i].rotationSpeed /= 2f;
149 }
150 }
151 if (s == -1)
152 {
153 Main.numStars = num;
154 }
155 }
156
157 public void Fall()
158 {
159 fallTime = 0;
160 falling = true;
161 fallSpeed.Y = (float)Main.rand.Next(700, 1001) * 0.01f;
162 fallSpeed.X = (float)Main.rand.Next(-400, 401) * 0.01f;
163 }
164
165 public void Update()
166 {
167 if (falling && !hidden)
168 {
170 position += fallSpeed * (Main.dayRate + 99) / 100f;
171 if (position.Y > 1500f)
172 {
173 hidden = true;
174 }
175 if (Main.starGame && position.Length() > 99999f)
176 {
177 hidden = true;
178 }
179 twinkle += twinkleSpeed * 3f;
180 if (twinkle > 1f)
181 {
182 twinkle = 1f;
183 twinkleSpeed *= -1f;
184 }
185 else if ((double)twinkle < 0.6)
186 {
187 twinkle = 0.6f;
188 twinkleSpeed *= -1f;
189 }
190 rotation += 0.5f;
191 if ((double)rotation > 6.28)
192 {
193 rotation -= 6.28f;
194 }
195 if (rotation < 0f)
196 {
197 rotation += 6.28f;
198 }
199 return;
200 }
201 if (fadeIn > 0f)
202 {
203 float num = 6.1728395E-05f * (float)Main.dayRate;
204 num *= 10f;
205 fadeIn -= num;
206 if (fadeIn < 0f)
207 {
208 fadeIn = 0f;
209 }
210 }
212 if (twinkle > 1f)
213 {
214 twinkle = 1f;
215 twinkleSpeed *= -1f;
216 }
217 else if ((double)twinkle < 0.6)
218 {
219 twinkle = 0.6f;
220 twinkleSpeed *= -1f;
221 }
223 if ((double)rotation > 6.28)
224 {
225 rotation -= 6.28f;
226 }
227 if (rotation < 0f)
228 {
229 rotation += 6.28f;
230 }
231 }
232
233 public static void UpdateStars()
234 {
235 if (!Main.dayTime)
236 {
237 dayCheck = false;
238 }
239 else if (!dayCheck && Main.time >= 27000.0)
240 {
241 for (int i = 0; i < Main.numStars; i++)
242 {
243 if (Main.star[i].hidden)
244 {
245 SpawnStars(i);
246 }
247 }
248 }
249 for (int j = 0; j < Main.numStars; j++)
250 {
251 Main.star[j].Update();
252 }
253 }
254}
static double Abs(double value)
static double time
Definition Main.cs:1284
static Star[] star
Definition Main.cs:1679
static int numStars
Definition Main.cs:1348
static bool starGame
Definition Main.cs:2597
static bool dayTime
Definition Main.cs:1282
static UnifiedRandom rand
Definition Main.cs:1387
static bool tenthAnniversaryWorld
Definition Main.cs:343
static int dayRate
Definition Main.cs:746
float twinkleSpeed
Definition Star.cs:19
static void NightSetup()
Definition Star.cs:39
void Update()
Definition Star.cs:165
static float starfallBoost
Definition Star.cs:33
bool hidden
Definition Star.cs:25
float scale
Definition Star.cs:11
void Fall()
Definition Star.cs:157
static void SpawnStars(int s=-1)
Definition Star.cs:84
Vector2 position
Definition Star.cs:9
float fadeIn
Definition Star.cs:37
float twinkle
Definition Star.cs:17
static int starFallCount
Definition Star.cs:35
static bool dayCheck
Definition Star.cs:31
static void UpdateStars()
Definition Star.cs:233
int fallTime
Definition Star.cs:29
static void StarFall(float positionX)
Definition Star.cs:60
Vector2 fallSpeed
Definition Star.cs:27
bool falling
Definition Star.cs:23
float rotationSpeed
Definition Star.cs:21
float rotation
Definition Star.cs:13
int type
Definition Star.cs:15
static FastRandom CreateWithRandomSeed()
Definition FastRandom.cs:37