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

namespace ShadowedRealms.Shared.DTOs.Player
{
    /// <summary>
    /// Response DTO for experience processing operations
    /// </summary>
    public class ExperienceProcessingResponseDto
    {
        /// <summary>
        /// Player ID who gained experience
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Experience points gained in this processing
        /// </summary>
        public long ExperienceGained { get; set; }

        /// <summary>
        /// Previous player level
        /// </summary>
        public int PreviousLevel { get; set; }

        /// <summary>
        /// New player level after processing
        /// </summary>
        public int NewLevel { get; set; }

        /// <summary>
        /// Whether the player leveled up
        /// </summary>
        public bool LeveledUp { get; set; }

        /// <summary>
        /// Current experience points total
        /// </summary>
        public long TotalExperience { get; set; }

        /// <summary>
        /// Experience needed for next level
        /// </summary>
        public long ExperienceToNextLevel { get; set; }

        /// <summary>
        /// Bonuses and rewards received from leveling up
        /// </summary>
        public Dictionary<string, object> LevelUpRewards { get; set; } = new();

        /// <summary>
        /// New abilities or features unlocked
        /// </summary>
        public List<Dictionary<string, object>> UnlockedFeatures { get; set; } = new();

        /// <summary>
        /// Experience multipliers that were applied
        /// </summary>
        public Dictionary<string, decimal> ExperienceMultipliers { get; set; } = new();

        /// <summary>
        /// Source of the experience gain
        /// </summary>
        public string ExperienceSource { get; set; } = string.Empty;

        /// <summary>
        /// When experience was processed
        /// </summary>
        public DateTime ProcessingTime { get; set; }

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