using SoulHarvest.Common; using SoulHarvest.Items; using SoulHarvest.Tiles; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using System; using System.Collections.Generic; using Terraria; using Terraria.Audio; using Terraria.GameContent; using Terraria.GameContent.UI.Elements; using Terraria.ID; using Terraria.Localization; using Terraria.ModLoader; using Terraria.UI; namespace SoulHarvest.UI; internal sealed class AltarTextButton : UITextPanel { private readonly Color normalColor; private readonly Color hoverColor; private readonly Color activeBorderColor; private bool enabled = true; public bool Enabled { get => enabled; set { enabled = value; IgnoresMouseInteraction = !value; ApplyVisualState(); } } public AltarTextButton(string text, float textScale, Color normalColor, Color hoverColor, Color activeBorderColor) : base(text, textScale) { this.normalColor = normalColor; this.hoverColor = hoverColor; this.activeBorderColor = activeBorderColor; SetPadding(0f); ApplyVisualState(); } public override void Update(GameTime gameTime) { base.Update(gameTime); ApplyVisualState(); } private void ApplyVisualState() { if (!enabled) { BackgroundColor = Color.Lerp(normalColor, new Color(22, 19, 34), 0.62f) * 0.78f; BorderColor = new Color(65, 57, 78) * 0.72f; TextColor = new Color(117, 109, 127); return; } BackgroundColor = IsMouseHovering ? hoverColor : normalColor; BorderColor = IsMouseHovering ? activeBorderColor : activeBorderColor * 0.72f; TextColor = Color.White; } }