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
            };
        }
Пример #2
0
        /* 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();
        }