| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using UnityEngine;
- using UnityEngine.Networking;
- namespace WildAttack
- {
- /// <summary>
- /// 路径点配置结构体
- /// </summary>
- public struct WayPointData
- {
- public int id;
- public int spawnGroup;
- public int weight;
- public List<Vector2> wayPoint;
- }
- /// <summary>
- /// waypoint.csv
- /// </summary>
- public class WayPointModule : Singleton<WayPointModule>, IModule
- {
- #region Member
- private Dictionary<int, WayPointData> 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<int, WayPointData>();
- for (int i = 1; i < lineArr.Length; i++)
- {
- string[] data = lineArr[i].Split(',');
- List<Vector2> wayPoint = new List<Vector2>();
- 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<WayPointData> GetDataByGroup(int spawnGroup)
- {
- List<WayPointData> dataList = new List<WayPointData>();
- foreach (var item in wayPointDataDic)
- {
- if (item.Value.spawnGroup == spawnGroup)
- {
- dataList.Add(item.Value);
- }
- }
- return dataList == null ? null : dataList;
- }
- public Dictionary<int, WayPointData> GetWayPointDic()
- {
- return wayPointDataDic;
- }
- #endregion
- }
- }
|