Example #1
0
        internal static void CreateCustomComponentMenu()
        {
            try
            {
                GameObject ComponentMenuObject = Resource.LoadPrefabInstance("LevelEditorLevelNameSelectMenu", true);
                ComponentMenuObject.name = "CustomComponentSelectMenu";

                AddCustomComponentMenuLogic         ComponentMenu = ComponentMenuObject.AddComponent <AddCustomComponentMenuLogic>();
                LevelEditorLevelNameSelectMenuLogic MusicLogic    = ComponentMenuObject.GetComponent <LevelEditorLevelNameSelectMenuLogic>();

                ComponentMenu.Init(MusicLogic);

                foreach (LevelEditorLevelNameSelectMenuButton trackButton in ComponentMenuObject.GetComponentsInChildren <LevelEditorLevelNameSelectMenuButton>(true))
                {
                    CustomComponentSelectMenuButton componentButton = trackButton.gameObject.AddComponent <CustomComponentSelectMenuButton>();

                    componentButton.Init(trackButton);

                    trackButton.gameObject.RemoveComponents <LevelEditorLevelNameSelectMenuButton>();
                }

                ComponentMenuObject.RemoveComponents <LevelEditorLevelNameSelectMenuLogic>();

                LevelEditorEx.componentSelectMenuLogic = ComponentMenu;
            }
            catch (Exception e)
            {
                Plugin.Log.Exception(e);
            }
        }
        internal static void Postfix(LevelEditorLevelNameSelectMenuLogic __instance)
        {
            if (Mod.Instance.Config.DisplayWorkshopLevels && !G.Sys.GameManager_.IsDevBuild_)
            {
                LevelSetsManager levelSets = G.Sys.LevelSets_;

                __instance.CreateButtons(levelSets.LevelsLevelFilePaths_.ToList(), Colors.YellowColors.gold, LevelEditorLevelNameSelectMenuLogic.LevelPathEntry.DisplayOption.RelativePath);
                __instance.CreateButtons(levelSets.WorkshopLevelFilePaths_.ToList(), GConstants.communityLevelColor_, LevelEditorLevelNameSelectMenuLogic.LevelPathEntry.DisplayOption.LevelName);

                __instance.buttonList_.SortAndUpdateVisibleButtons();
            }
        }
        internal void Init(LevelEditorLevelNameSelectMenuLogic menuLogic)
        {
            levelPathInput_ = menuLogic.levelPathInput_;
            headerLabel_    = menuLogic.headerLabel_;
            buttonList_     = menuLogic.buttonList_;

            const string    okButtonHierarchy = "Panel/OK Button/Sprite";
            UIEventListener okButton          = transform.Find(okButtonHierarchy).GetComponent <UIEventListener>();

            const string    cancelButtonHierarchy = "Panel/Cancel Button/Sprite";
            UIEventListener cancelButton          = transform.Find(cancelButtonHierarchy).GetComponent <UIEventListener>();

            const string closeButtonHierarchy = "Panel/Window Content/Corner X";
            UIButton     closeButton          = transform.Find(closeButtonHierarchy).GetComponent <UIButton>();

            closeButton.onClick.Add(new EventDelegate(CloseWindow));
            cancelButton.onClick = (_) => CloseWindow();
            okButton.onClick     = (_) => ConfirmInput();
        }