AchievementsModule.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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.Achievements
  9. {
  10. [Serializable, HideReferenceObjectPicker]
  11. public class AchievementsModule : GameModuleBase
  12. {
  13. public override string name => "Achievements Module";
  14. [FoldoutGroup("@name"), NonSerialized, ShowInInspector, InlineEditor(InlineEditorObjectFieldModes.Boxed)] public AchievementsLibrary library;
  15. public AchievementsModule(GameConfig config) : base(config)
  16. {
  17. this.gameConfig = config;
  18. this.className = this.GetType().AssemblyQualifiedName;
  19. this.typeName = "AchievementsModule";
  20. }
  21. public override void Load(Transform parent)
  22. {
  23. if(library == null)
  24. {
  25. Debug.LogError("Missing Achievements Library.\nPlease configure the Achievements module in the Game config file.");
  26. return;
  27. }
  28. var obj = new GameObject();
  29. obj.transform.parent = parent;
  30. obj.name = "Achievements";
  31. var comp = obj.AddComponent<AchievementsController>();
  32. comp.library = library;
  33. }
  34. public override void Reset()
  35. {
  36. }
  37. public override void Destroy() { }
  38. public static AchievementsModule JSONToAchievementsModule(string data)
  39. {
  40. try
  41. {
  42. return JsonUtility.FromJson<AchievementsModule>(data);
  43. }
  44. catch (System.Exception e)
  45. {
  46. Debug.LogError($"Could not deserialize AchievementsModule: \n{e}");
  47. return new AchievementsModule(null);
  48. }
  49. }
  50. public override void OnBeforeSerialize(ObjectSerializer serializer)
  51. {
  52. if(library != null) serializer.AddScriptableObject("Achievements_Library", library);
  53. }
  54. public override void OnBeforeDeserialize(ObjectSerializer serializer)
  55. {
  56. library = (AchievementsLibrary)serializer.GetScriptableObject("Achievements_Library");
  57. }
  58. }
  59. }