Version 1.2.0.3.1
Decompiled with IlSpy Fixes Source Code
This commit is contained in:
parent
fd93a0ee5e
commit
0462173018
38 changed files with 243391 additions and 0 deletions
123
Terraria/Rain.cs
Normal file
123
Terraria/Rain.cs
Normal file
|
@ -0,0 +1,123 @@
|
|||
using Microsoft.Xna.Framework;
|
||||
using System;
|
||||
namespace Terraria
|
||||
{
|
||||
public class Rain
|
||||
{
|
||||
public Vector2 position;
|
||||
public Vector2 velocity;
|
||||
public float scale;
|
||||
public int alpha;
|
||||
public bool active;
|
||||
public byte type;
|
||||
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;
|
||||
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++;
|
||||
}
|
||||
}
|
||||
public void Update()
|
||||
{
|
||||
this.position += this.velocity;
|
||||
if (Collision.SolidCollision(this.position, 2, 2) || this.position.Y > Main.screenPosition.Y + (float)Main.screenHeight + 100f || Collision.WetCollision(this.position, 2, 2))
|
||||
{
|
||||
this.active = false;
|
||||
if ((float)Main.rand.Next(100) < Main.gfxQuality * 100f)
|
||||
{
|
||||
int num = Dust.NewDust(this.position - this.velocity, 2, 2, 154, 0f, 0f, 0, default(Color), 1f);
|
||||
Dust expr_C3_cp_0 = Main.dust[num];
|
||||
expr_C3_cp_0.position.X = expr_C3_cp_0.position.X - 2f;
|
||||
Main.dust[num].alpha = 38;
|
||||
Main.dust[num].velocity *= 0.1f;
|
||||
Main.dust[num].velocity += -this.velocity * 0.025f;
|
||||
Main.dust[num].scale = 0.75f;
|
||||
}
|
||||
}
|
||||
}
|
||||
public static int NewRain(Vector2 Position, Vector2 Velocity)
|
||||
{
|
||||
int num = -1;
|
||||
int num2 = (int)((float)Main.maxRain * Main.cloudAlpha);
|
||||
if (num2 > Main.maxRain)
|
||||
{
|
||||
num2 = Main.maxRain;
|
||||
}
|
||||
float num3 = (1f + Main.gfxQuality) / 2f;
|
||||
if ((double)num3 < 0.9)
|
||||
{
|
||||
num2 = (int)((float)num2 * num3);
|
||||
}
|
||||
float num4 = (float)(800 - Main.snowTiles);
|
||||
if (num4 < 0f)
|
||||
{
|
||||
num4 = 0f;
|
||||
}
|
||||
num4 /= 800f;
|
||||
num2 = (int)((float)num2 * num4);
|
||||
for (int i = 0; i < num2; i++)
|
||||
{
|
||||
if (!Main.rain[i].active)
|
||||
{
|
||||
num = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (num == -1)
|
||||
{
|
||||
return Main.maxRain;
|
||||
}
|
||||
Main.rain[num].active = true;
|
||||
Main.rain[num].position = Position;
|
||||
Main.rain[num].scale = 1f + (float)Main.rand.Next(-20, 21) * 0.01f;
|
||||
Main.rain[num].velocity = Velocity * Main.rain[num].scale;
|
||||
Main.rain[num].type = (byte)Main.rand.Next(3);
|
||||
return num;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue