2 using Microsoft.Xna.Framework;
3 using Microsoft.Xna.Framework.Graphics;
4 using Terraria.GameContent.UI.Elements;
9 internal class GuiTabToggle : UIElement
11 public readonly GuiTabState TargetState;
13 public delegate
void WhenClickedEvent(UIMouseEvent evt, UIElement listeningElement, GuiTabToggle toggle);
14 public event WhenClickedEvent WhenClicked;
16 private UIImageButton _button;
17 private Texture2D _texture;
19 public new float VisibilityActive {
get;
private set; } = 1f;
20 public new float VisibilityInactive {
get;
private set; } = 0.4f;
21 public float VisiblityMultiplier => IsActive ? VisibilityActive : VisibilityInactive;
22 public bool IsActive {
get;
private set; }
24 public GuiTabToggle(GuiTabState state)
27 _texture = GetTexture();
28 OnClick += (evt, element) =>
30 WhenClicked?.Invoke(evt, element,
this);
34 public override void OnInitialize()
36 Height.Set(_texture.Height, 0);
37 Width.Set(_texture.Width, 0);
38 _button =
new UIImageButton(_texture);
42 protected override void DrawSelf(SpriteBatch spriteBatch)
44 CalculatedStyle dimensions = GetDimensions();
45 spriteBatch.Draw(_texture, dimensions.Position(), Color.White * VisiblityMultiplier);
48 private Texture2D GetTexture()
53 case GuiTabState.CUBING:
54 return Assets.Textures.GUI.Tabs.CubingTabTexture;
55 case GuiTabState.ESSENCE:
56 return Assets.Textures.GUI.Tabs.EssenceCraftTexture;
57 case GuiTabState.SOULFORGE:
58 return Assets.Textures.GUI.Tabs.SoulforgeTexture;
62 public void SetVisibility(
float whenActive,
float whenInactive)
64 VisibilityActive = MathHelper.Clamp(whenActive, 0f, 1f);
65 VisibilityInactive = MathHelper.Clamp(whenInactive, 0f, 1f);
66 _button.SetVisibility(whenActive, whenInactive);
69 public void SetActive(
bool state)