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

namespace ShadowedRealms.Shared.DTOs.Combat
{
    /// <summary>
    /// Response DTO for march arrival events and outcomes
    /// </summary>
    public class MarchArrivalResponseDto
    {
        /// <summary>
        /// March ID that arrived
        /// </summary>
        public int MarchId { get; set; }

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

        /// <summary>
        /// March type that arrived
        /// </summary>
        public string MarchType { get; set; } = string.Empty;

        /// <summary>
        /// Actual arrival coordinates
        /// </summary>
        public Dictionary<string, decimal> ArrivalCoordinates { get; set; } = new();

        /// <summary>
        /// Troops that arrived at destination
        /// </summary>
        public Dictionary<string, long> ArrivingTroops { get; set; } = new();

        /// <summary>
        /// Dragon status upon arrival
        /// </summary>
        public Dictionary<string, object>? DragonArrival { get; set; }

        /// <summary>
        /// Whether arrival triggered immediate combat
        /// </summary>
        public bool TriggeredCombat { get; set; }

        /// <summary>
        /// Combat log ID if battle occurred
        /// </summary>
        public int? CombatLogId { get; set; }

        /// <summary>
        /// Field interception that occurred during march
        /// </summary>
        public Dictionary<string, object>? InterceptionResults { get; set; }

        /// <summary>
        /// Resources gained or lost upon arrival
        /// </summary>
        public Dictionary<string, long> ResourceChanges { get; set; } = new();

        /// <summary>
        /// March duration and timing analysis
        /// </summary>
        public Dictionary<string, object> MarchTiming { get; set; } = new();

        /// <summary>
        /// Experience gained from the march/arrival
        /// </summary>
        public long ExperienceGained { get; set; }

        /// <summary>
        /// When the march arrived
        /// </summary>
        public DateTime ArrivalTime { get; set; }

        /// <summary>
        /// Additional arrival event data
        /// </summary>
        public Dictionary<string, object> ArrivalEventData { get; set; } = new();
    }
}