public static void addCloud()
{
if (Main.netMode == 2)
return;
int index1 = -1;
for (int index2 = 0; index2 < 200; ++index2)
{
if (!Main.cloud[index2].active)
{
index1 = index2;
break;
}
}
if (index1 < 0)
return;
Main.cloud[index1].kill = false;
Main.cloud[index1].rSpeed = 0.0f;
Main.cloud[index1].sSpeed = 0.0f;
Main.cloud[index1].scale = rand.Next(70, 131) * 0.01f;
Main.cloud[index1].rotation = rand.Next(-10, 11) * 0.01f;
Main.cloud[index1].width = (int)(Main.cloudTexture[Main.cloud[index1].type].Width * (double)Main.cloud[index1].scale);
Main.cloud[index1].height = (int)(Main.cloudTexture[Main.cloud[index1].type].Height * (double)Main.cloud[index1].scale);
Main.cloud[index1].Alpha = 0.0f;
Main.cloud[index1].spriteDir = SpriteEffects.None;
if (rand.Next(2) == 0)
Main.cloud[index1].spriteDir = SpriteEffects.FlipHorizontally;
float num1 = Main.windSpeed;
if (!Main.gameMenu)
num1 = Main.windSpeed - Main.player[Main.myPlayer].velocity.X * 0.1f;
int num2 = 0;
int num3 = 0;
if (num1 > 0.0)
num2 -= 200;
if (num1 < 0.0)
num3 += 200;
int num4 = 300;
float num5 = WorldGen.genRand.Next(num2 - num4, Main.screenWidth + num3 + num4);
Main.cloud[index1].Alpha = 0.0f;
Main.cloud[index1].position.Y = rand.Next((int)(-Main.screenHeight * 0.25), (int)(Main.screenHeight * 0.25));
Main.cloud[index1].position.Y -= rand.Next((int)(Main.screenHeight * 0.150000005960464));
Main.cloud[index1].position.Y -= rand.Next((int)(Main.screenHeight * 0.150000005960464));
Main.cloud[index1].type = rand.Next(4);
if (Main.rand == null)
Main.rand = new Random();
if (Main.cloudAlpha > 0.0 && rand.Next(4) != 0 || Main.cloudBGActive >= 1.0 && Main.rand.Next(2) == 0)
{
Main.cloud[index1].type = rand.Next(18, 22);
if (Main.cloud[index1].scale >= 1.15)
Main.cloud[index1].position.Y -= 150f;
if (Main.cloud[index1].scale >= 1.0)
Main.cloud[index1].position.Y -= 150f;
}
else if ((Main.cloudBGActive <= 0.0 && Main.cloudAlpha == 0.0 && (Main.cloud[index1].scale < 1.0 && Main.cloud[index1].position.Y < -Main.screenHeight * 0.200000002980232) || Main.cloud[index1].position.Y < -Main.screenHeight * 0.200000002980232) && Main.numClouds < 50.0)
Main.cloud[index1].type = rand.Next(9, 14);
else if ((Main.cloud[index1].scale < 1.15 && Main.cloud[index1].position.Y < -Main.screenHeight * 0.300000011920929 || Main.cloud[index1].scale < 0.85 && Main.cloud[index1].position.Y < Main.screenHeight * 0.150000005960464) && (Main.numClouds > 70.0 || Main.cloudBGActive >= 1.0))
Main.cloud[index1].type = rand.Next(4, 9);
else if (Main.cloud[index1].position.Y > -Main.screenHeight * 0.150000005960464 && rand.Next(2) == 0 && Main.numClouds > 20.0)
Main.cloud[index1].type = rand.Next(14, 18);
if (Main.cloud[index1].scale > 1.2)
Main.cloud[index1].position.Y += 100f;
if (Main.cloud[index1].scale > 1.3)
Main.cloud[index1].scale = 1.3f;
if (Main.cloud[index1].scale < 0.7)
Main.cloud[index1].scale = 0.7f;
Main.cloud[index1].active = true;
Main.cloud[index1].position.X = num5;
if (Main.cloud[index1].position.X > (Main.screenWidth + 100))
Main.cloud[index1].Alpha = 1f;
if (Main.cloud[index1].position.X + Main.cloudTexture[Main.cloud[index1].type].Width * (double)Main.cloud[index1].scale < -100.0)
Main.cloud[index1].Alpha = 1f;
Rectangle rectangle1 = new Rectangle((int)Main.cloud[index1].position.X, (int)Main.cloud[index1].position.Y, Main.cloud[index1].width, Main.cloud[index1].height);
for (int index2 = 0; index2 < 200; ++index2)
{
if (index1 != index2 && Main.cloud[index2].active)
{
Rectangle rectangle2 = new Rectangle((int)Main.cloud[index2].position.X, (int)Main.cloud[index2].position.Y, Main.cloud[index2].width, Main.cloud[index2].height);
if (rectangle1.Intersects(rectangle2))
Main.cloud[index1].active = false;
}
}
}