Browse Source

Added library to GameModule

James Peret 2 years ago
parent
commit
6e518bd691
3 changed files with 65 additions and 5 deletions
  1. 36 0
      Runtime/UiSystemLibrary.cs
  2. 11 0
      Runtime/UiSystemLibrary.cs.meta
  3. 18 5
      Runtime/UiSystemModule.cs

+ 36 - 0
Runtime/UiSystemLibrary.cs

@@ -0,0 +1,36 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Sirenix.OdinInspector;
+
+namespace KairoEngine.UI
+{
+    [CreateAssetMenu(fileName = "Ui Library", menuName = "KairoEngine/UiSystemLibrary"), HideMonoScript]
+    public class UiSystemLibrary : ScriptableObject
+    {
+        public List<UiSystemLibraryItem> elements = new List<UiSystemLibraryItem>();
+
+        public void Load(Transform parent)
+        {
+            for (int i = 0; i < elements.Count; i++) InstantiateElement(parent, i);
+        }
+
+        private void InstantiateElement(Transform parent, int index)
+        {
+            if(elements[index] == null)
+            {
+                Debug.LogError("Error loading UI Library item, missing prefab.");
+                return;
+            }
+            var obj = GameObject.Instantiate(elements[index].uiPrefab, parent);
+            obj.name = (elements[index].uiPrefab.name).Replace("Prefab", "");
+        }
+    }
+
+    [System.Serializable]
+    public class UiSystemLibraryItem
+    {
+        [HorizontalGroup("line", 0.015f), HideLabel] public bool visibleOnStart = false;
+        [HorizontalGroup("line", 0.985f), HideLabel] public GameObject uiPrefab;
+    }
+}

+ 11 - 0
Runtime/UiSystemLibrary.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 51af89ae7acbbaf4bafeb3839661cb22
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 18 - 5
Runtime/UiSystemModule.cs

@@ -13,6 +13,9 @@ namespace KairoEngine.UI
     {
         public override string name => "UI Module";
 
+        [FoldoutGroup("@name"), InlineEditor(InlineEditorObjectFieldModes.Boxed), LabelText("UI Library"), NonSerialized, ShowInInspector] 
+        public UiSystemLibrary library;
+
         public UiSystemModule(GameConfig config) : base(config)
         {
             this.gameConfig = config;
@@ -23,12 +26,11 @@ namespace KairoEngine.UI
         public override void Load(Transform parent)
         {
             Transform uiParent = CreateUiManager(parent);
-            Debug.Log("UI System has been loaded");
         }
 
         public override void Reset()
         {
-
+            library = null;
         }
 
         public override void Destroy()
@@ -42,11 +44,15 @@ namespace KairoEngine.UI
             GameObject uiObj;
             if(UiTransform == null) 
             {
-                uiObj = GameObject.Instantiate(new GameObject(), new Vector3(), Quaternion.identity, parent);
+                uiObj = new GameObject();
+                uiObj.transform.position = new Vector3();
+                uiObj.transform.rotation = Quaternion.identity;
+                uiObj.transform.parent = parent;
                 uiObj.name = "UI";
             }
             else uiObj = UiTransform.gameObject;
             uiObj.AddComponent<UiManager>();
+            if(library != null) library.Load(uiObj.transform);
             return uiObj.transform;
         }
 
@@ -63,8 +69,15 @@ namespace KairoEngine.UI
             }
         }
 
-        public override void OnBeforeSerialize(ObjectSerializer serializer) { }
-        public override void OnBeforeDeserialize(ObjectSerializer serializer) { }
+        public override void OnBeforeSerialize(ObjectSerializer serializer) 
+        { 
+            if(library != null) serializer.AddScriptableObject("UiModule_UiSystemLibrary", library);
+        }
+
+        public override void OnBeforeDeserialize(ObjectSerializer serializer) 
+        { 
+            library = (UiSystemLibrary)serializer.GetScriptableObject("UiModule_UiSystemLibrary");
+        }
     }
 }