terraria-source-code/GameContent/UI/Elements/UIKeybindingListItem.cs
2021-10-26 12:45:26 -04:00

204 lines
7.1 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Terraria.GameContent.UI.Elements.UIKeybindingListItem
// 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.Collections.Generic;
using Terraria.GameContent.UI.Chat;
using Terraria.GameInput;
using Terraria.Localization;
using Terraria.UI;
using Terraria.UI.Chat;
namespace Terraria.GameContent.UI.Elements
{
public class UIKeybindingListItem : UIElement
{
private InputMode _inputmode;
private Color _color;
private string _keybind;
public UIKeybindingListItem(string bind, InputMode mode, Color color)
{
this._keybind = bind;
this._inputmode = mode;
this._color = color;
this.OnClick += new UIElement.MouseEvent(this.OnClickMethod);
}
public void OnClickMethod(UIMouseEvent evt, UIElement listeningElement)
{
if (!(PlayerInput.ListeningTrigger != this._keybind))
return;
if (PlayerInput.CurrentProfile.AllowEditting)
PlayerInput.ListenFor(this._keybind, this._inputmode);
else
PlayerInput.ListenFor((string) null, this._inputmode);
}
protected override void DrawSelf(SpriteBatch spriteBatch)
{
float num1 = 6f;
base.DrawSelf(spriteBatch);
CalculatedStyle dimensions = this.GetDimensions();
float num2 = dimensions.Width + 1f;
Vector2 vector2 = new Vector2(dimensions.X, dimensions.Y);
bool flag = PlayerInput.ListeningTrigger == this._keybind;
Vector2 baseScale = new Vector2(0.8f);
Color baseColor = Color.Lerp(flag ? Color.Gold : (this.IsMouseHovering ? Color.White : Color.Silver), Color.White, this.IsMouseHovering ? 0.5f : 0.0f);
Color color = this.IsMouseHovering ? this._color : this._color.MultiplyRGBA(new Color(180, 180, 180));
Vector2 position = vector2;
Utils.DrawSettingsPanel(spriteBatch, position, num2, color);
position.X += 8f;
position.Y += 2f + num1;
ChatManager.DrawColorCodedStringWithShadow(spriteBatch, FontAssets.ItemStack.Value, this.GetFriendlyName(), position, baseColor, 0.0f, Vector2.Zero, baseScale, num2);
position.X -= 17f;
string text = this.GenInput(PlayerInput.CurrentProfile.InputModes[this._inputmode].KeyStatus[this._keybind]);
if (string.IsNullOrEmpty(text))
{
text = Lang.menu[195].Value;
if (!flag)
baseColor = new Color(80, 80, 80);
}
Vector2 stringSize = ChatManager.GetStringSize(FontAssets.ItemStack.Value, text, baseScale);
position = new Vector2((float) ((double) dimensions.X + (double) dimensions.Width - (double) stringSize.X - 10.0), dimensions.Y + 2f + num1);
if (this._inputmode == InputMode.XBoxGamepad || this._inputmode == InputMode.XBoxGamepadUI)
position += new Vector2(0.0f, -3f);
GlyphTagHandler.GlyphsScale = 0.85f;
ChatManager.DrawColorCodedStringWithShadow(spriteBatch, FontAssets.ItemStack.Value, text, position, baseColor, 0.0f, Vector2.Zero, baseScale, num2);
GlyphTagHandler.GlyphsScale = 1f;
}
private string GenInput(List<string> list)
{
if (list.Count == 0)
return "";
string str = "";
switch (this._inputmode)
{
case InputMode.Keyboard:
case InputMode.KeyboardUI:
case InputMode.Mouse:
str = list[0];
for (int index = 1; index < list.Count; ++index)
str = str + "/" + list[index];
break;
case InputMode.XBoxGamepad:
case InputMode.XBoxGamepadUI:
str = GlyphTagHandler.GenerateTag(list[0]);
for (int index = 1; index < list.Count; ++index)
str = str + "/" + GlyphTagHandler.GenerateTag(list[index]);
break;
}
return str;
}
private string GetFriendlyName()
{
switch (this._keybind)
{
case "Down":
return Lang.menu[149].Value;
case "DpadRadial1":
return Lang.menu[186].Value;
case "DpadRadial2":
return Lang.menu[187].Value;
case "DpadRadial3":
return Lang.menu[188].Value;
case "DpadRadial4":
return Lang.menu[189].Value;
case "DpadSnap1":
return Lang.menu[191].Value;
case "DpadSnap2":
return Lang.menu[192].Value;
case "DpadSnap3":
return Lang.menu[193].Value;
case "DpadSnap4":
return Lang.menu[194].Value;
case "Grapple":
return Lang.menu[155].Value;
case "Hotbar1":
return Lang.menu[176].Value;
case "Hotbar10":
return Lang.menu[185].Value;
case "Hotbar2":
return Lang.menu[177].Value;
case "Hotbar3":
return Lang.menu[178].Value;
case "Hotbar4":
return Lang.menu[179].Value;
case "Hotbar5":
return Lang.menu[180].Value;
case "Hotbar6":
return Lang.menu[181].Value;
case "Hotbar7":
return Lang.menu[182].Value;
case "Hotbar8":
return Lang.menu[183].Value;
case "Hotbar9":
return Lang.menu[184].Value;
case "HotbarMinus":
return Lang.menu[174].Value;
case "HotbarPlus":
return Lang.menu[175].Value;
case "Inventory":
return Lang.menu[154].Value;
case "Jump":
return Lang.menu[152].Value;
case "Left":
return Lang.menu[150].Value;
case "LockOn":
return Lang.menu[231].Value;
case "MapAlphaDown":
return Lang.menu[170].Value;
case "MapAlphaUp":
return Lang.menu[171].Value;
case "MapFull":
return Lang.menu[173].Value;
case "MapStyle":
return Lang.menu[172].Value;
case "MapZoomIn":
return Lang.menu[168].Value;
case "MapZoomOut":
return Lang.menu[169].Value;
case "MouseLeft":
return Lang.menu[162].Value;
case "MouseRight":
return Lang.menu[163].Value;
case "QuickBuff":
return Lang.menu[157].Value;
case "QuickHeal":
return Lang.menu[159].Value;
case "QuickMana":
return Lang.menu[156].Value;
case "QuickMount":
return Lang.menu[158].Value;
case "RadialHotbar":
return Lang.menu[190].Value;
case "RadialQuickbar":
return Lang.menu[244].Value;
case "Right":
return Lang.menu[151].Value;
case "SmartCursor":
return Lang.menu[161].Value;
case "SmartSelect":
return Lang.menu[160].Value;
case "Throw":
return Lang.menu[153].Value;
case "ToggleCreativeMenu":
return Language.GetTextValue("UI.ToggleCreativeMenu");
case "Up":
return Lang.menu[148].Value;
case "ViewZoomIn":
return Language.GetTextValue("UI.ZoomIn");
case "ViewZoomOut":
return Language.GetTextValue("UI.ZoomOut");
default:
return this._keybind;
}
}
}
}