EnemyDataPreload.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System;
  2. using System.Collections.Generic;
  3. using ExtensionMethods;
  4. using LitJson;
  5. using UnityEngine;
  6. public class EnemyDataPreload : SingletonMono<EnemyDataPreload>
  7. {
  8. private void Awake()
  9. {
  10. this.DataInit(this.attackData, this.attack);
  11. Log.Info("attackData is loaded");
  12. this.DataInit(this.hurtData, this.hurt);
  13. Log.Info("hurtData is loaded");
  14. this.VibrationData = this.ParseJson<float[][]>("VibrationConfig");
  15. }
  16. private void DataInit(EnemyDataPreload.EnemyData[] data, IDictionary<EnemyType, JsonData> dict)
  17. {
  18. for (int i = 0; i < data.Length; i++)
  19. {
  20. dict.Add(data[i].type, JsonMapper.ToObject(data[i].text.text));
  21. }
  22. }
  23. private T ParseJson<T>(string name)
  24. {
  25. return Asset.DeserializeFromFile<T>("Conf/", name);
  26. }
  27. [ContextMenu("load")]
  28. private void Load()
  29. {
  30. string[] names = Enum.GetNames(typeof(EnemyType));
  31. this.attackData = new EnemyDataPreload.EnemyData[names.Length];
  32. this.hurtData = new EnemyDataPreload.EnemyData[names.Length];
  33. for (int i = 0; i < names.Length; i++)
  34. {
  35. this.attackData[i] = new EnemyDataPreload.EnemyData();
  36. this.hurtData[i] = new EnemyDataPreload.EnemyData();
  37. this.attackData[i].type = names[i].ToEnum<EnemyType>(false);
  38. this.hurtData[i].type = names[i].ToEnum<EnemyType>(false);
  39. }
  40. }
  41. [SerializeField]
  42. private EnemyDataPreload.EnemyData[] attackData;
  43. [SerializeField]
  44. private EnemyDataPreload.EnemyData[] hurtData;
  45. public Dictionary<EnemyType, JsonData> attack = new Dictionary<EnemyType, JsonData>();
  46. public Dictionary<EnemyType, JsonData> hurt = new Dictionary<EnemyType, JsonData>();
  47. public float[][] VibrationData;
  48. [Serializable]
  49. public class EnemyData
  50. {
  51. public TextAsset text;
  52. public EnemyType type;
  53. }
  54. }