Initial Commit
This commit is contained in:
commit
5dc0cf584c
3351 changed files with 51753 additions and 0 deletions
415
Terraria/Dust.cs
Normal file
415
Terraria/Dust.cs
Normal file
|
|
@ -0,0 +1,415 @@
|
|||
namespace Terraria
|
||||
{
|
||||
using Microsoft.Xna.Framework;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
public class Dust
|
||||
{
|
||||
public bool active;
|
||||
public int alpha;
|
||||
public Color color;
|
||||
public Rectangle frame;
|
||||
public bool noGravity;
|
||||
public bool noLight;
|
||||
public Vector2 position;
|
||||
public float rotation;
|
||||
public float scale;
|
||||
public int type;
|
||||
public Vector2 velocity;
|
||||
|
||||
public Color GetAlpha(Color newColor)
|
||||
{
|
||||
int num;
|
||||
int num2;
|
||||
int num3;
|
||||
if ((((this.type == 15) || (this.type == 20)) || ((this.type == 0x15) || (this.type == 0x1d))) || ((this.type == 0x23) || (this.type == 0x29)))
|
||||
{
|
||||
num = newColor.R - (this.alpha / 3);
|
||||
num2 = newColor.G - (this.alpha / 3);
|
||||
num3 = newColor.B - (this.alpha / 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
num = newColor.R - this.alpha;
|
||||
num2 = newColor.G - this.alpha;
|
||||
num3 = newColor.B - this.alpha;
|
||||
}
|
||||
int a = newColor.A - this.alpha;
|
||||
if (a < 0)
|
||||
{
|
||||
a = 0;
|
||||
}
|
||||
if (a > 0xff)
|
||||
{
|
||||
a = 0xff;
|
||||
}
|
||||
return new Color(num, num2, num3, a);
|
||||
}
|
||||
|
||||
public Color GetColor(Color newColor)
|
||||
{
|
||||
int r = this.color.R - (0xff - newColor.R);
|
||||
int g = this.color.G - (0xff - newColor.G);
|
||||
int b = this.color.B - (0xff - newColor.B);
|
||||
int a = this.color.A - (0xff - newColor.A);
|
||||
if (r < 0)
|
||||
{
|
||||
r = 0;
|
||||
}
|
||||
if (r > 0xff)
|
||||
{
|
||||
r = 0xff;
|
||||
}
|
||||
if (g < 0)
|
||||
{
|
||||
g = 0;
|
||||
}
|
||||
if (g > 0xff)
|
||||
{
|
||||
g = 0xff;
|
||||
}
|
||||
if (b < 0)
|
||||
{
|
||||
b = 0;
|
||||
}
|
||||
if (b > 0xff)
|
||||
{
|
||||
b = 0xff;
|
||||
}
|
||||
if (a < 0)
|
||||
{
|
||||
a = 0;
|
||||
}
|
||||
if (a > 0xff)
|
||||
{
|
||||
a = 0xff;
|
||||
}
|
||||
return new Color(r, g, b, a);
|
||||
}
|
||||
|
||||
public static int NewDust(Vector2 Position, int Width, int Height, int Type, float SpeedX = 0f, float SpeedY = 0f, int Alpha = 0, Color newColor = new Color(), float Scale = 1f)
|
||||
{
|
||||
if (WorldGen.gen)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (Main.netMode == 2)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
int num = 0;
|
||||
for (int i = 0; i < 0x7d0; i++)
|
||||
{
|
||||
if (!Main.dust[i].active)
|
||||
{
|
||||
num = i;
|
||||
Main.dust[i].active = true;
|
||||
Main.dust[i].type = Type;
|
||||
Main.dust[i].noGravity = false;
|
||||
Main.dust[i].color = newColor;
|
||||
Main.dust[i].alpha = Alpha;
|
||||
Main.dust[i].position.X = (Position.X + Main.rand.Next(Width - 4)) + 4f;
|
||||
Main.dust[i].position.Y = (Position.Y + Main.rand.Next(Height - 4)) + 4f;
|
||||
Main.dust[i].velocity.X = (Main.rand.Next(-20, 0x15) * 0.1f) + SpeedX;
|
||||
Main.dust[i].velocity.Y = (Main.rand.Next(-20, 0x15) * 0.1f) + SpeedY;
|
||||
Main.dust[i].frame.X = 10 * Type;
|
||||
Main.dust[i].frame.Y = 10 * Main.rand.Next(3);
|
||||
Main.dust[i].frame.Width = 8;
|
||||
Main.dust[i].frame.Height = 8;
|
||||
Main.dust[i].rotation = 0f;
|
||||
Main.dust[i].scale = 1f + (Main.rand.Next(-20, 0x15) * 0.01f);
|
||||
Dust dust1 = Main.dust[i];
|
||||
dust1.scale *= Scale;
|
||||
Main.dust[i].noLight = false;
|
||||
if ((Main.dust[i].type == 6) || (Main.dust[i].type == 0x1d))
|
||||
{
|
||||
Main.dust[i].velocity.Y = Main.rand.Next(-10, 6) * 0.1f;
|
||||
Main.dust[i].velocity.X *= 0.3f;
|
||||
Dust dust2 = Main.dust[i];
|
||||
dust2.scale *= 0.7f;
|
||||
}
|
||||
if (Main.dust[i].type == 0x21)
|
||||
{
|
||||
Main.dust[i].alpha = 170;
|
||||
Dust dust3 = Main.dust[i];
|
||||
dust3.velocity = (Vector2) (dust3.velocity * 0.5f);
|
||||
Main.dust[i].velocity.Y++;
|
||||
}
|
||||
if (Main.dust[i].type == 0x29)
|
||||
{
|
||||
Dust dust4 = Main.dust[i];
|
||||
dust4.velocity = (Vector2) (dust4.velocity * 0f);
|
||||
}
|
||||
if ((Main.dust[i].type == 0x22) || (Main.dust[i].type == 0x23))
|
||||
{
|
||||
Dust dust5 = Main.dust[i];
|
||||
dust5.velocity = (Vector2) (dust5.velocity * 0.1f);
|
||||
Main.dust[i].velocity.Y = -0.5f;
|
||||
if ((Main.dust[i].type == 0x22) && !Collision.WetCollision(new Vector2(Main.dust[i].position.X, Main.dust[i].position.Y - 8f), 4, 4))
|
||||
{
|
||||
Main.dust[i].active = false;
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
public static void UpdateDust()
|
||||
{
|
||||
for (int i = 0; i < 0x7d0; i++)
|
||||
{
|
||||
if (Main.dust[i].active)
|
||||
{
|
||||
Dust dust1 = Main.dust[i];
|
||||
dust1.position += Main.dust[i].velocity;
|
||||
if ((Main.dust[i].type == 6) || (Main.dust[i].type == 0x1d))
|
||||
{
|
||||
if (!Main.dust[i].noGravity)
|
||||
{
|
||||
Main.dust[i].velocity.Y += 0.05f;
|
||||
}
|
||||
if (!Main.dust[i].noLight)
|
||||
{
|
||||
float lightness = Main.dust[i].scale * 1.6f;
|
||||
if (Main.dust[i].type == 0x1d)
|
||||
{
|
||||
lightness *= 0.3f;
|
||||
}
|
||||
if (lightness > 1f)
|
||||
{
|
||||
lightness = 1f;
|
||||
}
|
||||
Lighting.addLight((int) (Main.dust[i].position.X / 16f), (int) (Main.dust[i].position.Y / 16f), lightness);
|
||||
}
|
||||
}
|
||||
else if (((Main.dust[i].type == 14) || (Main.dust[i].type == 0x10)) || (Main.dust[i].type == 0x1f))
|
||||
{
|
||||
Main.dust[i].velocity.Y *= 0.98f;
|
||||
Main.dust[i].velocity.X *= 0.98f;
|
||||
}
|
||||
else if (Main.dust[i].type == 0x20)
|
||||
{
|
||||
Dust dust2 = Main.dust[i];
|
||||
dust2.scale -= 0.01f;
|
||||
Main.dust[i].velocity.X *= 0.96f;
|
||||
Main.dust[i].velocity.Y += 0.1f;
|
||||
}
|
||||
else if (Main.dust[i].type == 15)
|
||||
{
|
||||
Main.dust[i].velocity.Y *= 0.98f;
|
||||
Main.dust[i].velocity.X *= 0.98f;
|
||||
float scale = Main.dust[i].scale;
|
||||
if (scale > 1f)
|
||||
{
|
||||
scale = 1f;
|
||||
}
|
||||
Lighting.addLight((int) (Main.dust[i].position.X / 16f), (int) (Main.dust[i].position.Y / 16f), scale);
|
||||
}
|
||||
else if ((Main.dust[i].type == 20) || (Main.dust[i].type == 0x15))
|
||||
{
|
||||
Dust dust3 = Main.dust[i];
|
||||
dust3.scale += 0.005f;
|
||||
Main.dust[i].velocity.Y *= 0.94f;
|
||||
Main.dust[i].velocity.X *= 0.94f;
|
||||
float num4 = Main.dust[i].scale * 0.8f;
|
||||
if (Main.dust[i].type == 0x15)
|
||||
{
|
||||
num4 = Main.dust[i].scale * 0.4f;
|
||||
}
|
||||
if (num4 > 1f)
|
||||
{
|
||||
num4 = 1f;
|
||||
}
|
||||
Lighting.addLight((int) (Main.dust[i].position.X / 16f), (int) (Main.dust[i].position.Y / 16f), num4);
|
||||
}
|
||||
else if (Main.dust[i].type == 0x1b)
|
||||
{
|
||||
Dust dust4 = Main.dust[i];
|
||||
dust4.velocity = (Vector2) (dust4.velocity * 0.94f);
|
||||
Dust dust5 = Main.dust[i];
|
||||
dust5.scale += 0.002f;
|
||||
float num5 = Main.dust[i].scale;
|
||||
if (num5 > 1f)
|
||||
{
|
||||
num5 = 1f;
|
||||
}
|
||||
Lighting.addLight((int) (Main.dust[i].position.X / 16f), (int) (Main.dust[i].position.Y / 16f), num5);
|
||||
}
|
||||
else if (!Main.dust[i].noGravity && (Main.dust[i].type != 0x29))
|
||||
{
|
||||
Main.dust[i].velocity.Y += 0.1f;
|
||||
}
|
||||
if ((Main.dust[i].type == 5) && Main.dust[i].noGravity)
|
||||
{
|
||||
Dust dust6 = Main.dust[i];
|
||||
dust6.scale -= 0.04f;
|
||||
}
|
||||
if (Main.dust[i].type == 0x21)
|
||||
{
|
||||
if (Collision.WetCollision(new Vector2(Main.dust[i].position.X, Main.dust[i].position.Y), 4, 4))
|
||||
{
|
||||
Dust dust7 = Main.dust[i];
|
||||
dust7.alpha += 20;
|
||||
Dust dust8 = Main.dust[i];
|
||||
dust8.scale -= 0.1f;
|
||||
}
|
||||
Dust dust9 = Main.dust[i];
|
||||
dust9.alpha += 2;
|
||||
Dust dust10 = Main.dust[i];
|
||||
dust10.scale -= 0.005f;
|
||||
if (Main.dust[i].alpha > 0xff)
|
||||
{
|
||||
Main.dust[i].scale = 0f;
|
||||
}
|
||||
Main.dust[i].velocity.X *= 0.93f;
|
||||
if (Main.dust[i].velocity.Y > 4f)
|
||||
{
|
||||
Main.dust[i].velocity.Y = 4f;
|
||||
}
|
||||
if (Main.dust[i].noGravity)
|
||||
{
|
||||
if (Main.dust[i].velocity.X < 0f)
|
||||
{
|
||||
Dust dust11 = Main.dust[i];
|
||||
dust11.rotation -= 0.2f;
|
||||
}
|
||||
else
|
||||
{
|
||||
Dust dust12 = Main.dust[i];
|
||||
dust12.rotation += 0.2f;
|
||||
}
|
||||
Dust dust13 = Main.dust[i];
|
||||
dust13.scale += 0.03f;
|
||||
Main.dust[i].velocity.X *= 1.05f;
|
||||
Main.dust[i].velocity.Y += 0.15f;
|
||||
}
|
||||
}
|
||||
if ((Main.dust[i].type == 0x23) && Main.dust[i].noGravity)
|
||||
{
|
||||
Dust dust14 = Main.dust[i];
|
||||
dust14.scale += 0.02f;
|
||||
if (Main.dust[i].scale < 1f)
|
||||
{
|
||||
Main.dust[i].velocity.Y += 0.075f;
|
||||
}
|
||||
Main.dust[i].velocity.X *= 1.08f;
|
||||
if (Main.dust[i].velocity.X > 0f)
|
||||
{
|
||||
Dust dust15 = Main.dust[i];
|
||||
dust15.rotation += 0.01f;
|
||||
}
|
||||
else
|
||||
{
|
||||
Dust dust16 = Main.dust[i];
|
||||
dust16.rotation -= 0.01f;
|
||||
}
|
||||
}
|
||||
else if ((Main.dust[i].type == 0x22) || (Main.dust[i].type == 0x23))
|
||||
{
|
||||
if (!Collision.WetCollision(new Vector2(Main.dust[i].position.X, Main.dust[i].position.Y - 8f), 4, 4))
|
||||
{
|
||||
Main.dust[i].scale = 0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
Dust dust17 = Main.dust[i];
|
||||
dust17.alpha += Main.rand.Next(2);
|
||||
if (Main.dust[i].alpha > 0xff)
|
||||
{
|
||||
Main.dust[i].scale = 0f;
|
||||
}
|
||||
Main.dust[i].velocity.Y = -0.5f;
|
||||
if (Main.dust[i].type == 0x22)
|
||||
{
|
||||
Dust dust18 = Main.dust[i];
|
||||
dust18.scale += 0.005f;
|
||||
}
|
||||
else
|
||||
{
|
||||
Dust dust19 = Main.dust[i];
|
||||
dust19.alpha++;
|
||||
Dust dust20 = Main.dust[i];
|
||||
dust20.scale -= 0.01f;
|
||||
Main.dust[i].velocity.Y = -0.2f;
|
||||
}
|
||||
Main.dust[i].velocity.X += Main.rand.Next(-10, 10) * 0.002f;
|
||||
if (Main.dust[i].velocity.X < -0.25)
|
||||
{
|
||||
Main.dust[i].velocity.X = -0.25f;
|
||||
}
|
||||
if (Main.dust[i].velocity.X > 0.25)
|
||||
{
|
||||
Main.dust[i].velocity.X = 0.25f;
|
||||
}
|
||||
}
|
||||
if (Main.dust[i].type == 0x23)
|
||||
{
|
||||
float num6 = Main.dust[i].scale * 1.6f;
|
||||
if (num6 > 1f)
|
||||
{
|
||||
num6 = 1f;
|
||||
}
|
||||
Lighting.addLight((int) (Main.dust[i].position.X / 16f), (int) (Main.dust[i].position.Y / 16f), num6);
|
||||
}
|
||||
}
|
||||
if (Main.dust[i].type == 0x29)
|
||||
{
|
||||
Main.dust[i].velocity.X += Main.rand.Next(-10, 11) * 0.01f;
|
||||
Main.dust[i].velocity.Y += Main.rand.Next(-10, 11) * 0.01f;
|
||||
if (Main.dust[i].velocity.X > 0.75)
|
||||
{
|
||||
Main.dust[i].velocity.X = 0.75f;
|
||||
}
|
||||
if (Main.dust[i].velocity.X < -0.75)
|
||||
{
|
||||
Main.dust[i].velocity.X = -0.75f;
|
||||
}
|
||||
if (Main.dust[i].velocity.Y > 0.75)
|
||||
{
|
||||
Main.dust[i].velocity.Y = 0.75f;
|
||||
}
|
||||
if (Main.dust[i].velocity.Y < -0.75)
|
||||
{
|
||||
Main.dust[i].velocity.Y = -0.75f;
|
||||
}
|
||||
Dust dust21 = Main.dust[i];
|
||||
dust21.scale += 0.007f;
|
||||
float num7 = Main.dust[i].scale * 0.7f;
|
||||
if (num7 > 1f)
|
||||
{
|
||||
num7 = 1f;
|
||||
}
|
||||
Lighting.addLight((int) (Main.dust[i].position.X / 16f), (int) (Main.dust[i].position.Y / 16f), num7);
|
||||
}
|
||||
else
|
||||
{
|
||||
Main.dust[i].velocity.X *= 0.99f;
|
||||
}
|
||||
Dust dust22 = Main.dust[i];
|
||||
dust22.rotation += Main.dust[i].velocity.X * 0.5f;
|
||||
Dust dust23 = Main.dust[i];
|
||||
dust23.scale -= 0.01f;
|
||||
if (Main.dust[i].noGravity)
|
||||
{
|
||||
Dust dust24 = Main.dust[i];
|
||||
dust24.velocity = (Vector2) (dust24.velocity * 0.92f);
|
||||
Dust dust25 = Main.dust[i];
|
||||
dust25.scale -= 0.04f;
|
||||
}
|
||||
if (Main.dust[i].position.Y > (Main.screenPosition.Y + Main.screenHeight))
|
||||
{
|
||||
Main.dust[i].active = false;
|
||||
}
|
||||
if (Main.dust[i].scale < 0.1)
|
||||
{
|
||||
Main.dust[i].active = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue