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