using QYZH.InteractiveMagazine.Models.Enum;

namespace QYZH.InteractiveMagazine.Models.Dto.Pet;

/// <summary>
/// 进化阶段创建/更新输入
/// </summary>
public class PetEvolutionInput
{
    /// <summary>
    /// 所属宠物模板Id
    /// </summary>
    public long TemplateId { get; set; }

    /// <summary>
    /// 阶段名称
    /// </summary>
    public string StageName { get; set; } = string.Empty;

    /// <summary>
    /// 阶段等级
    /// </summary>
    public int StageLevel { get; set; }

    /// <summary>
    /// 进化所需成长值
    /// </summary>
    public int RequiredGrowth { get; set; }

    /// <summary>
    /// 前一形态Id（null表示初始形态）
    /// </summary>
    public long? PreviousEvolutionId { get; set; }

    /// <summary>
    /// 基础力量
    /// </summary>
    public int BaseStrength { get; set; }

    /// <summary>
    /// 基础敏捷
    /// </summary>
    public int BaseAgility { get; set; }

    /// <summary>
    /// 基础智力
    /// </summary>
    public int BaseIntelligence { get; set; }

    /// <summary>
    /// 基础魅力
    /// </summary>
    public int BaseCharm { get; set; }

    /// <summary>
    /// 进化类型: Normal, Special
    /// </summary>
    public string Type { get; set; } = PetEvolutionTypeEnum.Normal.ToString();
}

/// <summary>
/// 进化阶段输出
/// </summary>
public class PetEvolutionOutput
{
    public long Id { get; set; }
    public long TemplateId { get; set; }
    public string StageName { get; set; } = string.Empty;
    public int StageLevel { get; set; }
    public int RequiredGrowth { get; set; }
    public long? PreviousEvolutionId { get; set; }
    public int BaseStrength { get; set; }
    public int BaseAgility { get; set; }
    public int BaseIntelligence { get; set; }
    public int BaseCharm { get; set; }
    public string Type { get; set; } = string.Empty;
    public string Status { get; set; } = string.Empty;
    public string? CreatedBy { get; set; }
    public DateTime CreatedAt { get; set; }
    public string? UpdatedBy { get; set; }
    public DateTime? UpdatedAt { get; set; }
}

/// <summary>
/// 进化阶段分页查询输入
/// </summary>
public class PetEvolutionQueryInput : PageQueryModel
{
    /// <summary>
    /// 所属宠物模板Id（必填）
    /// </summary>
    public long TemplateId { get; set; }

    /// <summary>
    /// 阶段名称（模糊搜索）
    /// </summary>
    public string? StageName { get; set; }
}
