using System.Collections; using System.Collections.Generic; using UnityEngine; using System; namespace ShotSimulator.Train.Info { [Serializable] public enum TrainType { Cognition, //认知 Reaction, //反应 Perceive, //觉察 Accuracy, //精准度 Speed, //速度 Track, //追踪 Customize, //自定义 } public enum TrainTaskFinishType { /// /// 时间 /// Time, /// /// 子弹数 /// BulletNums, /// /// 次数 /// Number, /// /// 自定义 /// Customize } [Serializable] public class TrainTaskDetail { public string nameID; public string detailID; public string iconAssetPath; public Sprite showTexAssetPath; } public class BaseTrainInfo : ScriptableObject { public TrainType trainType; public TrainTaskType trainTaskType; public TrainTaskDetail detail; public string trainHandleClassName; public TrainTaskFinishType finishType; public int maxNumber; public TrainFirearmConfig m_TrainFirearmConfig; public int duration; public string environmentScene; public bool bgm; public CursorType cursorType; public List metrics = new List(); [SerializeReference] public List difficultyDatas = new List(); [SerializeReference] public List scoreDatas = new List(); public virtual void ConfigDifficultyData() { difficultyDatas.Clear(); } public virtual void ConfigScoreData() { scoreDatas.Clear(); } protected void AddDifficultyData() where T : BaseDifficultyData, new() { difficultyDatas.Add(new T() { difficultyType = DifficultyType.Standard }); difficultyDatas.Add(new T() { difficultyType = DifficultyType.Advance }); difficultyDatas.Add(new T() { difficultyType = DifficultyType.Professional }); } protected void AddScoreData() where T : BaseScoreData, new() { scoreDatas.Add(new T() { difficultyType = DifficultyType.Standard }); scoreDatas.Add(new T() { difficultyType = DifficultyType.Advance }); scoreDatas.Add(new T() { difficultyType = DifficultyType.Professional }); } public T GetDifficultyData(DifficultyType type) where T : BaseDifficultyData { T data = null; for(int i = 0; i < difficultyDatas.Count; i++) { if (difficultyDatas[i].difficultyType == type) { data = difficultyDatas[i] as T; } } return data; } public T GetScoreData(DifficultyType type) where T : BaseScoreData { T data = null; for (int i = 0; i < scoreDatas.Count; i++) { if (scoreDatas[i].difficultyType == type) { data = scoreDatas[i] as T; } } return data; } } }