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 { [SerializeField] public MissionTypeEnum Type; [SerializeField] public List RequiredElements = new List(); /// /// 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) !!! /// /// 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); } /// /// Function copied from MissionCondition::Build() /// //public abstract MissionConditionData 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"); } } } }