Version 1.2.0.3.1

Decompiled with IlSpy
Fixes Source Code
This commit is contained in:
TheVamp 2013-10-12 11:25:17 +02:00
parent fd93a0ee5e
commit 0462173018
38 changed files with 243391 additions and 0 deletions

123
Terraria/Rain.cs Normal file
View 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;
}
}
}