| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- 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 ProcessData
- {
- public int id;
- public List<int> monsterId;
- public List<List<int>> weight;
- public List<float> refreshTime;
- }
- /// <summary>
- /// process.csv
- /// </summary>
- public class ProcessModule : Singleton<ProcessModule>, IModule
- {
- #region Member
- public Dictionary<int, ProcessData> processDataDic;
- #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)
- {
- processDataDic = new Dictionary<int, ProcessData>();
- for (int i = 1; i < lineArr.Length; i++)
- {
- string[] data = lineArr[i].Split(',');
- List<int> idList = new List<int>();
- string[] idListStr = data[2].Split('|');
- for (int k = 0; k < idListStr.Length; k++)
- {
- idList.Add(int.Parse(idListStr[k]));
- }
- List<List<int>> weightList = new List<List<int>>();
- if (idListStr.Length == 1)
- {
- string[] weightStr = data[3].Split('|');
- List<int> weight = new List<int>();
- foreach (var item in weightStr)
- {
- weight.Add(int.Parse(item));
- }
- weightList.Add(weight);
- }
- else
- {
- for (int j = 0; j < idList.Count; j++)
- {
- List<int> weight = new List<int>();
- string[] weightStr;
- if (j == 0)
- {
- weightStr = data[j + 3].Split('\"')[1].Split('|');
- }
- else if (j == idList.Count - 1)
- {
- weightStr = data[j + 3].Split('\"')[0].Split('|');
- }
- else
- {
- weightStr = data[j + 3].Split('|');
- }
- foreach (var item in weightStr)
- {
- weight.Add(int.Parse(item));
- }
- weightList.Add(weight);
- }
- }
- List<float> timeList = new List<float>();
- string[] timeListStr = data[3 + idList.Count].Split('|');
- for (int z = 0; z < timeListStr.Length; z++)
- {
- timeList.Add(float.Parse(timeListStr[z]));
- }
- processDataDic[int.Parse(data[0])] = new ProcessData()
- {
- id = int.Parse(data[0]),
- monsterId = idList,
- weight = weightList,
- refreshTime = timeList,
- };
- }
- }
- #endregion
- #region Function
- public ProcessData GetData(int id)
- {
- ProcessData module = new ProcessData();
- if (processDataDic.ContainsKey(id))
- {
- module = processDataDic[id];
- }
- return module;
- }
- #endregion
- }
- }
|