import typing
from dataclasses import dataclass
from Options import Option, DeathLink, Range, Toggle, PerGameCommonOptions

class DoorCost(Range):
    """Amount of Trinkets required to enter Areas. Set to 0 to disable artificial locks."""
    display_name = "Door Cost"
    range_start = 0
    range_end = 3
    default = 3

class AreaCostRandomizer(Toggle):
    """Randomize which Area requires which set of DoorCost Trinkets"""
    display_name = "Area Cost Randomizer"

class DeathLinkAmnesty(Range):
    """Amount of Deaths to take before sending a DeathLink signal, for balancing difficulty"""
    display_name = "Death Link Amnesty"
    range_start = 0
    range_end = 30
    default = 15

class AreaRandomizer(Toggle):
    """Randomize Entrances to Areas"""
    display_name = "Area Randomizer"

class MusicRandomizer(Toggle):
    """Randomize Music"""
    display_name = "Music Randomizer"

@dataclass
class V6Options(PerGameCommonOptions):
    music_rando: MusicRandomizer
    area_rando: AreaRandomizer
    door_cost: DoorCost
    area_cost: AreaCostRandomizer
    death_link: DeathLink
    death_link_amnesty: DeathLinkAmnesty