MonsterModule.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 MonsterData
  14. {
  15. public List<int> weponWeight;
  16. public int num;
  17. public int speed;
  18. }
  19. /// <summary>
  20. /// monster.csv
  21. /// </summary>
  22. public class MonsterModule : Singleton<MonsterModule>, IModule
  23. {
  24. #region Member
  25. private Dictionary<int, MonsterData> monsterDataDic;
  26. #endregion
  27. #region Override
  28. public IEnumerator LoadCSV(string fileName, Action callback)
  29. {
  30. string sPath = CSVUtils.GetStreamingAssetPath() + "/" + fileName;
  31. UnityWebRequest www = UnityWebRequest.Get(sPath);
  32. yield return www.SendWebRequest();
  33. File.WriteAllText(Application.persistentDataPath + "/" + fileName, www.downloadHandler.text, Encoding.GetEncoding("utf-8"));
  34. www.Dispose();
  35. SaveData(CSVUtils.GetInstance().LoadFile(Application.persistentDataPath, fileName));
  36. callback();
  37. }
  38. public void SaveData(string[] lineArr)
  39. {
  40. monsterDataDic = new Dictionary<int, MonsterData>();
  41. for (int i = 1; i < lineArr.Length; i++)
  42. {
  43. string[] data = lineArr[i].Split(',');
  44. List<int> weightList = new List<int>();
  45. weightList.Add(int.Parse(data[2].Split('\"')[1].Split('|')[1]));
  46. weightList.Add(int.Parse(data[3].Split('|')[1]));
  47. weightList.Add(int.Parse(data[4].Split('\"')[0].Split('|')[1]));
  48. MonsterData monster = new MonsterData
  49. {
  50. weponWeight = weightList,
  51. num = int.Parse(data[5]),
  52. speed = int.Parse(data[6]),
  53. };
  54. monsterDataDic[int.Parse(data[0])] = monster;
  55. }
  56. }
  57. #endregion
  58. #region Functions
  59. public MonsterData GetData(int id)
  60. {
  61. MonsterData data = new MonsterData();
  62. if (monsterDataDic != null && monsterDataDic.ContainsKey(id))
  63. {
  64. data = monsterDataDic[id];
  65. }
  66. return data;
  67. }
  68. #endregion
  69. }
  70. }