using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; using UnityEngine; using UnityEngine.Networking; namespace WildAttack { /// /// 路径点配置结构体 /// public struct WayPointData { public int id; public int spawnGroup; public int weight; public List wayPoint; } /// /// waypoint.csv /// public class WayPointModule : Singleton, IModule { #region Member private Dictionary wayPointDataDic; #endregion #region Override public IEnumerator LoadCSV(string fileName, Action callback) { string sPath = CSVUtils.GetStreamingAssetPath() + "/" + fileName; UnityWebRequest www = UnityWebRequest.Get(sPath); yield return www.SendWebRequest(); File.WriteAllText(Application.persistentDataPath + "/" + fileName, www.downloadHandler.text, Encoding.GetEncoding("utf-8")); www.Dispose(); SaveData(CSVUtils.GetInstance().LoadFile(Application.persistentDataPath, fileName)); callback(); } public void SaveData(string[] lineArr) { wayPointDataDic = new Dictionary(); for (int i = 1; i < lineArr.Length; i++) { string[] data = lineArr[i].Split(','); List wayPoint = new List(); for (int k = 3; k < data.Length; k++) { Vector2 point; string[] pos; if (k == 3) { pos = data[k].Split('\"')[1].Split('|'); point = new Vector2(float.Parse(pos[0]), float.Parse(pos[1])); } else if (k == data.Length - 1) { pos = data[k].Split('\"')[0].Split('|'); point = new Vector2(float.Parse(pos[0]), float.Parse(pos[1])); } else { pos = data[k].Split('|'); point = new Vector2(float.Parse(pos[0]), float.Parse(pos[1])); } wayPoint.Add(point); } WayPointData wayPointData = new WayPointData { id = int.Parse(data[0]), spawnGroup = int.Parse(data[1]), weight = int.Parse(data[2]), wayPoint = wayPoint, }; wayPointDataDic[wayPointData.id] = wayPointData; } } #endregion #region Functions public WayPointData GetData(int id) { WayPointData data = new WayPointData(); if (wayPointDataDic.ContainsKey(id)) { data = wayPointDataDic[id]; } return data; } public List GetDataByGroup(int spawnGroup) { List dataList = new List(); foreach (var item in wayPointDataDic) { if (item.Value.spawnGroup == spawnGroup) { dataList.Add(item.Value); } } return dataList == null ? null : dataList; } public Dictionary GetWayPointDic() { return wayPointDataDic; } #endregion } }