public static NewRain ( Vector2 Position, Vector2 Velocity ) : int | ||
Position | Vector2 | |
Velocity | Vector2 | |
Результат | 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;
}
}
// 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++; } }