StatisticsModule.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using KairoEngine.Core;
  6. using KairoEngine.Core.ModuleSystem;
  7. using Sirenix.OdinInspector;
  8. namespace KairoEngine.Utilities.Statistics
  9. {
  10. [Serializable, HideReferenceObjectPicker]
  11. public class StatisticsModule : GameModuleBase
  12. {
  13. public override string name => "Statistics Module";
  14. [FoldoutGroup("@name"), NonSerialized, ShowInInspector, InlineEditor(InlineEditorObjectFieldModes.Boxed)] public StatisticsLibrary database;
  15. public StatisticsModule(GameConfig config) : base(config)
  16. {
  17. this.gameConfig = config;
  18. this.className = this.GetType().AssemblyQualifiedName;
  19. this.typeName = "StatisticsModule";
  20. }
  21. public override void Load(Transform parent)
  22. {
  23. if(database == null)
  24. {
  25. Debug.LogError("Missing statistics database.\nPlease configure the statistics module in the Game config file.");
  26. return;
  27. }
  28. var obj = new GameObject();
  29. obj.transform.parent = parent;
  30. obj.name = "Statistics";
  31. var comp = obj.AddComponent<Statistics>();
  32. comp.db = database;
  33. }
  34. public override void Reset()
  35. {
  36. }
  37. public override void Destroy() { }
  38. public static StatisticsModule JSONToStatisticsModule(string data)
  39. {
  40. try
  41. {
  42. return JsonUtility.FromJson<StatisticsModule>(data);
  43. }
  44. catch (System.Exception e)
  45. {
  46. Debug.LogError($"Could not deserialize StatisticsModule: \n{e}");
  47. return new StatisticsModule(null);
  48. }
  49. }
  50. public override void OnBeforeSerialize(ObjectSerializer serializer)
  51. {
  52. if(database != null) serializer.AddScriptableObject("Statistics_Database", database);
  53. }
  54. public override void OnBeforeDeserialize(ObjectSerializer serializer)
  55. {
  56. database = (StatisticsLibrary)serializer.GetScriptableObject("Statistics_Database");
  57. }
  58. }
  59. }