Terraria.Rain.NewRain C# (CSharp) Method

NewRain() public static method

public static NewRain ( Vector2 Position, Vector2 Velocity ) : int
Position Vector2
Velocity Vector2
return int
        public static int NewRain(Vector2 Position, Vector2 Velocity)
        {
            int index1 = -1;
            int num1 = (int)((double)Main.maxRain * (double)Main.cloudAlpha);
            if (num1 > Main.maxRain)
                num1 = Main.maxRain;
            float num2 = (float)((1.0 + (double)Main.gfxQuality) / 2.0);
            if ((double)num2 < 0.9)
                num1 = (int)((double)num1 * (double)num2);
            float num3 = (float)(800 - Main.snowTiles);
            if ((double)num3 < 0.0)
                num3 = 0.0f;
            float num4 = num3 / 800f;
            int num5 = (int)((double)num1 * (double)num4);
            for (int index2 = 0; index2 < num5; ++index2)
            {
                if (!Main.rain[index2].active)
                {
                    index1 = index2;
                    break;
                }
            }
            if (index1 == -1)
                return Main.maxRain;
            Rain rain = Main.rain[index1];
            rain.active = true;
            rain.position = Position;
            rain.scale = (float)(1.0 + (double)Main.rand.Next(-20, 21) * 0.00999999977648258);
            rain.velocity = Velocity * rain.scale;
            rain.rotation = (float)Math.Atan2((double)rain.velocity.X, -(double)rain.velocity.Y);
            rain.type = (byte)Main.rand.Next(3);
            if (Main.bloodMoon)
                rain.type += (byte)3;
            return index1;
        }
    }

Usage Example

Example #1
0
        // Token: 0x060001EF RID: 495 RVA: 0x000BF614 File Offset: 0x000BD814
        public static void MakeRain()
        {
            if ((double)Main.screenPosition.Y > Main.worldSurface * 16.0)
            {
                return;
            }
            if (Main.gameMenu)
            {
                return;
            }
            float num = (float)Main.screenWidth / 1920f;

            num *= 25f;
            num *= 0.25f + 1f * Main.cloudAlpha;
            if (Filters.Scene["Sandstorm"].IsActive())
            {
                return;
            }
            int num2 = 0;

            while ((float)num2 < num)
            {
                int num3 = 600;
                if (Main.player[Main.myPlayer].velocity.Y < 0f)
                {
                    num3 += (int)(Math.Abs(Main.player[Main.myPlayer].velocity.Y) * 30f);
                }
                Vector2 vector;
                vector.X  = (float)Main.rand.Next((int)Main.screenPosition.X - num3, (int)Main.screenPosition.X + Main.screenWidth + num3);
                vector.Y  = Main.screenPosition.Y - (float)Main.rand.Next(20, 100);
                vector.X -= Main.windSpeed * 15f * 40f;
                vector.X += Main.player[Main.myPlayer].velocity.X * 40f;
                if (vector.X < 0f)
                {
                    vector.X = 0f;
                }
                if (vector.X > (float)((Main.maxTilesX - 1) * 16))
                {
                    vector.X = (float)((Main.maxTilesX - 1) * 16);
                }
                int num4 = (int)vector.X / 16;
                int num5 = (int)vector.Y / 16;
                if (num4 < 0)
                {
                    num4 = 0;
                }
                if (num4 > Main.maxTilesX - 1)
                {
                    num4 = Main.maxTilesX - 1;
                }
                if (Main.gameMenu || (!WorldGen.SolidTile(num4, num5) && Main.tile[num4, num5].wall <= 0))
                {
                    Vector2 vector2 = new Vector2(Main.windSpeed * 12f, 14f);
                    Rain.NewRain(vector, vector2);
                }
                num2++;
            }
        }
All Usage Examples Of Terraria.Rain::NewRain