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;
}
}
}