using UnityEngine;
using System;
using System.Collections.Generic;
using mgaia.Utils;

public abstract class RequestLetter : Letter
{    
    public AttributeInfluenceLevel InfluenceLevelRequired { get; private set; }
    public List<Choice> Choices { get; private set; }

    protected abstract string GetTextBody();
    protected abstract string GetSender();
    protected abstract Attributes GetRelatedAttribute();
    protected abstract AttributeInfluenceLevel GetInfluenceLevelRequired();
    protected abstract List<Choice> GetChoices();

    public RequestLetter()
    {
        TextBody = GetTextBody();
        Sender = GetSender();
        RelatedAttribute = GetRelatedAttribute();
        InfluenceLevelRequired = GetInfluenceLevelRequired();
        Choices = GetChoices();
        Assert.AssertTrue(Choices != null && Choices.Count > 0, "The following Request Letter has no Choices: " + GetType());
    }
}