/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\DragonSkillRequestDto.cs
 * Created: 2025-10-23
 * Last Modified: 2025-10-23
 * Description: Request DTO for dragon skill operations
 * Last Edit Notes: Individual file implementation for dragon skill input validation
 */

using System.ComponentModel.DataAnnotations;

namespace ShadowedRealms.Shared.DTOs.Combat
{
    /// <summary>
    /// Request DTO for dragon skill operations
    /// </summary>
    public class DragonSkillRequestDto
    {
        /// <summary>
        /// Dragon unique identifier
        /// </summary>
        [Required]
        [Range(1, int.MaxValue)]
        public int DragonId { get; set; }

        /// <summary>
        /// Skill name to activate or modify
        /// </summary>
        [Required]
        [StringLength(100)]
        public string SkillName { get; set; } = string.Empty;

        /// <summary>
        /// Operation type (Activate, Upgrade, Query, Reset)
        /// </summary>
        [Required]
        [StringLength(50)]
        public string OperationType { get; set; } = string.Empty;

        /// <summary>
        /// Target for skill activation (player, coordinates, etc.)
        /// </summary>
        public Dictionary<string, object>? SkillTarget { get; set; }

        /// <summary>
        /// Skill intensity or power level to use
        /// </summary>
        [Range(0.1, 2.0)]
        public decimal SkillIntensity { get; set; } = 1.0m;

        /// <summary>
        /// Resources to spend on skill upgrade
        /// </summary>
        public Dictionary<string, long> UpgradeResources { get; set; } = new();

        /// <summary>
        /// Whether to use premium skill enhancement
        /// </summary>
        public bool UsePremiumEnhancement { get; set; } = false;

        /// <summary>
        /// Maximum resources willing to spend
        /// </summary>
        public Dictionary<string, long> ResourceLimits { get; set; } = new();

        /// <summary>
        /// Skill combination with other dragon abilities
        /// </summary>
        public List<string> ComboSkills { get; set; } = new();

        /// <summary>
        /// Timing preferences for skill activation
        /// </summary>
        public Dictionary<string, object> TimingPreferences { get; set; } = new();

        /// <summary>
        /// Additional skill operation parameters
        /// </summary>
        public Dictionary<string, object> SkillParameters { get; set; } = new();
    }
}