using EllieBot.Db.Models;

namespace EllieBot.Modules.Games.Quests;

public interface IQuest
{
    QuestIds QuestId { get; }
    string Name  { get; }
    string Desc  { get; }
    string ProgDesc  { get; }
    QuestEventType EventType { get; }
    long RequiredAmount { get; }

    public long TryUpdateProgress(IDictionary<string, string> metadata, long oldProgress);

    public virtual string ToString(long progress)
        => GetEmoji(progress, RequiredAmount) + $" [{progress}/{RequiredAmount}] " + ProgDesc;

    public static string GetEmoji(long progress, long requiredAmount)
        => progress >= requiredAmount
            ? COMPLETED
            : INCOMPLETE;
    
    /// <summary>
    /// Completed Emoji
    /// </summary>
    public const string COMPLETED = "\\✅";

    /// <summary>
    /// Incomplete Emoji
    /// </summary>
    public const string INCOMPLETE = "\\❌";
}