Terraria.Cloud.addCloud C# (CSharp) Method

addCloud() public static method

public static addCloud ( ) : void
return void
        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;
                }
            }
        }

Usage Example

Exemplo n.º 1
0
 public static void resetClouds()
 {
     if (Main.dedServ)
     {
         return;
     }
     if (Main.cloudLimit < 10)
     {
         return;
     }
     Main.windSpeed = Main.windSpeedSet;
     for (int i = 0; i < 200; i++)
     {
         Main.cloud[i].active = false;
     }
     for (int j = 0; j < Main.numClouds; j++)
     {
         Cloud.addCloud();
         Main.cloud[j].Alpha = 1f;
     }
     for (int k = 0; k < 200; k++)
     {
         Main.cloud[k].Alpha = 1f;
     }
 }
All Usage Examples Of Terraria.Cloud::addCloud