Esempio n. 1
0
        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     = (float)Cloud.rand.Next(70, 131) * 0.01f;
            Main.cloud[index1].rotation  = (float)Cloud.rand.Next(-10, 11) * 0.01f;
            Main.cloud[index1].width     = (int)((double)TextureAssets.Cloud[Main.cloud[index1].type].Width() * (double)Main.cloud[index1].scale);
            Main.cloud[index1].height    = (int)((double)TextureAssets.Cloud[Main.cloud[index1].type].Height() * (double)Main.cloud[index1].scale);
            Main.cloud[index1].Alpha     = 0.0f;
            Main.cloud[index1].spriteDir = SpriteEffects.None;
            if (Cloud.rand.Next(2) == 0)
            {
                Main.cloud[index1].spriteDir = SpriteEffects.FlipHorizontally;
            }
            float num1 = Main.windSpeedCurrent;

            if (!Main.gameMenu)
            {
                num1 = Main.windSpeedCurrent - Main.player[Main.myPlayer].velocity.X * 0.1f;
            }
            int num2 = 0;
            int num3 = 0;

            if ((double)num1 > 0.0)
            {
                num2 -= 200;
            }
            if ((double)num1 < 0.0)
            {
                num3 += 200;
            }
            int   num4 = 300;
            float num5 = (float)WorldGen.genRand.Next(num2 - num4, Main.screenWidth + num3 + num4);

            Main.cloud[index1].Alpha      = 0.0f;
            Main.cloud[index1].position.Y = (float)Cloud.rand.Next((int)((double)-Main.screenHeight * 0.25), (int)((double)Main.screenHeight * 0.150000005960464));
            if (Main.rand.Next(3) == 0)
            {
                Main.cloud[index1].position.Y -= (float)Cloud.rand.Next((int)((double)Main.screenHeight * 0.100000001490116));
            }
            Main.cloud[index1].type = Cloud.rand.Next(4);
            if ((double)Main.cloudAlpha > 0.0 && Cloud.rand.Next(4) != 0 || (double)Main.cloudBGActive >= 1.0 && Cloud.rand.Next(2) == 0)
            {
                Main.cloud[index1].type = Cloud.rand.Next(18, 22);
                if ((double)Main.cloud[index1].scale >= 1.15)
                {
                    Main.cloud[index1].position.Y -= 150f;
                }
                if ((double)Main.cloud[index1].scale >= 1.0)
                {
                    Main.cloud[index1].position.Y -= 150f;
                }
            }
            else if ((double)Main.cloudBGActive <= 0.0 && (double)Main.cloudAlpha == 0.0 && ((double)Main.cloud[index1].scale < 1.0 && (double)Main.cloud[index1].position.Y < (double)-Main.screenHeight * 0.150000005960464) && (double)Main.numClouds <= 80.0)
            {
                Main.cloud[index1].type = Cloud.rand.Next(9, 14);
            }
            else if (((double)Main.cloud[index1].scale < 1.15 && (double)Main.cloud[index1].position.Y < (double)-Main.screenHeight * 0.300000011920929 || (double)Main.cloud[index1].scale < 0.85 && (double)Main.cloud[index1].position.Y < (double)Main.screenHeight * 0.150000005960464) && ((double)Main.numClouds > 70.0 || (double)Main.cloudBGActive >= 1.0))
            {
                Main.cloud[index1].type = Cloud.rand.Next(4, 9);
            }
            else if ((double)Main.cloud[index1].position.Y > (double)-Main.screenHeight * 0.150000005960464 && Cloud.rand.Next(2) == 0 && (double)Main.numClouds > 20.0)
            {
                Main.cloud[index1].type = Cloud.rand.Next(14, 18);
            }
            if (Cloud.rand.Next(150) == 0)
            {
                Main.cloud[index1].type = Cloud.RollRareCloud();
            }
            if ((double)Main.cloud[index1].scale > 1.2)
            {
                Main.cloud[index1].position.Y += 100f;
            }
            if ((double)Main.cloud[index1].scale > 1.3)
            {
                Main.cloud[index1].scale = 1.3f;
            }
            if ((double)Main.cloud[index1].scale < 0.7)
            {
                Main.cloud[index1].scale = 0.7f;
            }
            Main.cloud[index1].active     = true;
            Main.cloud[index1].position.X = num5;
            if ((double)Main.cloud[index1].position.X > (double)(Main.screenWidth + 400))
            {
                Main.cloud[index1].Alpha = 1f;
            }
            if ((double)Main.cloud[index1].position.X + (double)TextureAssets.Cloud[Main.cloud[index1].type].Width() * (double)Main.cloud[index1].scale < -400.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;
                    }
                }
            }
        }