internal static void BuildConfigMenus(RectTransform parent) { ConfigMenus.Clear(); if (GadgetCoreAPI.GetUMFAPI() != null) { if (UMFConfigMenu == null || UMFConfigMenu.Item2 == null) { UMFConfigMenu umfConfigMenu = new UMFConfigMenu(); RectTransform menuParent = new GameObject("uModFramework", typeof(RectTransform)).GetComponent <RectTransform>(); menuParent.gameObject.SetActive(false); menuParent.SetParent(parent); menuParent.anchorMin = new Vector2(0f, 0f); menuParent.anchorMax = new Vector2(1f, 1f); menuParent.offsetMin = Vector2.zero; menuParent.offsetMax = Vector2.zero; umfConfigMenu.Build(menuParent); UMFConfigMenu = Tuple.Create <IGadgetConfigMenu, RectTransform>(umfConfigMenu, menuParent); } else { UMFConfigMenu.Item1.Reset(); } } for (int i = 0; i < ModMenuController.modEntries.Count; i++) { ModMenuEntry entry = ModMenuController.modEntries[i]; if (entry.Type == ModMenuEntryType.GADGET || entry.Type == ModMenuEntryType.UMF || entry.Type == ModMenuEntryType.DISABLED_UMF) { try { GadgetInfo gadgetForConfig = entry.Gadgets.FirstOrDefault(x => x.Attribute.Name == entry.Name); IGadgetConfigMenu configMenu = gadgetForConfig?.Gadget.GetConfigMenu(); if (configMenu != null) { RectTransform menuParent = new GameObject(entry.Name, typeof(RectTransform)).GetComponent <RectTransform>(); menuParent.gameObject.SetActive(false); menuParent.SetParent(parent); menuParent.anchorMin = new Vector2(0f, 0f); menuParent.anchorMax = new Vector2(1f, 1f); menuParent.offsetMin = Vector2.zero; menuParent.offsetMax = Vector2.zero; configMenu.Build(menuParent); ConfigMenus.Add((i << 16) + 0xFFFF, Tuple.Create(configMenu, menuParent)); } else { ConfigMenus.Add((i << 16) + 0xFFFF, null); } } catch (InvalidOperationException e) { if (e.Message == INIGadgetConfigMenu.NO_CONFIGURABLE_DATA) { ConfigMenus.Add((i << 16) + 0xFFFF, null); } else { throw; } } for (int g = 0; g < entry.Gadgets.Length; g++) { GadgetInfo gadget = entry.Gadgets[g]; try { IGadgetConfigMenu configMenu = gadget?.Gadget.GetConfigMenu(); if (configMenu != null) { RectTransform menuParent = new GameObject(gadget.Attribute.Name, typeof(RectTransform)).GetComponent <RectTransform>(); menuParent.gameObject.SetActive(false); menuParent.SetParent(parent); menuParent.anchorMin = new Vector2(0f, 0f); menuParent.anchorMax = new Vector2(1f, 1f); menuParent.offsetMin = Vector2.zero; menuParent.offsetMax = Vector2.zero; configMenu.Build(menuParent); ConfigMenus.Add((i << 16) + g, Tuple.Create(configMenu, menuParent)); } else { ConfigMenus.Add((i << 16) + g, null); } } catch (InvalidOperationException e) { if (e.Message == INIGadgetConfigMenu.NO_CONFIGURABLE_DATA) { ConfigMenus.Add((i << 16) + g, null); } else { throw; } } } } } }
internal static void BuildConfigMenus(RectTransform parent) { UMFConfigMenu umfConfigMenu = new UMFConfigMenu(); if (umfConfigMenu != null) { RectTransform menuParent = new GameObject("uModFramework", typeof(RectTransform)).GetComponent <RectTransform>(); menuParent.gameObject.SetActive(false); menuParent.SetParent(parent); menuParent.anchorMin = new Vector2(0f, 0f); menuParent.anchorMax = new Vector2(1f, 1f); menuParent.offsetMin = Vector2.zero; menuParent.offsetMax = Vector2.zero; umfConfigMenu.Build(menuParent); UMFConfigMenu = Tuple.Create <IGadgetConfigMenu, RectTransform>(umfConfigMenu, menuParent); } ConfigMenus = new List <Tuple <IGadgetConfigMenu, RectTransform> >(); GadgetModInfo[] gadgetMods = GadgetMods.ListAllModInfos(); string[] allMods = gadgetMods.Select(x => x.Attribute.Name).Concat(GadgetCore.nonGadgetMods).Concat(GadgetCore.disabledMods).Concat(GadgetCore.incompatibleMods).Concat(GadgetCore.packedMods).ToArray(); for (int i = 0; i < allMods.Length; i++) { try { if (i < gadgetMods.Length) { IGadgetConfigMenu configMenu = gadgetMods[i].Mod.GetConfigMenu(); if (configMenu != null) { RectTransform menuParent = new GameObject(allMods[i], typeof(RectTransform)).GetComponent <RectTransform>(); menuParent.gameObject.SetActive(false); menuParent.SetParent(parent); menuParent.anchorMin = new Vector2(0f, 0f); menuParent.anchorMax = new Vector2(1f, 1f); menuParent.offsetMin = Vector2.zero; menuParent.offsetMax = Vector2.zero; configMenu.Build(menuParent); ConfigMenus.Add(Tuple.Create(configMenu, menuParent)); } else { ConfigMenus.Add(null); } } else { try { IGadgetConfigMenu configMenu = new UMFGadgetConfigMenu(allMods[i], false, Path.Combine(UMFData.ConfigsPath, allMods[i]) + ".ini"); if (configMenu != null) { RectTransform menuParent = new GameObject(allMods[i], typeof(RectTransform)).GetComponent <RectTransform>(); menuParent.gameObject.SetActive(false); menuParent.SetParent(parent); menuParent.anchorMin = new Vector2(0f, 0f); menuParent.anchorMax = new Vector2(1f, 1f); menuParent.offsetMin = Vector2.zero; menuParent.offsetMax = Vector2.zero; configMenu.Build(menuParent); ConfigMenus.Add(Tuple.Create(configMenu, menuParent)); } else { ConfigMenus.Add(null); } } catch (InvalidOperationException e) { if (e.Message == UMFGadgetConfigMenu.NO_CONFIGURABLE_DATA) { ConfigMenus.Add(null); } else { throw; } } } } catch { ConfigMenus.Add(null); throw; } } }