Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ snowing()

static void Terraria.Main.snowing ( )
inlinestatic

Definition at line 12079 of file Main.cs.

12080 {
12081 if (remixWorld)
12082 {
12083 return;
12084 }
12087 if (gamePaused || SceneMetrics.SnowTileCount <= 0 || (!((double)player[myPlayer].position.Y < worldSurface * 16.0) && (!remixWorld || !((double)player[myPlayer].position.Y > worldSurface * 16.0))))
12088 {
12089 return;
12090 }
12091 float num = (float)SceneMetrics.SnowTileCount / (float)SceneMetrics.SnowTileMax;
12092 num *= num;
12093 num *= num;
12094 float num2 = Camera.ScaledSize.X / (float)maxScreenW;
12095 int num3 = (int)(500f * num2);
12096 num3 = (int)((float)num3 * (1f + 2f * cloudAlpha));
12097 float num4 = 1f + 50f * cloudAlpha;
12098 bool flag = NPC.IsADeerclopsNearScreen();
12099 if (flag)
12100 {
12101 num /= 20f;
12102 num3 /= 3;
12103 }
12104 for (int i = 0; (float)i < num4; i++)
12105 {
12106 try
12107 {
12108 if (!((float)snowDust < (float)num3 * (gfxQuality / 2f + 0.5f) + (float)num3 * 0.1f))
12109 {
12110 break;
12111 }
12112 if (!(rand.NextFloat() < num))
12113 {
12114 continue;
12115 }
12116 int num5 = rand.Next((int)scaledSize.X + 1500) - 750;
12117 int num6 = (int)scaledPosition.Y - rand.Next(50);
12118 if (player[myPlayer].velocity.Y > 0f)
12119 {
12120 num6 -= (int)player[myPlayer].velocity.Y;
12121 }
12122 if (rand.Next(5) == 0)
12123 {
12124 num5 = rand.Next(500) - 500;
12125 }
12126 else if (rand.Next(5) == 0)
12127 {
12128 num5 = rand.Next(500) + (int)scaledSize.X;
12129 }
12130 if (num5 < 0 || (float)num5 > scaledSize.X)
12131 {
12132 num6 += rand.Next((int)((double)scaledSize.Y * 0.8)) + (int)((double)scaledSize.Y * 0.1);
12133 }
12134 num5 += (int)scaledPosition.X;
12135 int num7 = num5 / 16;
12136 int num8 = num6 / 16;
12137 if (WorldGen.InWorld(num7, num8) && tile[num7, num8] != null && !tile[num7, num8].nactive() && tile[num7, num8].wall == 0)
12138 {
12139 int num9 = Dust.NewDust(new Vector2(num5, num6), 10, 10, 76);
12140 dust[num9].scale += cloudAlpha * 0.2f;
12141 dust[num9].velocity.Y = 3f + (float)rand.Next(30) * 0.1f;
12142 dust[num9].velocity.Y *= dust[num9].scale;
12143 if (!raining)
12144 {
12145 dust[num9].velocity.X = windSpeedCurrent + (float)rand.Next(-10, 10) * 0.1f;
12146 dust[num9].velocity.X += windSpeedCurrent * 15f;
12147 }
12148 else
12149 {
12150 dust[num9].velocity.X = (float)Math.Sqrt(Math.Abs(windSpeedCurrent)) * (float)Math.Sign(windSpeedCurrent) * (cloudAlpha + 0.5f) * 10f + rand.NextFloat() * 0.2f - 0.1f;
12151 dust[num9].velocity.Y *= 0.5f;
12152 }
12153 dust[num9].velocity.Y *= 1f + 0.3f * cloudAlpha;
12154 dust[num9].scale += cloudAlpha * 0.2f;
12155 if (flag)
12156 {
12157 dust[num9].scale -= 0.5f;
12158 }
12159 dust[num9].velocity *= 1f + cloudAlpha * 0.5f;
12160 }
12161 continue;
12162 }
12163 catch
12164 {
12165 }
12166 }
12167 }
static double Sqrt(double d)
static double Abs(double value)
static int Sign(decimal value)
Definition Math.cs:1202
static SceneMetrics SceneMetrics
Definition Main.cs:1344
static float windSpeedCurrent
Definition Main.cs:1360
static bool raining
Definition Main.cs:1310
static float cloudAlpha
Definition Main.cs:1302
static double worldSurface
Definition Main.cs:1272
static int myPlayer
Definition Main.cs:1801
static float gfxQuality
Definition Main.cs:1056
static int snowDust
Definition Main.cs:696
static int maxScreenW
Definition Main.cs:750
static Tile[,] tile
Definition Main.cs:1675
static UnifiedRandom rand
Definition Main.cs:1387
static bool gamePaused
Definition Main.cs:1072
static Player[] player
Definition Main.cs:1803
static bool remixWorld
Definition Main.cs:349
static Dust[] dust
Definition Main.cs:1677

References System.Math.Abs(), Terraria.Main.cloudAlpha, Terraria.Main.dust, Terraria.Main.gamePaused, Terraria.Main.gfxQuality, System.Text.RegularExpressions.i, Terraria.WorldGen.InWorld(), Terraria.NPC.IsADeerclopsNearScreen(), Terraria.Main.maxScreenW, Terraria.Main.myPlayer, Terraria.Dust.NewDust(), Terraria.Main.player, Terraria.Main.raining, Terraria.Main.rand, Terraria.Main.remixWorld, Terraria.Graphics.Camera.ScaledPosition, Terraria.Graphics.Camera.ScaledSize, System.Math.Sign(), Terraria.Main.snowDust, Terraria.SceneMetrics.SnowTileCount, Terraria.SceneMetrics.SnowTileMax, System.Math.Sqrt(), Terraria.Main.tile, Microsoft.Xna.Framework.Graphics.Vector2, Terraria.Main.windSpeedCurrent, and Terraria.Main.worldSurface.

Referenced by Terraria.Main.DoUpdate().