Terraria 1.4.0.5 Source Code

This commit is contained in:
MikeyIsBaeYT 2021-10-26 12:45:26 -04:00
commit 05205f009e
1059 changed files with 563450 additions and 0 deletions

595
GameContent/UI/WiresUI.cs Normal file
View file

@ -0,0 +1,595 @@
// Decompiled with JetBrains decompiler
// Type: Terraria.GameContent.UI.WiresUI
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System;
using Terraria.GameInput;
namespace Terraria.GameContent.UI
{
public class WiresUI
{
private static WiresUI.WiresRadial radial = new WiresUI.WiresRadial();
public static bool Open => WiresUI.radial.active;
public static void HandleWiresUI(SpriteBatch spriteBatch)
{
WiresUI.radial.Update();
WiresUI.radial.Draw(spriteBatch);
}
public static class Settings
{
public static WiresUI.Settings.MultiToolMode ToolMode = WiresUI.Settings.MultiToolMode.Red;
private static int _lastActuatorEnabled;
public static bool DrawWires
{
get
{
if (Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].mech)
return true;
return Main.player[Main.myPlayer].InfoAccMechShowWires && Main.player[Main.myPlayer].builderAccStatus[8] == 0;
}
}
public static bool HideWires => Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type == 3620;
public static bool DrawToolModeUI
{
get
{
int type = Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type;
return type == 3611 || type == 3625;
}
}
public static bool DrawToolAllowActuators
{
get
{
int type = Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type;
if (type == 3611)
WiresUI.Settings._lastActuatorEnabled = 2;
if (type == 3625)
WiresUI.Settings._lastActuatorEnabled = 1;
return WiresUI.Settings._lastActuatorEnabled == 2;
}
}
[Flags]
public enum MultiToolMode
{
Red = 1,
Green = 2,
Blue = 4,
Yellow = 8,
Actuator = 16, // 0x00000010
Cutter = 32, // 0x00000020
}
}
public class WiresRadial
{
public Vector2 position;
public bool active;
public bool OnWiresMenu;
private float _lineOpacity;
public void Update()
{
this.FlowerUpdate();
this.LineUpdate();
}
private void LineUpdate()
{
bool flag1 = true;
float min = 0.75f;
Player player = Main.player[Main.myPlayer];
if (!WiresUI.Settings.DrawToolModeUI || Main.drawingPlayerChat)
{
flag1 = false;
min = 0.0f;
}
bool flag2;
if (player.dead || Main.mouseItem.type > 0)
{
flag2 = false;
this._lineOpacity = 0.0f;
}
else if (player.cursorItemIconEnabled && player.cursorItemIconID != 0 && player.cursorItemIconID != 3625)
{
flag2 = false;
this._lineOpacity = 0.0f;
}
else if (!player.cursorItemIconEnabled && (!PlayerInput.UsingGamepad && !WiresUI.Settings.DrawToolAllowActuators || player.mouseInterface || player.lastMouseInterface) || Main.ingameOptionsWindow || Main.InGameUI.IsVisible)
{
flag2 = false;
this._lineOpacity = 0.0f;
}
else
{
float num = Utils.Clamp<float>(this._lineOpacity + 0.05f * (float) flag1.ToDirectionInt(), min, 1f);
this._lineOpacity += 0.05f * (float) Math.Sign(num - this._lineOpacity);
if ((double) Math.Abs(this._lineOpacity - num) >= 0.0500000007450581)
return;
this._lineOpacity = num;
}
}
private void FlowerUpdate()
{
Player player = Main.player[Main.myPlayer];
if (!WiresUI.Settings.DrawToolModeUI)
this.active = false;
else if ((player.mouseInterface || player.lastMouseInterface) && !this.OnWiresMenu)
this.active = false;
else if (player.dead || Main.mouseItem.type > 0)
{
this.active = false;
this.OnWiresMenu = false;
}
else
{
this.OnWiresMenu = false;
if (!Main.mouseRight || !Main.mouseRightRelease || PlayerInput.LockGamepadTileUseButton || player.noThrow != 0 || Main.HoveringOverAnNPC || player.talkNPC != -1)
return;
if (this.active)
{
this.active = false;
}
else
{
if (Main.SmartInteractShowingGenuine)
return;
this.active = true;
this.position = Main.MouseScreen;
if (!PlayerInput.UsingGamepad || !Main.SmartCursorEnabled)
return;
this.position = new Vector2((float) Main.screenWidth, (float) Main.screenHeight) / 2f;
}
}
}
public void Draw(SpriteBatch spriteBatch)
{
this.DrawFlower(spriteBatch);
this.DrawCursorArea(spriteBatch);
}
private void DrawLine(SpriteBatch spriteBatch)
{
if (this.active || (double) this._lineOpacity == 0.0)
return;
Vector2 vector2_1 = Main.MouseScreen;
Vector2 vector2_2 = new Vector2((float) (Main.screenWidth / 2), (float) (Main.screenHeight - 70));
if (PlayerInput.UsingGamepad)
vector2_1 = Vector2.Zero;
Vector2 v = vector2_1 - vector2_2;
double num1 = (double) Vector2.Dot(Vector2.Normalize(v), Vector2.UnitX);
double num2 = (double) Vector2.Dot(Vector2.Normalize(v), Vector2.UnitY);
double rotation = (double) v.ToRotation();
double num3 = (double) v.Length();
bool flag1 = false;
bool toolAllowActuators = WiresUI.Settings.DrawToolAllowActuators;
for (int index = 0; index < 6; ++index)
{
if (toolAllowActuators || index != 5)
{
bool flag2 = WiresUI.Settings.ToolMode.HasFlag((Enum) (WiresUI.Settings.MultiToolMode) (1 << index));
if (index == 5)
flag2 = WiresUI.Settings.ToolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Actuator);
Vector2 vector2_3 = vector2_2 + Vector2.UnitX * (float) (45.0 * ((double) index - 1.5));
int num4 = index;
if (index == 0)
num4 = 3;
if (index == 3)
num4 = 0;
switch (num4)
{
case 0:
case 1:
vector2_3 = vector2_2 + new Vector2((float) (45.0 + (toolAllowActuators ? 15.0 : 0.0)) * (float) (2 - num4), 0.0f) * this._lineOpacity;
break;
case 2:
case 3:
vector2_3 = vector2_2 + new Vector2((float) -(45.0 + (toolAllowActuators ? 15.0 : 0.0)) * (float) (num4 - 1), 0.0f) * this._lineOpacity;
break;
case 4:
flag2 = false;
vector2_3 = vector2_2 - new Vector2(0.0f, toolAllowActuators ? 22f : 0.0f) * this._lineOpacity;
break;
case 5:
vector2_3 = vector2_2 + new Vector2(0.0f, 22f) * this._lineOpacity;
break;
}
bool flag3 = false;
if (!PlayerInput.UsingGamepad)
flag3 = (double) Vector2.Distance(vector2_3, vector2_1) < 19.0 * (double) this._lineOpacity;
if (flag1)
flag3 = false;
if (flag3)
flag1 = true;
Texture2D texture2D1 = TextureAssets.WireUi[(WiresUI.Settings.ToolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Cutter) ? 8 : 0) + (flag3 ? 1 : 0)].Value;
Texture2D texture2D2 = (Texture2D) null;
switch (index)
{
case 0:
case 1:
case 2:
case 3:
texture2D2 = TextureAssets.WireUi[2 + index].Value;
break;
case 4:
texture2D2 = TextureAssets.WireUi[WiresUI.Settings.ToolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Cutter) ? 7 : 6].Value;
break;
case 5:
texture2D2 = TextureAssets.WireUi[10].Value;
break;
}
Color color1 = Color.White;
Color color2 = Color.White;
if (!flag2 && index != 4)
{
if (flag3)
{
color2 = new Color(100, 100, 100);
color2 = new Color(120, 120, 120);
color1 = new Color(200, 200, 200);
}
else
{
color2 = new Color(150, 150, 150);
color2 = new Color(80, 80, 80);
color1 = new Color(100, 100, 100);
}
}
Utils.CenteredRectangle(vector2_3, new Vector2(40f));
if (flag3)
{
if (Main.mouseLeft && Main.mouseLeftRelease)
{
switch (index)
{
case 0:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Red;
break;
case 1:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Green;
break;
case 2:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Blue;
break;
case 3:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Yellow;
break;
case 4:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Cutter;
break;
case 5:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Actuator;
break;
}
}
if (!Main.mouseLeft || Main.player[Main.myPlayer].mouseInterface)
Main.player[Main.myPlayer].mouseInterface = true;
this.OnWiresMenu = true;
}
int num5 = flag3 ? 1 : 0;
spriteBatch.Draw(texture2D1, vector2_3, new Rectangle?(), color1 * this._lineOpacity, 0.0f, texture2D1.Size() / 2f, this._lineOpacity, SpriteEffects.None, 0.0f);
spriteBatch.Draw(texture2D2, vector2_3, new Rectangle?(), color2 * this._lineOpacity, 0.0f, texture2D2.Size() / 2f, this._lineOpacity, SpriteEffects.None, 0.0f);
}
}
if (!Main.mouseLeft || !Main.mouseLeftRelease || flag1)
return;
this.active = false;
}
private void DrawFlower(SpriteBatch spriteBatch)
{
if (!this.active)
return;
Vector2 vector2_1 = Main.MouseScreen;
Vector2 position = this.position;
if (PlayerInput.UsingGamepad && Main.SmartCursorEnabled)
vector2_1 = !(PlayerInput.GamepadThumbstickRight != Vector2.Zero) ? (!(PlayerInput.GamepadThumbstickLeft != Vector2.Zero) ? this.position : this.position + PlayerInput.GamepadThumbstickLeft * 40f) : this.position + PlayerInput.GamepadThumbstickRight * 40f;
Vector2 v = vector2_1 - position;
double num1 = (double) Vector2.Dot(Vector2.Normalize(v), Vector2.UnitX);
double num2 = (double) Vector2.Dot(Vector2.Normalize(v), Vector2.UnitY);
float rotation = v.ToRotation();
float num3 = v.Length();
bool flag1 = false;
bool toolAllowActuators = WiresUI.Settings.DrawToolAllowActuators;
float num4 = (float) (4 + toolAllowActuators.ToInt());
float num5 = toolAllowActuators ? 11f : -0.5f;
for (int index = 0; index < 6; ++index)
{
if (toolAllowActuators || index != 5)
{
bool flag2 = WiresUI.Settings.ToolMode.HasFlag((Enum) (WiresUI.Settings.MultiToolMode) (1 << index));
if (index == 5)
flag2 = WiresUI.Settings.ToolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Actuator);
Vector2 vector2_2 = position + Vector2.UnitX * (float) (45.0 * ((double) index - 1.5));
switch (index)
{
case 0:
case 1:
case 2:
case 3:
float num6 = (float) index;
if (index == 0)
num6 = 3f;
if (index == 3)
num6 = 0.0f;
vector2_2 = position + Vector2.UnitX.RotatedBy((double) num6 * 6.28318548202515 / (double) num4 - 3.14159274101257 / (double) num5) * 45f;
break;
case 4:
flag2 = false;
vector2_2 = position;
break;
case 5:
vector2_2 = position + Vector2.UnitX.RotatedBy((double) (index - 1) * 6.28318548202515 / (double) num4 - 3.14159274101257 / (double) num5) * 45f;
break;
}
bool flag3 = false;
if (index == 4)
flag3 = (double) num3 < 20.0;
switch (index)
{
case 0:
case 1:
case 2:
case 3:
case 5:
float num7 = (vector2_2 - position).ToRotation().AngleTowards(rotation, (float) (6.28318548202515 / ((double) num4 * 2.0))) - rotation;
if ((double) num3 >= 20.0 && (double) Math.Abs(num7) < 0.00999999977648258)
{
flag3 = true;
break;
}
break;
case 4:
flag3 = (double) num3 < 20.0;
break;
}
if (!PlayerInput.UsingGamepad)
flag3 = (double) Vector2.Distance(vector2_2, vector2_1) < 19.0;
if (flag1)
flag3 = false;
if (flag3)
flag1 = true;
Texture2D texture2D1 = TextureAssets.WireUi[(WiresUI.Settings.ToolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Cutter) ? 8 : 0) + (flag3 ? 1 : 0)].Value;
Texture2D texture2D2 = (Texture2D) null;
switch (index)
{
case 0:
case 1:
case 2:
case 3:
texture2D2 = TextureAssets.WireUi[2 + index].Value;
break;
case 4:
texture2D2 = TextureAssets.WireUi[WiresUI.Settings.ToolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Cutter) ? 7 : 6].Value;
break;
case 5:
texture2D2 = TextureAssets.WireUi[10].Value;
break;
}
Color color1 = Color.White;
Color color2 = Color.White;
if (!flag2 && index != 4)
{
if (flag3)
{
color2 = new Color(100, 100, 100);
color2 = new Color(120, 120, 120);
color1 = new Color(200, 200, 200);
}
else
{
color2 = new Color(150, 150, 150);
color2 = new Color(80, 80, 80);
color1 = new Color(100, 100, 100);
}
}
Utils.CenteredRectangle(vector2_2, new Vector2(40f));
if (flag3)
{
if (Main.mouseLeft && Main.mouseLeftRelease)
{
switch (index)
{
case 0:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Red;
break;
case 1:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Green;
break;
case 2:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Blue;
break;
case 3:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Yellow;
break;
case 4:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Cutter;
break;
case 5:
WiresUI.Settings.ToolMode ^= WiresUI.Settings.MultiToolMode.Actuator;
break;
}
}
Main.player[Main.myPlayer].mouseInterface = true;
this.OnWiresMenu = true;
}
int num8 = flag3 ? 1 : 0;
spriteBatch.Draw(texture2D1, vector2_2, new Rectangle?(), color1, 0.0f, texture2D1.Size() / 2f, 1f, SpriteEffects.None, 0.0f);
spriteBatch.Draw(texture2D2, vector2_2, new Rectangle?(), color2, 0.0f, texture2D2.Size() / 2f, 1f, SpriteEffects.None, 0.0f);
}
}
if (!Main.mouseLeft || !Main.mouseLeftRelease || flag1)
return;
this.active = false;
}
private void DrawCursorArea(SpriteBatch spriteBatch)
{
if (this.active || (double) this._lineOpacity == 0.0)
return;
Vector2 vector2 = Main.MouseScreen + new Vector2((float) (10 - 9 * PlayerInput.UsingGamepad.ToInt()), 25f);
Color color1 = new Color(50, 50, 50);
bool toolAllowActuators = WiresUI.Settings.DrawToolAllowActuators;
if (!toolAllowActuators)
{
if (!PlayerInput.UsingGamepad)
vector2 += new Vector2(-20f, 10f);
else
vector2 += new Vector2(0.0f, 10f);
}
Texture2D texture1 = TextureAssets.BuilderAcc.Value;
Texture2D texture2 = texture1;
Rectangle r1 = new Rectangle(140, 2, 6, 6);
Rectangle r2 = new Rectangle(148, 2, 6, 6);
Rectangle r3 = new Rectangle(128, 0, 10, 10);
float num1 = 1f;
float scale = 1f;
bool flag1 = false;
if (flag1 && !toolAllowActuators)
num1 *= Main.cursorScale;
float lineOpacity = this._lineOpacity;
if (PlayerInput.UsingGamepad)
lineOpacity *= Main.GamepadCursorAlpha;
for (int index = 0; index < 5; ++index)
{
if (toolAllowActuators || index != 4)
{
float num2 = lineOpacity;
Vector2 vec = vector2 + Vector2.UnitX * (float) (45.0 * ((double) index - 1.5));
int num3 = index;
if (index == 0)
num3 = 3;
if (index == 1)
num3 = 2;
if (index == 2)
num3 = 1;
if (index == 3)
num3 = 0;
if (index == 4)
num3 = 5;
int num4 = num3;
switch (num4)
{
case 1:
num4 = 2;
break;
case 2:
num4 = 1;
break;
}
bool flag2 = WiresUI.Settings.ToolMode.HasFlag((Enum) (WiresUI.Settings.MultiToolMode) (1 << num4));
if (num4 == 5)
flag2 = WiresUI.Settings.ToolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Actuator);
Color color2 = Color.HotPink;
switch (num3)
{
case 0:
color2 = new Color(253, 58, 61);
break;
case 1:
color2 = new Color(83, 180, 253);
break;
case 2:
color2 = new Color(83, 253, 153);
break;
case 3:
color2 = new Color(253, 254, 83);
break;
case 5:
color2 = Color.WhiteSmoke;
break;
}
if (!flag2)
color2 = Color.Lerp(color2, Color.Black, 0.65f);
if (flag1)
{
if (toolAllowActuators)
{
switch (num3)
{
case 0:
vec = vector2 + new Vector2(-12f, 0.0f) * num1;
break;
case 1:
vec = vector2 + new Vector2(-6f, 12f) * num1;
break;
case 2:
vec = vector2 + new Vector2(6f, 12f) * num1;
break;
case 3:
vec = vector2 + new Vector2(12f, 0.0f) * num1;
break;
case 5:
vec = vector2 + new Vector2(0.0f, 0.0f) * num1;
break;
}
}
else
vec = vector2 + new Vector2((float) (12 * (num3 + 1)), (float) (12 * (3 - num3))) * num1;
}
else if (toolAllowActuators)
{
switch (num3)
{
case 0:
vec = vector2 + new Vector2(-12f, 0.0f) * num1;
break;
case 1:
vec = vector2 + new Vector2(-6f, 12f) * num1;
break;
case 2:
vec = vector2 + new Vector2(6f, 12f) * num1;
break;
case 3:
vec = vector2 + new Vector2(12f, 0.0f) * num1;
break;
case 5:
vec = vector2 + new Vector2(0.0f, 0.0f) * num1;
break;
}
}
else
{
float num5 = 0.7f;
switch (num3)
{
case 0:
vec = vector2 + new Vector2(0.0f, -12f) * num1 * num5;
break;
case 1:
vec = vector2 + new Vector2(-12f, 0.0f) * num1 * num5;
break;
case 2:
vec = vector2 + new Vector2(0.0f, 12f) * num1 * num5;
break;
case 3:
vec = vector2 + new Vector2(12f, 0.0f) * num1 * num5;
break;
}
}
Vector2 position = vec.Floor();
spriteBatch.Draw(texture2, position, new Rectangle?(r3), color1 * num2, 0.0f, r3.Size() / 2f, scale, SpriteEffects.None, 0.0f);
spriteBatch.Draw(texture1, position, new Rectangle?(r1), color2 * num2, 0.0f, r1.Size() / 2f, scale, SpriteEffects.None, 0.0f);
if (WiresUI.Settings.ToolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Cutter))
spriteBatch.Draw(texture1, position, new Rectangle?(r2), color1 * num2, 0.0f, r2.Size() / 2f, scale, SpriteEffects.None, 0.0f);
}
}
}
}
}
}