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

311
Terraria/ItemText.cs Normal file
View file

@ -0,0 +1,311 @@
using Microsoft.Xna.Framework;
using System;
namespace Terraria
{
public class ItemText
{
public Vector2 position;
public Vector2 velocity;
public float alpha;
public int alphaDir = 1;
public string name;
public int stack;
public float scale = 1f;
public float rotation;
public Color color;
public bool active;
public int lifeTime;
public static int activeTime = 60;
public static int numActive;
public static void NewText(Item newItem, int stack)
{
if (!Main.showItemText)
{
return;
}
if (newItem.name == null || !newItem.active)
{
return;
}
if (Main.netMode == 2)
{
return;
}
for (int i = 0; i < 20; i++)
{
if (Main.itemText[i].active && Main.itemText[i].name == newItem.name)
{
string text = string.Concat(new object[]
{
newItem.name,
" (",
Main.itemText[i].stack + stack,
")"
});
string text2 = newItem.name;
if (Main.itemText[i].stack > 1)
{
object obj = text2;
text2 = string.Concat(new object[]
{
obj,
" (",
Main.itemText[i].stack,
")"
});
}
Vector2 vector = Main.fontMouseText.MeasureString(text2);
vector = Main.fontMouseText.MeasureString(text);
if (Main.itemText[i].lifeTime < 0)
{
Main.itemText[i].scale = 1f;
}
Main.itemText[i].lifeTime = 60;
Main.itemText[i].stack += stack;
Main.itemText[i].scale = 0f;
Main.itemText[i].rotation = 0f;
Main.itemText[i].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector.X * 0.5f;
Main.itemText[i].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector.Y * 0.5f;
Main.itemText[i].velocity.Y = -7f;
return;
}
}
int num = -1;
for (int j = 0; j < 20; j++)
{
if (!Main.itemText[j].active)
{
num = j;
break;
}
}
if (num == -1)
{
double num2 = (double)Main.bottomWorld;
for (int k = 0; k < 20; k++)
{
if (num2 > (double)Main.itemText[k].position.Y)
{
num = k;
num2 = (double)Main.itemText[k].position.Y;
}
}
}
if (num >= 0)
{
string text3 = newItem.AffixName();
if (stack > 1)
{
object obj2 = text3;
text3 = string.Concat(new object[]
{
obj2,
" (",
stack,
")"
});
}
Vector2 vector2 = Main.fontMouseText.MeasureString(text3);
Main.itemText[num].alpha = 1f;
Main.itemText[num].alphaDir = -1;
Main.itemText[num].active = true;
Main.itemText[num].scale = 0f;
Main.itemText[num].rotation = 0f;
Main.itemText[num].position.X = newItem.position.X + (float)newItem.width * 0.5f - vector2.X * 0.5f;
Main.itemText[num].position.Y = newItem.position.Y + (float)newItem.height * 0.25f - vector2.Y * 0.5f;
Main.itemText[num].color = Color.White;
if (newItem.rare == 1)
{
Main.itemText[num].color = new Color(150, 150, 255);
}
else
{
if (newItem.rare == 2)
{
Main.itemText[num].color = new Color(150, 255, 150);
}
else
{
if (newItem.rare == 3)
{
Main.itemText[num].color = new Color(255, 200, 150);
}
else
{
if (newItem.rare == 4)
{
Main.itemText[num].color = new Color(255, 150, 150);
}
else
{
if (newItem.rare == 5)
{
Main.itemText[num].color = new Color(255, 150, 255);
}
else
{
if (newItem.rare == -1)
{
Main.itemText[num].color = new Color(130, 130, 130);
}
else
{
if (newItem.rare == 6)
{
Main.itemText[num].color = new Color(210, 160, 255);
}
else
{
if (newItem.rare == 7)
{
Main.itemText[num].color = new Color(150, 255, 10);
}
else
{
if (newItem.rare == 8)
{
Main.itemText[num].color = new Color(255, 255, 10);
}
else
{
if (newItem.rare >= 9)
{
Main.itemText[num].color = new Color(5, 200, 255);
}
}
}
}
}
}
}
}
}
}
Main.itemText[num].name = newItem.AffixName();
Main.itemText[num].stack = stack;
Main.itemText[num].velocity.Y = -7f;
Main.itemText[num].lifeTime = 60;
}
}
public void Update(int whoAmI)
{
if (this.active)
{
this.alpha += (float)this.alphaDir * 0.01f;
if ((double)this.alpha <= 0.7)
{
this.alpha = 0.7f;
this.alphaDir = 1;
}
if (this.alpha >= 1f)
{
this.alpha = 1f;
this.alphaDir = -1;
}
bool flag = false;
string text = this.name;
if (this.stack > 1)
{
object obj = text;
text = string.Concat(new object[]
{
obj,
" (",
this.stack,
")"
});
}
Vector2 value = Main.fontMouseText.MeasureString(text);
value *= this.scale;
value.Y *= 0.8f;
Rectangle rectangle = new Rectangle((int)(this.position.X - value.X / 2f), (int)(this.position.Y - value.Y / 2f), (int)value.X, (int)value.Y);
for (int i = 0; i < 20; i++)
{
if (Main.itemText[i].active && i != whoAmI)
{
string text2 = Main.itemText[i].name;
if (Main.itemText[i].stack > 1)
{
object obj2 = text2;
text2 = string.Concat(new object[]
{
obj2,
" (",
Main.itemText[i].stack,
")"
});
}
Vector2 value2 = Main.fontMouseText.MeasureString(text2);
value2 *= Main.itemText[i].scale;
value2.Y *= 0.8f;
Rectangle value3 = new Rectangle((int)(Main.itemText[i].position.X - value2.X / 2f), (int)(Main.itemText[i].position.Y - value2.Y / 2f), (int)value2.X, (int)value2.Y);
if (rectangle.Intersects(value3) && (this.position.Y < Main.itemText[i].position.Y || (this.position.Y == Main.itemText[i].position.Y && whoAmI < i)))
{
flag = true;
int num = ItemText.numActive;
if (num > 3)
{
num = 3;
}
Main.itemText[i].lifeTime = ItemText.activeTime + 15 * num;
this.lifeTime = ItemText.activeTime + 15 * num;
}
}
}
if (!flag)
{
this.velocity.Y = this.velocity.Y * 0.86f;
if (this.scale == 1f)
{
this.velocity.Y = this.velocity.Y * 0.4f;
}
}
else
{
if (this.velocity.Y > -6f)
{
this.velocity.Y = this.velocity.Y - 0.2f;
}
else
{
this.velocity.Y = this.velocity.Y * 0.86f;
}
}
this.velocity.X = this.velocity.X * 0.93f;
this.position += this.velocity;
this.lifeTime--;
if (this.lifeTime <= 0)
{
this.scale -= 0.03f;
if ((double)this.scale < 0.1)
{
this.active = false;
}
this.lifeTime = 0;
return;
}
if (this.scale < 1f)
{
this.scale += 0.1f;
}
if (this.scale > 1f)
{
this.scale = 1f;
}
}
}
public static void UpdateItemText()
{
int num = 0;
for (int i = 0; i < 20; i++)
{
if (Main.itemText[i].active)
{
num++;
Main.itemText[i].Update(i);
}
}
ItemText.numActive = num;
}
}
}