namespace EventsAppQuest.Core
{
    /// <summary>
    /// Alvo apontável/hoverável na apresentação Quest: identificador, tipo, dicas para hover e seleção,
    /// e ligação ao alvo selecionável para confirmar ação. Preparado para futura integração com raycast/gaze.
    /// </summary>
    public class QuestPointableTarget
    {
        /// <summary>Identificador único (ex.: "guided_step", "hotspot"). Deve coincidir com QuestSelectableTarget.TargetId quando houver.</summary>
        public string TargetId { get; set; }

        /// <summary>Tipo do alvo (painel, hotspot marker, ação, navegação, info).</summary>
        public QuestPointableTargetType TargetType { get; set; }

        /// <summary>Dica de posição no mundo para futuro raycast (ex.: "main_panel", "lateral_panel").</summary>
        public string WorldAnchorHint { get; set; }

        /// <summary>Texto curto ao hover (ex.: "Passo atual", "Hotspot").</summary>
        public string HoverHint { get; set; }

        /// <summary>Dica da ação ao confirmar (ex.: "Próx. passo").</summary>
        public string SelectionHint { get; set; }

        /// <summary>Se true, o alvo pode receber confirmação e executar ação.</summary>
        public bool IsInteractable { get; set; }

        /// <summary>Id do alvo selecionável associado (para ConfirmSelection delegar ao QuestSelectionController).</summary>
        public string RelatedSelectableTargetId { get; set; }
    }
}
