TModLoader v1.4.4.9
TModLoader source code documentation
Loading...
Searching...
No Matches

◆ addCloud()

static void Terraria.Cloud.addCloud ( )
inlinestatic

Definition at line 57 of file Cloud.cs.

58 {
59 //IL_0129: Unknown result type (might be due to invalid IL or missing references)
60 //IL_0143: Unknown result type (might be due to invalid IL or missing references)
61 //IL_06ac: Unknown result type (might be due to invalid IL or missing references)
62 if (Main.netMode == 2)
63 {
64 return;
65 }
66 int num = -1;
67 for (int i = 0; i < 200; i++)
68 {
69 if (!Main.cloud[i].active)
70 {
71 num = i;
72 break;
73 }
74 }
75 if (num < 0)
76 {
77 return;
78 }
79 Main.cloud[num].kill = false;
80 Main.cloud[num].rSpeed = 0f;
81 Main.cloud[num].sSpeed = 0f;
82 Main.cloud[num].scale = (float)rand.Next(70, 131) * 0.01f;
83 Main.cloud[num].rotation = (float)rand.Next(-10, 11) * 0.01f;
84 Main.cloud[num].width = (int)((float)TextureAssets.Cloud[Main.cloud[num].type].Width() * Main.cloud[num].scale);
85 Main.cloud[num].height = (int)((float)TextureAssets.Cloud[Main.cloud[num].type].Height() * Main.cloud[num].scale);
86 Main.cloud[num].Alpha = 0f;
87 Main.cloud[num].spriteDir = (SpriteEffects)0;
88 if (rand.Next(2) == 0)
89 {
90 Main.cloud[num].spriteDir = (SpriteEffects)1;
91 }
92 float num2 = Main.windSpeedCurrent;
93 if (!Main.gameMenu)
94 {
95 num2 = Main.windSpeedCurrent - Main.player[Main.myPlayer].velocity.X * 0.1f;
96 }
97 int num3 = 0;
98 int num4 = 0;
99 if (num2 > 0f)
100 {
101 num3 -= 200;
102 }
103 if (num2 < 0f)
104 {
105 num4 += 200;
106 }
107 int num5 = 300;
108 float x = rand.Next(num3 - num5, Main.screenWidth + num4 + num5);
109 Main.cloud[num].Alpha = 0f;
110 Main.cloud[num].position.Y = rand.Next((int)((float)(-Main.screenHeight) * 0.25f), (int)((float)Main.screenHeight * 0.15f));
111 if (rand.Next(3) == 0)
112 {
113 Main.cloud[num].position.Y -= rand.Next((int)((float)Main.screenHeight * 0.1f));
114 }
115 Main.cloud[num].type = rand.Next(4);
116 if ((Main.cloudAlpha > 0f && rand.Next(4) != 0) || (Main.cloudBGActive >= 1f && rand.Next(2) == 0))
117 {
118 Main.cloud[num].type = rand.Next(18, 22);
119 if ((double)Main.cloud[num].scale >= 1.15)
120 {
121 Main.cloud[num].position.Y -= 150f;
122 }
123 if (Main.cloud[num].scale >= 1f)
124 {
125 Main.cloud[num].position.Y -= 150f;
126 }
127 }
128 else if (Main.cloudBGActive <= 0f && Main.cloudAlpha == 0f && Main.cloud[num].scale < 1f && Main.cloud[num].position.Y < (float)(-Main.screenHeight) * 0.15f && (double)Main.numClouds <= 80.0)
129 {
130 Main.cloud[num].type = rand.Next(9, 14);
131 }
132 else if ((((double)Main.cloud[num].scale < 1.15 && Main.cloud[num].position.Y < (float)(-Main.screenHeight) * 0.3f) || ((double)Main.cloud[num].scale < 0.85 && Main.cloud[num].position.Y < (float)Main.screenHeight * 0.15f)) && ((double)Main.numClouds > 70.0 || Main.cloudBGActive >= 1f))
133 {
134 Main.cloud[num].type = rand.Next(4, 9);
135 }
136 else if (Main.cloud[num].position.Y > (float)(-Main.screenHeight) * 0.15f && rand.Next(2) == 0 && (double)Main.numClouds > 20.0)
137 {
138 Main.cloud[num].type = rand.Next(14, 18);
139 }
140 if (rand.Next((Main.dontStarveWorld || Main.tenthAnniversaryWorld) ? 25 : 150) == 0)
141 {
142 Main.cloud[num].type = RollRareCloud();
143 }
144 else if (Main.tenthAnniversaryWorld && rand.Next(3) == 0)
145 {
146 Main.cloud[num].type = RollRareCloud();
147 }
148 if ((double)Main.cloud[num].scale > 1.2)
149 {
150 Main.cloud[num].position.Y += 100f;
151 }
152 if ((double)Main.cloud[num].scale > 1.3)
153 {
154 Main.cloud[num].scale = 1.3f;
155 }
156 if ((double)Main.cloud[num].scale < 0.7)
157 {
158 Main.cloud[num].scale = 0.7f;
159 }
160 Main.cloud[num].active = true;
161 Main.cloud[num].position.X = x;
162 if (Main.cloud[num].position.X > (float)(Main.screenWidth + 400))
163 {
164 Main.cloud[num].Alpha = 1f;
165 }
166 if (Main.cloud[num].position.X + (float)TextureAssets.Cloud[Main.cloud[num].type].Width() * Main.cloud[num].scale < -400f)
167 {
168 Main.cloud[num].Alpha = 1f;
169 }
170 Rectangle rectangle = default(Rectangle);
171 ((Rectangle)(ref rectangle))._002Ector((int)Main.cloud[num].position.X, (int)Main.cloud[num].position.Y, Main.cloud[num].width, Main.cloud[num].height);
172 Rectangle value = default(Rectangle);
173 for (int j = 0; j < 200; j++)
174 {
175 if (num != j && Main.cloud[j].active)
176 {
177 ((Rectangle)(ref value))._002Ector((int)Main.cloud[j].position.X, (int)Main.cloud[j].position.Y, Main.cloud[j].width, Main.cloud[j].height);
178 if (((Rectangle)(ref rectangle)).Intersects(value))
179 {
180 Main.cloud[num].active = false;
181 }
182 }
183 }
184 }
static UnifiedRandom rand
Definition Cloud.cs:34
static int RollRareCloud()
Definition Cloud.cs:186
static Asset< Texture2D >[] Cloud

References Terraria.GameContent.TextureAssets.Cloud, Terraria.Main.cloud, Terraria.Main.cloudAlpha, Terraria.Main.cloudBGActive, Terraria.Main.dontStarveWorld, Terraria.Main.gameMenu, Terraria.Main.myPlayer, Terraria.Main.netMode, Terraria.Main.numClouds, Terraria.Main.player, Terraria.Cloud.rand, Terraria.Cloud.RollRareCloud(), Terraria.Main.screenHeight, Terraria.Main.screenWidth, Terraria.Main.tenthAnniversaryWorld, and Terraria.Main.windSpeedCurrent.

Referenced by Terraria.Cloud.resetClouds(), and Terraria.Cloud.UpdateClouds().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: