public static void SyncFortAndSave(this LanguageEditorInfo languageEditorInfo, bool saveFort) { foreach (LanguageInfo languageInfo in languageEditorInfo.Languages) { for (int i = 0; i < InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages.Length; i++) { if (InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages[i].Id == languageInfo.Id) { InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages[i] = languageInfo; } } if (InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage != null && InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage.Id == languageInfo.Id) { InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage = languageInfo; } } if (saveFort) { InfoResolver.Resolve <FortInfo>().Save(); } languageEditorInfo.Save(); }
public static void FixLanguage() { LanguageItem[] languageItems = TypeHelper.FindType(InfoResolver.Resolve <FortInfo>(), typeof(LanguageItem)).Cast <LanguageItem>().ToArray(); List <string> removedItems = new List <string>(); LanguageEditorInfo languageEditorInfo = EditorInfoResolver.Resolve <LanguageEditorInfo>(); foreach (LanguageInfo languageInfo in languageEditorInfo.Languages) { foreach (KeyValuePair <string, object> pair in languageInfo.LanguageDatas) { if (languageItems.All(item => item.Id != pair.Key)) { removedItems.Add(pair.Key); } } } FortInfo fortInfo = InfoResolver.Resolve <FortInfo>(); foreach (string removedItem in removedItems) { foreach (LanguageInfo activeLanguage in fortInfo.Language.ActiveLanguages) { if (activeLanguage.LanguageDatas.ContainsKey(removedItem)) { activeLanguage.LanguageDatas.Remove(removedItem); } } foreach (LanguageInfo languageInfo in languageEditorInfo.Languages) { if (languageInfo.LanguageDatas.ContainsKey(removedItem)) { languageInfo.LanguageDatas.Remove(removedItem); } } } fortInfo.Save(); languageEditorInfo.Save(); }
private static Change ApplyNotOvveriededLanguageItem(PresentationParamater parameter, LanguageItem languageItem, Type itemType, PresentationSite presentationSite, PresentationData presentationData) { GUIStyle guiStyle = new GUIStyle(); Change change = new Change(); List <Change> changes = new List <Change>(); LanguageEditorInfo languageEditorInfo = EditorInfoResolver.Resolve <LanguageEditorInfo>(); LanguageInfo[] languageInfos = languageEditorInfo.Languages.Where(info => info != null).ToArray(); if (languageInfos.Length == 1) { ApplyLanguagePrenetation(parameter, languageInfos[0], languageItem, itemType, presentationSite, presentationData, changes, parameter.Title); Change last = changes.Last(); if (last.IsAnyDataChanged()) { for (int i = 0; i < InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages.Length; i++) { if (InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages[i].Id == languageInfos[0].Id) { InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages[i] = languageInfos[0]; } } if (InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage != null && InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage.Id == languageInfos[0].Id) { InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage = languageInfos[0]; } languageEditorInfo.Save(); InfoResolver.Resolve <FortInfo>().Save(); } } else { bool oldFoldout = presentationData.IsFoldout; presentationData.IsFoldout = EditorGUILayout.Foldout(presentationData.IsFoldout, parameter.Title); change.IsPresentationChanged = oldFoldout != presentationData.IsFoldout; if (presentationData.IsFoldout) { EditorGUILayout.BeginHorizontal(guiStyle); GUILayout.Space(FortInspector.ItemSpacing); EditorGUILayout.BeginVertical(guiStyle); foreach (LanguageInfo languageInfo in languageInfos) { ApplyLanguagePrenetation(parameter, languageInfo, languageItem, itemType, presentationSite, presentationData, changes, languageInfo.Name); Change last = changes.Last(); if (last.IsAnyDataChanged()) { for (int i = 0; i < InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages.Length; i++) { if (InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages[i].Id == languageInfo.Id) { InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages[i] = languageInfo; } } if (InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage != null && InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage.Id == languageInfo.Id) { InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage = languageInfo; } } } if (changes.Any(change1 => change1.IsAnyDataChanged())) { languageEditorInfo.Save(); InfoResolver.Resolve <FortInfo>().Save(); } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); } } change.ChildrenChange = changes.ToArray(); return(change); }
private static Change ApplyOvveriededLanguageItem(PresentationParamater parameter, LanguageItem languageItem, Type itemType, PresentationSite presentationSite, PresentationData presentationData) { GUIStyle guiStyle = new GUIStyle(); Change change = new Change(); List <Change> changes = new List <Change>(); LanguageEditorInfo languageEditorInfo = EditorInfoResolver.Resolve <LanguageEditorInfo>(); LanguageInfo[] languageInfos = languageEditorInfo.Languages.Where(info => info != null).ToArray(); IInfoLanguageItem infoLanguageItem = (IInfoLanguageItem)languageItem; if (languageInfos.Length == 1) { if (!infoLanguageItem.UseOverridedValue) { change.IsDataChanged = true; //Remove Item From Languages foreach (LanguageInfo languageInfo in languageEditorInfo.Languages) { if (languageInfo.LanguageDatas.ContainsKey(languageItem.Id)) { languageInfo.LanguageDatas.Remove(languageItem.Id); } } } infoLanguageItem.UseOverridedValue = true; Presentation presentation = parameter.FortInspector.GetResolver() .Resolve(new PresentationResolverParameter(itemType, infoLanguageItem.GetOvverideValue(), presentationSite)); PresentationResult presentationResult = presentation.OnInspectorGui(new PresentationParamater(infoLanguageItem.GetOvverideValue(), presentationData.OvverideItemPresentationData, parameter.Title, itemType, presentationSite, parameter.FortInspector)); infoLanguageItem.SetOvverideValue(presentationResult.Result); presentationData.OvverideItemPresentationData = presentationResult.PresentationData; change.ChildrenChange = new[] { presentationResult.Change }; languageEditorInfo.SyncFortAndSave(false); } else { bool oldFoldout = presentationData.IsFoldout; presentationData.IsFoldout = EditorGUILayout.Foldout(presentationData.IsFoldout, parameter.Title); change.IsPresentationChanged = oldFoldout != presentationData.IsFoldout; if (presentationData.IsFoldout) { EditorGUILayout.BeginHorizontal(guiStyle); GUILayout.Space(FortInspector.ItemSpacing); EditorGUILayout.BeginVertical(guiStyle); bool oldUseOverridedValue = infoLanguageItem.UseOverridedValue; infoLanguageItem.UseOverridedValue = EditorGUILayout.Toggle("Ovveride", infoLanguageItem.UseOverridedValue); change.IsDataChanged |= oldUseOverridedValue != infoLanguageItem.UseOverridedValue; if (infoLanguageItem.UseOverridedValue) { Presentation presentation = parameter.FortInspector.GetResolver() .Resolve(new PresentationResolverParameter(itemType, infoLanguageItem.GetOvverideValue(), presentationSite)); PresentationResult presentationResult = presentation.OnInspectorGui(new PresentationParamater(infoLanguageItem.GetOvverideValue(), presentationData.OvverideItemPresentationData, parameter.Title, itemType, presentationSite, parameter.FortInspector)); infoLanguageItem.SetOvverideValue(presentationResult.Result); presentationData.OvverideItemPresentationData = presentationResult.PresentationData; change.ChildrenChange = new[] { presentationResult.Change }; languageEditorInfo.SyncFortAndSave(false); } else { infoLanguageItem.SetOvverideValue(itemType.GetDefault()); foreach (LanguageInfo languageInfo in languageInfos) { ApplyLanguagePrenetation(parameter, languageInfo, languageItem, itemType, presentationSite, presentationData, changes, languageInfo.Name); Change last = changes.Last(); if (last.IsAnyDataChanged()) { for (int i = 0; i < InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages.Length; i++) { if (InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages[i].Id == languageInfo.Id) { InfoResolver.Resolve <FortInfo>().Language.ActiveLanguages[i] = languageInfo; } } if (InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage != null && InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage.Id == languageInfo.Id) { InfoResolver.Resolve <FortInfo>().Language.DefaultLanguage = languageInfo; } } } if (changes.Any(change1 => change1.IsAnyDataChanged())) { languageEditorInfo.Save(); InfoResolver.Resolve <FortInfo>().Save(); } } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); } change.ChildrenChange = changes.ToArray(); } return(change); }