XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

DeathMod

【Terraria】DeathMod (now aka Soul Harvest)

公开
关注 0 Fork 0 Star 0
UTF-8
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<string>
{
    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;
    }
}