public static void InitUI() { Transform titleScreenHolder = GameUIRoot.Instance.TitleScreenUI.RootButtonsContainer.GetChild(0); Transform singleplayerButtonCopy = GameObject.Instantiate(titleScreenHolder.GetChild(1), titleScreenHolder); singleplayerButtonCopy.SetSiblingIndex(2); singleplayerButtonCopy.position -= new Vector3(0, 1.5f); LocalizedTextField localizedTextField = singleplayerButtonCopy.GetChild(0).GetComponent<LocalizedTextField>(); localizedTextField.LocalizationID = "moddedmultiplayermainmenumutton"; Accessor.CallPrivateMethod("tryLocalizeTextField", localizedTextField); Button button = singleplayerButtonCopy.GetComponent<Button>(); button.onClick = new Button.ButtonClickedEvent(); // remove old events button.onClick.AddListener(OnModdedMultiplayerClicked); titleScreenHolder.GetChild(1).position += new Vector3(0, 0.8f); titleScreenHolder.GetChild(3).position -= new Vector3(0, 1f); ModdedMultiplayerSelectScreen = GameObject.Instantiate(GameUIRoot.Instance.TitleScreenUI.SingleplayerModeSelectScreen.transform, GameUIRoot.Instance.transform).GetComponent<GameModeSelectScreen>(); Button xButton = ModdedMultiplayerSelectScreen.transform.GetChild(1).GetChild(1).GetComponent<Button>(); xButton.onClick = new Button.ButtonClickedEvent(); xButton.onClick.AddListener(ModdedMultiplayerSelectScreen.Hide); xButton.onClick.AddListener(delegate { setLogoAndRootButtonsVisible(true); }); UnityEngine.Events.UnityEvent unityEvent = new UnityEngine.Events.UnityEvent(); unityEvent.AddListener(delegate () { ModdedMultiplayerSelectScreen.Hide(); Internal.ServerRunner.StartServer(); }); ModdedMultiplayerSelectScreen.GameModeData = new GameModeCardData[1]; ModdedMultiplayerSelectScreen.GameModeData[0] = new GameModeCardData() { Description = "test", NameOfMode = "test name", DisableOnConsoles = true, ClickedCallback = unityEvent }; }
/* New mod loading system * void toggleIsModDisabled(LoadedModInfo mod) * { * if (mod == null) * return; * mod.IsEnabled = !mod.IsEnabled; * * ReloadModItems(); * } */ // Old mod loading system void addModToList(Mod mod, GameObject parent) { bool?isModNotActive = ModsManager.Instance.IsModDeactivated(mod); if (!isModNotActive.HasValue) { return; } GameObject modItemPrefab = AssetLoader.GetObjectFromFile("modswindow", "ModItemPrefab", "Clone Drone in the Danger Zone_Data/"); GameObject modItem = Instantiate(modItemPrefab, parent.transform); string modName = mod.GetModName(); string url = mod.GetModImageURL(); _modItems.Add(modItem); if (!string.IsNullOrEmpty(url)) { setImageFromURL(url, mod); } ModdedObject modItemModdedObject = modItem.GetComponent <ModdedObject>(); modItemModdedObject.GetObject <Text>(0).text = modName; // Set title modItemModdedObject.GetObject <Text>(1).text = mod.GetModDescription(); // Set description modItemModdedObject.GetObject <Text>(5).text = ModBotLocalizationManager.FormatLocalizedStringFromID("mods_menu_mod_id", mod.GetUniqueID()); Button enableOrDisableButton = modItem.GetComponent <ModdedObject>().GetObject <Button>(3); if (isModNotActive.Value) { modItem.GetComponent <Image>().color = Color.red; LocalizedTextField localizedTextField = enableOrDisableButton.transform.GetChild(0).GetComponent <LocalizedTextField>(); localizedTextField.LocalizationID = "mods_menu_enable_mod"; Accessor.CallPrivateMethod("tryLocalizeTextField", localizedTextField); enableOrDisableButton.colors = new ColorBlock() { normalColor = Color.green * 1.2f, highlightedColor = Color.green, pressedColor = Color.green * 0.8f, colorMultiplier = 1 }; } Button BroadcastButton = modItemModdedObject.GetObject <Button>(6); BroadcastButton.onClick.AddListener(delegate { onBroadcastButtonClicked(mod); }); BroadcastButton.gameObject.SetActive(GameModeManager.IsMultiplayer()); Button DownloadButton = modItemModdedObject.GetObject <Button>(7); DownloadButton.onClick.AddListener(delegate { onDownloadButtonClicked(mod); }); bool hasNoFile = ModsManager.Instance.GetIsModOnlyLoadedInMemory(mod); DownloadButton.gameObject.SetActive(hasNoFile); int modId = ModsManager.Instance.GetAllMods().IndexOf(mod); modItemModdedObject.GetObject <Button>(3).onClick.AddListener(delegate { toggleIsModDisabled(modId); }); // Add disable button callback modItemModdedObject.GetObject <Button>(4).onClick.AddListener(delegate { openModsOptionsWindowForMod(mod); }); // Add Mod Options button callback modItemModdedObject.GetObject <Button>(4).interactable = mod.ImplementsSettingsWindow(); }