///<summary> RETURN an array of missing language from the new language data</summary> private string[] MissLanguage(AvailableLanguageData aOldData, AvailableLanguageData aNewData) { List <string> miss = new List <string>(); if (aNewData == null) { for (int i = 0; i < aOldData.GetAvailableLanguageCount(); i++) { miss.Add(aOldData.GetLanguage(i).ToString()); } } else { bool haveIn = false; for (int i = 0; i < aOldData.GetAvailableLanguageCount(); i++) { for (int k = 0; k < aNewData.GetAvailableLanguageCount(); k++) { if (aOldData.GetLanguage(i) == aNewData.GetLanguage(k)) { k = aNewData.GetAvailableLanguageCount(); Debug.Log(aOldData.GetLanguage(i) + " " + aNewData.GetLanguage(k)); haveIn = true; } } if (!haveIn) { miss.Add(aOldData.GetLanguage(i).ToString()); } } } return(miss.ToArray()); }
///<summary> Check if there's a valid AvailableLanguageData set in the manager</summary> private void CheckIfDataExist() { if (m_AvailableLanguageData.objectReferenceValue != null) { m_CanShowOptions.target = true; m_LanguageData = (AvailableLanguageData)m_AvailableLanguageData.objectReferenceValue; m_LanguageData.EDITOR_InitLanguageIsNeed(); } else { m_CanShowOptions.target = false; } }
private void GetDatas() { m_Language = (MultiLanguageData)serializedObject.targetObject; GetData(ref m_AvailableLanguageData, nameof(m_AvailableLanguageData)); if ((AvailableLanguageData)AssetDatabase.LoadAssetAtPath(AvailableLanguage.AvailableLanguagePath, typeof(AvailableLanguageData)) != null) { m_AvailableLanguage = (AvailableLanguageData)AssetDatabase.LoadAssetAtPath(AvailableLanguage.AvailableLanguagePath, typeof(AvailableLanguageData)); m_Language.EDITOR_UpdateDictionnary(m_AvailableLanguage); } else { m_AvailableLanguage = null; } GetData(ref m_TypeChoice, nameof(m_TypeChoice)); GetData(ref m_MultiClips, nameof(m_MultiClips)); }
///<summary> [ONLY IN EDITOR], update dictionnary with the available Language </summary> public void EDITOR_UpdateDictionnary(AvailableLanguageData aLanguages) { foreach (KeyValuePair <SystemLanguage, sMultiLanguageValue> entry in m_MultiLanguageValues.ToList()) { if (!DictionaryHaveSameKey(entry, aLanguages)) { m_MultiLanguageValues.Remove(entry.Key); } } for (int i = 0; i < aLanguages.GetAvailableLanguageCount(); i++) { if (!HaveLanguage(aLanguages.GetLanguage(i))) { AddLanguage(aLanguages.GetLanguage(i)); } } }
//----------------- Update Dictionnary Function(s) ---------------- ///<summary> If the dictionnary have the key in it </summary> private bool DictionaryHaveSameKey(KeyValuePair <SystemLanguage, sMultiLanguageValue> aEntry, AvailableLanguageData aAvailableLanguage) { for (int i = 0; i < aAvailableLanguage.GetAvailableLanguageCount(); i++) { if (aAvailableLanguage.GetLanguage(i) == aEntry.Key) { return(true); } } return(false); }