using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; [Serializable] //abstract - changed for Unity Inspector visualisation requirements public class MissionConditionData : IModelMapper<MissionCondition> { [SerializeField] public MissionTypeEnum Type; [SerializeField] public List<RequiredSubjectData> RequiredElements = new List<RequiredSubjectData>(); /// <summary> /// Constructor implemented to create object in children classes in main purpose /// /// We DON'T implement 'RequiredElements' list here because its MUST be FILLED by objects in specific subtyped (not base one) !!! /// </summary> /// <param name="type"></param> protected MissionConditionData(MissionTypeEnum type) { Type = type; } // abstract public virtual MissionCondition MapDataToObject(string prefarbAssetName) { return new MissionCondition(Type); } // abstract public virtual MissionCondition MapDataToObject() { return new MissionCondition(Type); } /// <summary> /// Function copied from MissionCondition::Build() /// </summary> //public abstract MissionConditionData<T, V, E> Build(T missionCondition); // public static MissionConditionData Build(MissionCondition missionCondition) { switch (missionCondition.Type) { case MissionTypeEnum.Kill: { Debug.Log("Build - KillMissionCondionData"); return new KillMissionConditionData(missionCondition); } case MissionTypeEnum.Collect: { Debug.Log("Build - CollectMissionConditionData"); return new CollectMissionConditionData(missionCondition); } default: { throw new NotImplementedException("Mission Collection data - constructor"); } } } }