using Dalamud.Bindings.ImGui;
using HSUI.Config;
using HSUI.Config.Attributes;
using HSUI.Enums;
using System.Numerics;

namespace HSUI.Interface.GeneralElements
{
    [Section("Other Elements")]
    [SubSection("Duty List & Scenario Guide", 0)]
    public class DutyListScenarioConfig : AnchorablePluginConfigObject
    {
        [Checkbox("Show Quest Icons")]
        [Order(20)]
        public bool ShowQuestIcons = true;

        [DragInt("Icon Size", min = 12, max = 48)]
        [Order(21, collapseWith = nameof(ShowQuestIcons))]
        public int IconSize = 24;

        [DragFloat("Font Scale", min = 0.5f, max = 2f)]
        [Order(23)]
        public float FontScale = 1f;

        [Font("Font")]
        [Order(24)]
        public string FontID = "Default";

        [ColorEdit4("Text Color")]
        [Order(30)]
        public PluginConfigColor TextColor = new(new Vector4(1f, 1f, 1f, 1f));

        [ColorEdit4("Background Color")]
        [Order(31)]
        public PluginConfigColor BackgroundColor = new(new Vector4(0f, 0f, 0f, 0f));

        [ColorEdit4("Divider Color")]
        [Order(32)]
        public PluginConfigColor DividerColor = new(new Vector4(1f, 1f, 1f, 0.6f));

        [Checkbox("Show Duty Finder section when in queue")]
        [Order(35)]
        public bool ShowDutyFinderSection = true;

        [ColorEdit4("Duty Finder title color")]
        [Order(36, collapseWith = nameof(ShowDutyFinderSection))]
        public PluginConfigColor DutyFinderTitleColor = new(new Vector4(1f, 0.85f, 0.2f, 1f));

        [ColorEdit4("Duty Finder detail color")]
        [Order(37, collapseWith = nameof(ShowDutyFinderSection))]
        public PluginConfigColor DutyFinderDetailColor = new(new Vector4(0.4f, 0.75f, 1f, 1f));

        [NestedConfig("Visibility", 70)]
        public VisibilityConfig VisibilityConfig = new();

        public DutyListScenarioConfig()
        {
            Size = new Vector2(320, 200);
        }

        public new static DutyListScenarioConfig DefaultConfig()
        {
            var config = new DutyListScenarioConfig
            {
                Position = new Vector2(ImGui.GetMainViewport().Size.X * 0.38f, -ImGui.GetMainViewport().Size.Y * 0.35f),
                Size = new Vector2(320, 200),
                Anchor = DrawAnchor.TopRight
            };
            return config;
        }
    }
}
