package com.n3plugins.guardiansrift;

import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
import net.runelite.client.config.ConfigSection;
import net.runelite.client.config.Keybind;

@ConfigGroup(GuardiansRiftConfig.GROUP)
public interface GuardiansRiftConfig extends Config
{
    String GROUP = "n3guardiansrift";

    @ConfigItem(keyName = "hotkey", name = "Toggle hotkey", description = "Start or stop Guardians of the Rift.")
    default Keybind hotkey()
    {
        return Keybind.NOT_SET;
    }

    @ConfigItem(keyName = "showOverlay", name = "Show overlay", description = "Render the Guardians of the Rift overlay.")
    default boolean showOverlay()
    {
        return true;
    }

    @ConfigItem(keyName = "prioritizeBloodDeath", name = "Prioritize blood/death", description = "Prefer blood and death altars when available.")
    default boolean prioritizeBloodDeath()
    {
        return true;
    }

    @ConfigItem(keyName = "usePouches", name = "Use pouches", description = "Fill, empty, and repair essence pouches.")
    default boolean usePouches()
    {
        return false;
    }

    @ConfigItem(keyName = "pouchRepairPolicy", name = "Pouch repair", description = "Repair route for degraded essence pouches.")
    default GuardiansRiftPouchRepairPolicy pouchRepairPolicy()
    {
        return GuardiansRiftPouchRepairPolicy.CORDELIA_THEN_NPC_CONTACT_THEN_DARK_MAGE;
    }

    @ConfigItem(keyName = "dropRunes", name = "Drop runes", description = "Drop crafted runes instead of using the rune deposit.")
    default boolean dropRunes()
    {
        return false;
    }

    @ConfigItem(keyName = "dropRunesFilter", name = "Drop rune filter", description = "Comma-separated rune names to drop even when rune depositing is enabled.")
    default String dropRunesFilter()
    {
        return "";
    }

    @ConfigItem(keyName = "startingFragments", name = "Starting fragments", description = "Fragments to mine before leaving the start area. Zero waits for the first portal.")
    default int startingFragments()
    {
        return 0;
    }

    @ConfigSection(name = "Ignored altars", description = "Altars to avoid unless every visible option is ignored.", position = 50, closedByDefault = true)
    String ignoredAltars = "ignoredAltars";

    @ConfigItem(keyName = "ignoreAir", name = "Ignore Air", description = "", section = ignoredAltars, position = 51)
    default boolean ignoreAir() { return false; }
    @ConfigItem(keyName = "ignoreMind", name = "Ignore Mind", description = "", section = ignoredAltars, position = 52)
    default boolean ignoreMind() { return false; }
    @ConfigItem(keyName = "ignoreWater", name = "Ignore Water", description = "", section = ignoredAltars, position = 53)
    default boolean ignoreWater() { return false; }
    @ConfigItem(keyName = "ignoreEarth", name = "Ignore Earth", description = "", section = ignoredAltars, position = 54)
    default boolean ignoreEarth() { return false; }
    @ConfigItem(keyName = "ignoreFire", name = "Ignore Fire", description = "", section = ignoredAltars, position = 55)
    default boolean ignoreFire() { return false; }
    @ConfigItem(keyName = "ignoreBody", name = "Ignore Body", description = "", section = ignoredAltars, position = 56)
    default boolean ignoreBody() { return false; }
    @ConfigItem(keyName = "ignoreCosmic", name = "Ignore Cosmic", description = "", section = ignoredAltars, position = 57)
    default boolean ignoreCosmic() { return false; }
    @ConfigItem(keyName = "ignoreChaos", name = "Ignore Chaos", description = "", section = ignoredAltars, position = 58)
    default boolean ignoreChaos() { return false; }
    @ConfigItem(keyName = "ignoreNature", name = "Ignore Nature", description = "", section = ignoredAltars, position = 59)
    default boolean ignoreNature() { return false; }
    @ConfigItem(keyName = "ignoreLaw", name = "Ignore Law", description = "", section = ignoredAltars, position = 60)
    default boolean ignoreLaw() { return false; }
    @ConfigItem(keyName = "ignoreDeath", name = "Ignore Death", description = "", section = ignoredAltars, position = 61)
    default boolean ignoreDeath() { return false; }
    @ConfigItem(keyName = "ignoreBlood", name = "Ignore Blood", description = "", section = ignoredAltars, position = 62)
    default boolean ignoreBlood() { return false; }
}
