Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Star.cs
Go to the documentation of this file.
1
using
System
;
2
using
Microsoft.Xna.Framework
;
3
using
Terraria.Utilities
;
4
5
namespace
Terraria
;
6
7
public
class
Star
8
{
9
public
Vector2
position
;
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
27
public
Vector2
fallSpeed
;
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;
44
if
(
Main
.
tenthAnniversaryWorld
)
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
{
62
starFallCount
++;
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
{
86
FastRandom
fastRandom =
FastRandom
.
CreateWithRandomSeed
();
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
{
169
fallTime
+=
Main
.
dayRate
;
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
}
211
twinkle
+=
twinkleSpeed
;
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
}
222
rotation
+=
rotationSpeed
;
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
}
System.Math.Abs
static double Abs(double value)
System.Math
Definition
Math.cs:13
Terraria.Main.time
static double time
Definition
Main.cs:1284
Terraria.Main.star
static Star[] star
Definition
Main.cs:1679
Terraria.Main.numStars
static int numStars
Definition
Main.cs:1348
Terraria.Main.starGame
static bool starGame
Definition
Main.cs:2597
Terraria.Main.dayTime
static bool dayTime
Definition
Main.cs:1282
Terraria.Main.rand
static UnifiedRandom rand
Definition
Main.cs:1387
Terraria.Main.tenthAnniversaryWorld
static bool tenthAnniversaryWorld
Definition
Main.cs:343
Terraria.Main.dayRate
static int dayRate
Definition
Main.cs:746
Terraria.Main
Definition
Main.cs:79
Terraria.Star.twinkleSpeed
float twinkleSpeed
Definition
Star.cs:19
Terraria.Star.NightSetup
static void NightSetup()
Definition
Star.cs:39
Terraria.Star.Update
void Update()
Definition
Star.cs:165
Terraria.Star.starfallBoost
static float starfallBoost
Definition
Star.cs:33
Terraria.Star.hidden
bool hidden
Definition
Star.cs:25
Terraria.Star.scale
float scale
Definition
Star.cs:11
Terraria.Star.Fall
void Fall()
Definition
Star.cs:157
Terraria.Star.SpawnStars
static void SpawnStars(int s=-1)
Definition
Star.cs:84
Terraria.Star.position
Vector2 position
Definition
Star.cs:9
Terraria.Star.fadeIn
float fadeIn
Definition
Star.cs:37
Terraria.Star.twinkle
float twinkle
Definition
Star.cs:17
Terraria.Star.starFallCount
static int starFallCount
Definition
Star.cs:35
Terraria.Star.dayCheck
static bool dayCheck
Definition
Star.cs:31
Terraria.Star.UpdateStars
static void UpdateStars()
Definition
Star.cs:233
Terraria.Star.fallTime
int fallTime
Definition
Star.cs:29
Terraria.Star.StarFall
static void StarFall(float positionX)
Definition
Star.cs:60
Terraria.Star.fallSpeed
Vector2 fallSpeed
Definition
Star.cs:27
Terraria.Star.falling
bool falling
Definition
Star.cs:23
Terraria.Star.rotationSpeed
float rotationSpeed
Definition
Star.cs:21
Terraria.Star.rotation
float rotation
Definition
Star.cs:13
Terraria.Star.type
int type
Definition
Star.cs:15
Terraria.Star
Definition
Star.cs:8
Microsoft.Xna.Framework
Definition
AlphaTestEffect.cs:1
System.ExceptionArgument.s
@ s
System
Definition
BlockingCollection.cs:8
Terraria.Utilities
Definition
ExtensionFilter.cs:1
Terraria
Definition
Achievement.cs:7
Microsoft.Xna.Framework.Vector2.Length
float Length()
Definition
Vector2.cs:80
Microsoft.Xna.Framework.Vector2.Y
float Y
Definition
Vector2.cs:17
Microsoft.Xna.Framework.Vector2
Definition
Vector2.cs:12
Terraria.Utilities.FastRandom.Next
int Next(int max)
Definition
FastRandom.cs:63
Terraria.Utilities.FastRandom.CreateWithRandomSeed
static FastRandom CreateWithRandomSeed()
Definition
FastRandom.cs:37
Terraria.Utilities.FastRandom
Definition
FastRandom.cs:6
source
Terraria
Star.cs
Generated by
1.10.0