WayPointModule.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Text;
  6. using UnityEngine;
  7. using UnityEngine.Networking;
  8. namespace WildAttack
  9. {
  10. /// <summary>
  11. /// 路径点配置结构体
  12. /// </summary>
  13. public struct WayPointData
  14. {
  15. public int id;
  16. public int spawnGroup;
  17. public int weight;
  18. public List<Vector2> wayPoint;
  19. }
  20. /// <summary>
  21. /// waypoint.csv
  22. /// </summary>
  23. public class WayPointModule : Singleton<WayPointModule>, IModule
  24. {
  25. #region Member
  26. private Dictionary<int, WayPointData> wayPointDataDic;
  27. #endregion
  28. #region Override
  29. public IEnumerator LoadCSV(string fileName, Action callback)
  30. {
  31. string sPath = CSVUtils.GetStreamingAssetPath() + "/" + fileName;
  32. UnityWebRequest www = UnityWebRequest.Get(sPath);
  33. yield return www.SendWebRequest();
  34. File.WriteAllText(Application.persistentDataPath + "/" + fileName, www.downloadHandler.text, Encoding.GetEncoding("utf-8"));
  35. www.Dispose();
  36. SaveData(CSVUtils.GetInstance().LoadFile(Application.persistentDataPath, fileName));
  37. callback();
  38. }
  39. public void SaveData(string[] lineArr)
  40. {
  41. wayPointDataDic = new Dictionary<int, WayPointData>();
  42. for (int i = 1; i < lineArr.Length; i++)
  43. {
  44. string[] data = lineArr[i].Split(',');
  45. List<Vector2> wayPoint = new List<Vector2>();
  46. for (int k = 3; k < data.Length; k++)
  47. {
  48. Vector2 point;
  49. string[] pos;
  50. if (k == 3)
  51. {
  52. pos = data[k].Split('\"')[1].Split('|');
  53. point = new Vector2(float.Parse(pos[0]), float.Parse(pos[1]));
  54. }
  55. else if (k == data.Length - 1)
  56. {
  57. pos = data[k].Split('\"')[0].Split('|');
  58. point = new Vector2(float.Parse(pos[0]), float.Parse(pos[1]));
  59. }
  60. else
  61. {
  62. pos = data[k].Split('|');
  63. point = new Vector2(float.Parse(pos[0]), float.Parse(pos[1]));
  64. }
  65. wayPoint.Add(point);
  66. }
  67. WayPointData wayPointData = new WayPointData
  68. {
  69. id = int.Parse(data[0]),
  70. spawnGroup = int.Parse(data[1]),
  71. weight = int.Parse(data[2]),
  72. wayPoint = wayPoint,
  73. };
  74. wayPointDataDic[wayPointData.id] = wayPointData;
  75. }
  76. }
  77. #endregion
  78. #region Functions
  79. public WayPointData GetData(int id)
  80. {
  81. WayPointData data = new WayPointData();
  82. if (wayPointDataDic.ContainsKey(id))
  83. {
  84. data = wayPointDataDic[id];
  85. }
  86. return data;
  87. }
  88. public List<WayPointData> GetDataByGroup(int spawnGroup)
  89. {
  90. List<WayPointData> dataList = new List<WayPointData>();
  91. foreach (var item in wayPointDataDic)
  92. {
  93. if (item.Value.spawnGroup == spawnGroup)
  94. {
  95. dataList.Add(item.Value);
  96. }
  97. }
  98. return dataList == null ? null : dataList;
  99. }
  100. public Dictionary<int, WayPointData> GetWayPointDic()
  101. {
  102. return wayPointDataDic;
  103. }
  104. #endregion
  105. }
  106. }