using System; using System.Collections.Generic; using UnityEngine; using OctoCore.Save; namespace OctoCore.Localization { [CreateAssetMenu(fileName = "text_", menuName = "Octo/Localization/Text", order = 0)] public class OctoLocalizedTextData : ScriptableObject { public OctoSerializableDictionary Languages = new OctoSerializableDictionary(); #if UNITY_EDITOR private void OnValidate() { Init(); } public void Init() { bool modified = false; var oldValues = new Dictionary(Languages.Dictionary); var newDict = new Dictionary(); foreach (string lang in Enum.GetNames(typeof(OctoLanguages))) { if (oldValues.TryGetValue(lang, out string oldText)) { newDict[lang] = oldText; } else { newDict[lang] = string.Empty; modified = true; } } Languages.Dictionary.Clear(); foreach (var kvp in newDict) Languages.Dictionary[kvp.Key] = kvp.Value; if (modified) UnityEditor.EditorUtility.SetDirty(this); } #endif } }