From d2ab30e7a69bfe7efda63ae75812207377917bd3 Mon Sep 17 00:00:00 2001
From: miepzerino <o.skotnik@gmail.com>
Date: Sun, 30 Mar 2025 18:50:27 +0000
Subject: [PATCH] Merge branch 'Flexalon-UI-Layouts' into develop

---
 Assets/Flexalon/Runtime/Core/FlexalonDict.cs |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/Assets/Flexalon/Runtime/Core/FlexalonDict.cs b/Assets/Flexalon/Runtime/Core/FlexalonDict.cs
new file mode 100644
index 0000000..1fd3713
--- /dev/null
+++ b/Assets/Flexalon/Runtime/Core/FlexalonDict.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Flexalon
+{
+    [Serializable]
+    internal class FlexalonDict<K, V> : ISerializationCallbackReceiver
+    {
+        private Dictionary<K, V> _dict = new Dictionary<K, V>();
+
+        [SerializeField]
+        private List<K> _keys = new List<K>();
+
+        [SerializeField]
+        private List<V> _values = new List<V>();
+
+        public void Add(K key, V value)
+        {
+            _dict.Add(key, value);
+        }
+
+        public bool TryGetValue(K key, out V value)
+        {
+            return _dict.TryGetValue(key, out value);
+        }
+
+        public void Clear()
+        {
+            _dict.Clear();
+        }
+
+        public int Count => _dict.Count;
+
+        public void OnBeforeSerialize()
+        {
+            _keys.Clear();
+            _values.Clear();
+
+            foreach (var kvp in _dict)
+            {
+                _keys.Add(kvp.Key);
+                _values.Add(kvp.Value);
+            }
+        }
+
+        public void OnAfterDeserialize()
+        {
+            _dict.Clear();
+            for (int i = 0; i < _keys.Count; i++)
+            {
+                _dict.Add(_keys[i], _values[i]);
+            }
+
+            _keys.Clear();
+            _values.Clear();
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3