/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\MarchInitiationResponseDto.cs
 * Created: 2025-10-23
 * Last Modified: 2025-10-23
 * Description: Response DTO for march initiation operations
 * Last Edit Notes: Individual file implementation for march initiation results
 */

namespace ShadowedRealms.Shared.DTOs.Combat
{
    /// <summary>
    /// Response DTO for march initiation operations
    /// </summary>
    public class MarchInitiationResponseDto
    {
        /// <summary>
        /// Unique march identifier
        /// </summary>
        public int MarchId { get; set; }

        /// <summary>
        /// Player ID who initiated the march
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// March type (Attack, Raid, Reconnaissance, Reinforcement)
        /// </summary>
        public string MarchType { get; set; } = string.Empty;

        /// <summary>
        /// Target coordinates or player ID
        /// </summary>
        public Dictionary<string, object> MarchTarget { get; set; } = new();

        /// <summary>
        /// Troops participating in the march
        /// </summary>
        public Dictionary<string, long> MarchingTroops { get; set; } = new();

        /// <summary>
        /// Dragon participation details
        /// </summary>
        public Dictionary<string, object>? DragonParticipation { get; set; }

        /// <summary>
        /// March route and waypoints
        /// </summary>
        public Dictionary<string, object> MarchRoute { get; set; } = new();

        /// <summary>
        /// Estimated arrival time at destination
        /// </summary>
        public DateTime EstimatedArrival { get; set; }

        /// <summary>
        /// Resource costs consumed for the march
        /// </summary>
        public Dictionary<string, long> ResourceCosts { get; set; } = new();

        /// <summary>
        /// Speed limitations and grace periods applied
        /// </summary>
        public Dictionary<string, object> SpeedConstraints { get; set; } = new();

        /// <summary>
        /// Whether march initiation was successful
        /// </summary>
        public bool Success { get; set; }

        /// <summary>
        /// When the march was initiated
        /// </summary>
        public DateTime InitiationTime { get; set; }

        /// <summary>
        /// Additional march metadata and tracking info
        /// </summary>
        public Dictionary<string, object> MarchMetadata { get; set; } = new();
    }
}