/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\FieldInterceptionResponseDto.cs
 * Created: 2025-10-23
 * Last Modified: 2025-10-23
 * Description: Response DTO for field interception opportunities and results
 * Last Edit Notes: Individual file implementation for field interception system data
 */

namespace ShadowedRealms.Shared.DTOs.Combat
{
    /// <summary>
    /// Response DTO for field interception opportunities and results
    /// </summary>
    public class FieldInterceptionResponseDto
    {
        /// <summary>
        /// Combat log ID for the interception
        /// </summary>
        public int CombatLogId { get; set; }

        /// <summary>
        /// Attacking player ID
        /// </summary>
        public int AttackerId { get; set; }

        /// <summary>
        /// Defending player ID
        /// </summary>
        public int DefenderId { get; set; }

        /// <summary>
        /// Whether field interception is available
        /// </summary>
        public bool InterceptionAvailable { get; set; }

        /// <summary>
        /// Available interception positions on the field
        /// </summary>
        public List<Dictionary<string, object>> InterceptionPositions { get; set; } = new();

        /// <summary>
        /// Timing windows for successful interception
        /// </summary>
        public Dictionary<string, DateTime> InterceptionWindows { get; set; } = new();

        /// <summary>
        /// Tactical advantages of field interception
        /// </summary>
        public Dictionary<string, decimal> TacticalAdvantages { get; set; } = new();

        /// <summary>
        /// Speed and movement calculations
        /// </summary>
        public Dictionary<string, object> MovementData { get; set; } = new();

        /// <summary>
        /// Grace periods and minimum march times
        /// </summary>
        public Dictionary<string, TimeSpan> TimingConstraints { get; set; } = new();

        /// <summary>
        /// Whether interception was successful if attempted
        /// </summary>
        public bool? InterceptionSuccess { get; set; }

        /// <summary>
        /// When interception opportunity was calculated
        /// </summary>
        public DateTime CalculationTime { get; set; }

        /// <summary>
        /// Additional field interception analytics
        /// </summary>
        public Dictionary<string, object> InterceptionAnalytics { get; set; } = new();
    }
}