UnityEngine.Events.UnityEvent.AddListener(UnityEngine.Events.UnityAction)

Here are the examples of the csharp api UnityEngine.Events.UnityEvent.AddListener(UnityEngine.Events.UnityAction) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

105 Examples 7

19 Source : PlayerManagementViewController.cs
with MIT License
from andruzzzhka

[UIAction("refresh-visuals")]
            public void Refresh(bool selected, bool highlighted)
            {
                if (playerInfo != null)
                {
                    playerName.text = playerInfo.playerName;
                    playerName.color = playerInfo.updateInfo.playerNameColor;

                    preplacedHostButton.onClick.RemoveAllListeners();
                    preplacedHostButton.onClick.AddListener(() => _buttonsInterface.TransferHostButtonWasPressed(playerInfo));
                    muteButton.onClick.RemoveAllListeners();
                    muteButton.onClick.AddListener(() => _buttonsInterface.MuteButtonWasPressed(playerInfo));
                }
                _isInitialized = true;
            }

19 Source : DownloadQueueViewController.cs
with MIT License
from andruzzzhka

protected override void DidActivate(bool firstActivation, ActivationType type)
        {
            if (firstActivation && type == ActivationType.AddedToHierarchy)
            {
                SongDownloader.Instance.songDownloaded -= SongDownloaded;
                SongDownloader.Instance.songDownloaded += SongDownloaded;
                _songListTableCellInstance = Resources.FindObjectsOfTypeAll<LevelListTableCell>().First(x => (x.name == "LevelListTableCell"));

                RectTransform viewControllersContainer = FindObjectsOfType<RectTransform>().First(x => x.name == "ViewControllers");

                var headerPanelRectTransform = Instantiate(viewControllersContainer.GetComponentsInChildren<RectTransform>(true).First(x => x.name == "HeaderPanel" && x.parent.name == "PlayerSettingsViewController"), rectTransform);
                headerPanelRectTransform.gameObject.SetActive(true);

                _replacedleText = headerPanelRectTransform.GetComponentInChildren<TextMeshProUGUI>();
                _replacedleText.text = "DOWNLOAD QUEUE";

                _pageUpButton = Instantiate(Resources.FindObjectsOfTypeAll<Button>().Last(x => (x.name == "PageUpButton")), rectTransform, false);
                (_pageUpButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 1f);
                (_pageUpButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 1f);
                (_pageUpButton.transform as RectTransform).ancreplaceddPosition = new Vector2(0f, -18f);
                (_pageUpButton.transform as RectTransform).sizeDelta = new Vector2(40f, 10f);
                _pageUpButton.interactable = true;
                _pageUpButton.onClick.AddListener(delegate ()
                {
                    _queuedSongsTableView.PageScrollUp();
                });

                _pageDownButton = Instantiate(Resources.FindObjectsOfTypeAll<Button>().First(x => (x.name == "PageDownButton")), rectTransform, false);
                (_pageDownButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 0f);
                (_pageDownButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 0f);
                (_pageDownButton.transform as RectTransform).ancreplaceddPosition = new Vector2(0f, 9f);
                (_pageDownButton.transform as RectTransform).sizeDelta = new Vector2(40f, 10f);
                _pageDownButton.interactable = true;
                _pageDownButton.onClick.AddListener(delegate ()
                {
                    _queuedSongsTableView.PageScrollDown();
                });

                RectTransform container = new GameObject("CustomListContainer", typeof(RectTransform)).transform as RectTransform;
                container.SetParent(rectTransform, false);
                container.anchorMin = new Vector2(0.2f, 0.5f);
                container.anchorMax = new Vector2(0.8f, 0.5f);
                container.sizeDelta = new Vector2(0f, 0f);
                container.ancreplaceddPosition = new Vector2(0f, -4f);

                _queuedSongsTableView = new GameObject("CustomTableView", typeof(RectTransform)).AddComponent<TableView>();
                _queuedSongsTableView.gameObject.AddComponent<RectMask2D>();
                _queuedSongsTableView.transform.SetParent(container, false);

                _queuedSongsTableView.SetPrivateField("_isInitialized", false);
                _queuedSongsTableView.SetPrivateField("_preallocatedCells", new TableView.CellsGroup[0]);
                _queuedSongsTableView.Init();

                (_queuedSongsTableView.transform as RectTransform).anchorMin = new Vector2(0f, 0f);
                (_queuedSongsTableView.transform as RectTransform).anchorMax = new Vector2(1f, 1f);
                (_queuedSongsTableView.transform as RectTransform).sizeDelta = new Vector2(0f, 54f);
                (_queuedSongsTableView.transform as RectTransform).ancreplaceddPosition = new Vector2(0f, 0f);
                
                ReflectionUtil.SetPrivateField(_queuedSongsTableView, "_pageUpButton", _pageUpButton);
                ReflectionUtil.SetPrivateField(_queuedSongsTableView, "_pageDownButton", _pageDownButton);

                _queuedSongsTableView.selectionType = TableViewSelectionType.None;
                _queuedSongsTableView.dataSource = this;

                _abortButton = BeatSaberUI.CreateUIButton(rectTransform, "CreditsButton", new Vector2(36f, -30f), new Vector2(20f, 10f), AbortDownloads, "Abort All");
                _abortButton.ToggleWordWrapping(false);
            }
        }

19 Source : PlaylistDetailViewController.cs
with MIT License
from andruzzzhka

protected override void DidActivate(bool firstActivation, ActivationType type)
        {
            if (firstActivation && type == ActivationType.AddedToHierarchy)
            {
                gameObject.SetActive(true);
                rectTransform.sizeDelta = new Vector2(60f ,0f);

                _levelDetails = GetComponentsInChildren<StandardLevelDetailView>(true).First(x => x.name == "LevelDetail");
                _levelDetails.gameObject.SetActive(true);

                RemoveCustomUIElements(rectTransform);

                Destroy(GetComponentsInChildren<LevelParamsPanel>().First(x => x.name == "LevelParamsPanel").gameObject);
                
                RectTransform yourStats = GetComponentsInChildren<RectTransform>(true).First(x => x.name == "Stats");
                yourStats.gameObject.SetActive(true);

                RectTransform characteristicsRect = GetComponentsInChildren<RectTransform>(true).First(x => x.name == "BeatmapCharacteristicSegmentedControl");
                RectTransform difficultyRect = GetComponentsInChildren<RectTransform>(true).First(x => x.name == "BeatmapDifficultySegmentedControl");
                
                Destroy(characteristicsRect.gameObject);
                Destroy(difficultyRect.gameObject);

                TextMeshProUGUI[] _textComponents = GetComponentsInChildren<TextMeshProUGUI>();

                try
                {
                    songNameText = _textComponents.First(x => x.name == "SongNameText");
                    _textComponents.First(x => x.name == "replacedle").text = "Playlist";
                    songNameText.enableWordWrapping = true;
                    songNameText.rectTransform.sizeDelta = new Vector2(-22f, 20f);

                    _textComponents.First(x => x.name == "replacedle" && x.transform.parent.name == "MaxCombo").text = "Author";
                    authorText = _textComponents.First(x => x.name == "Value" && x.transform.parent.name == "MaxCombo");
                    authorText.rectTransform.sizeDelta = new Vector2(24f, 0f);

                    _textComponents.First(x => x.name == "replacedle" && x.transform.parent.name == "Highscore").text = "Total songs";
                    totalSongsText = _textComponents.First(x => x.name == "Value" && x.transform.parent.name == "Highscore");

                    Destroy(_textComponents.First(x => x.transform.parent.name == "MaxRank").transform.parent.gameObject);
                }
                catch (Exception e)
                {
                    Plugin.log.Critical("Unable to convert detail view controller! Exception:  " + e);
                }

                _selectButton = _levelDetails.playButton;
                _selectButton.SetButtonText(_selectButtonText);
                _selectButton.ToggleWordWrapping(false);
                _selectButton.onClick.RemoveAllListeners();
                _selectButton.onClick.AddListener(() => { selectButtonPressed?.Invoke(_currentPlaylist); });

                if (addDownloadButton)
                {
                    _downloadButton = _levelDetails.practiceButton;
                    _downloadButton.SetButtonIcon(Sprites.DownloadIcon);
                    _downloadButton.onClick.RemoveAllListeners();
                    _downloadButton.onClick.AddListener(() => { downloadButtonPressed?.Invoke(_currentPlaylist); });
                }
                else
                {
                    Destroy(_levelDetails.practiceButton.gameObject);
                }

                coverImage = _levelDetails.GetPrivateField<Image>("_coverImage");
            }
        }

19 Source : StarsUIControl.cs
with MIT License
from andruzzzhka

private void TransformButton(int index)
        {
            
            if (viewControllersContainer == null)
            {
                viewControllersContainer = FindObjectsOfType<RectTransform>().First(x => x.name == "ViewControllers");
                practiceButtonTemplate = viewControllersContainer.GetComponentsInChildren<Button>(true).First(x => x.name == "PracticeButton");
            }

            _starButtons[index] = Instantiate(practiceButtonTemplate, transform as RectTransform, false);
            _starButtons[index].gameObject.SetActive(true);
            _starButtons[index].onClick = new Button.ButtonClickedEvent();
            _starButtons[index].onClick.AddListener(() => { HandleStarPressedEvent(index + 1); });
            _starButtons[index].name = "CustomUIButton";
            _starButtons[index].SetButtonText("");
            _starButtons[index].SetButtonIcon(Sprites.StarEmpty);

            (_starButtons[index].transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f);
            (_starButtons[index].transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f);
            (_starButtons[index].transform as RectTransform).ancreplaceddPosition = new Vector2(10f * index, 0f);
            (_starButtons[index].transform as RectTransform).sizeDelta = new Vector2(10f, 10f);

            RectTransform iconTransform = _starButtons[index].GetComponentsInChildren<RectTransform>(true).First(x => x.name == "Icon");
            iconTransform.gameObject.SetActive(true);
            Destroy(iconTransform.parent.GetComponent<HorizontalLayoutGroup>());
            iconTransform.sizeDelta = new Vector2(8f, 8f);
            iconTransform.ancreplaceddPosition = new Vector2(5f, -4.8f);

            _starButtons[index].GetComponentsInChildren<Image>().First(x => x.name == "Stroke").enabled = false;
            
        }

19 Source : MoreSongsListViewController.cs
with MIT License
from andruzzzhka

protected override void DidActivate(bool firstActivation, ActivationType type)
        {

            if (firstActivation && type == ActivationType.AddedToHierarchy)
            {
                rectTransform.anchorMin = new Vector2(0.5f, 0f);
                rectTransform.anchorMax = new Vector2(0.5f, 1f);
                rectTransform.sizeDelta = new Vector2(74f, 0f);
                rectTransform.pivot = new Vector2(0.4f, 0.5f);

                _pageUpButton = Instantiate(Resources.FindObjectsOfTypeAll<Button>().Last(x => (x.name == "PageUpButton")), rectTransform, false);
                (_pageUpButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 1f);
                (_pageUpButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 1f);
                (_pageUpButton.transform as RectTransform).ancreplaceddPosition = new Vector2(0f, -14.75f);
                (_pageUpButton.transform as RectTransform).sizeDelta = new Vector2(40f, 10f);
                _pageUpButton.interactable = true;
                _pageUpButton.onClick.AddListener(delegate ()
                {
                    pageUpPressed?.Invoke();
                });
                _pageUpButton.interactable = false;

                _pageDownButton = Instantiate(Resources.FindObjectsOfTypeAll<Button>().First(x => (x.name == "PageDownButton")), rectTransform, false);
                (_pageDownButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 0f);
                (_pageDownButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 0f);
                (_pageDownButton.transform as RectTransform).ancreplaceddPosition = new Vector2(0f, 9f);
                (_pageDownButton.transform as RectTransform).sizeDelta = new Vector2(40f, 10f);
                _pageDownButton.interactable = true;
                _pageDownButton.onClick.AddListener(delegate ()
                {
                    pageDownPressed?.Invoke();
                });

                _sortByButton = BeatSaberUI.CreateUIButton(rectTransform, "CreditsButton", new Vector2(15f, 36.5f), new Vector2(30f, 6f), () => { SelectTopButtons(TopButtonsState.SortBy); }, "Sort by");
                _sortByButton.SetButtonTextSize(3f);

                _topButton = BeatSaberUI.CreateUIButton(rectTransform, "CreditsButton", new Vector2(-20f, 36.5f), new Vector2(20f, 6f), () =>
                {
                    sortByTop?.Invoke();
                    SelectTopButtons(TopButtonsState.Select);
                },
                "Downloads");

                _topButton.SetButtonTextSize(3f);
                _topButton.ToggleWordWrapping(false);
                _topButton.gameObject.SetActive(false);

                _newButton = BeatSaberUI.CreateUIButton(rectTransform, "CreditsButton", new Vector2(0f, 36.5f), new Vector2(20f, 6f), () =>
                {
                    sortByNew?.Invoke();
                    SelectTopButtons(TopButtonsState.Select);
                }, "Newest");

                _newButton.SetButtonTextSize(3f);
                _newButton.ToggleWordWrapping(false);
                _newButton.gameObject.SetActive(false);


                _starButton = BeatSaberUI.CreateUIButton(rectTransform, "CreditsButton", new Vector2(20f, 36.5f), new Vector2(20f, 6f), () =>
                {
                    sortByPlays?.Invoke();
                    SelectTopButtons(TopButtonsState.Select);
                }, "Plays");

                _starButton.SetButtonTextSize(3f);
                _starButton.ToggleWordWrapping(false);
                _starButton.gameObject.SetActive(false);

                _searchButton = BeatSaberUI.CreateUIButton(rectTransform, "CreditsButton", new Vector2(-15, 36.5f), new Vector2(30f, 6f), () =>
                {
                    searchButtonPressed?.Invoke();
                    SelectTopButtons(TopButtonsState.Search);
                }, "Search");
                _searchButton.SetButtonTextSize(3f);

                _loadingIndicator = BeatSaberUI.CreateLoadingSpinner(rectTransform);
                (_loadingIndicator.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f);
                (_loadingIndicator.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f);
                (_loadingIndicator.transform as RectTransform).ancreplaceddPosition = new Vector2(0f, 0f);
                _loadingIndicator.SetActive(true);
                
                _songListTableCellInstance = Resources.FindObjectsOfTypeAll<LevelListTableCell>().First(x => (x.name == "LevelListTableCell"));

                RectTransform container = new GameObject("CustomListContainer", typeof(RectTransform)).transform as RectTransform;
                container.SetParent(rectTransform, false);
                container.sizeDelta = new Vector2(60f, 0f);

                _songsTableView = new GameObject("CustomTableView", typeof(RectTransform)).AddComponent<TableView>();
                _songsTableView.gameObject.AddComponent<RectMask2D>();
                _songsTableView.transform.SetParent(container, false);

                _songsTableView.SetPrivateField("_isInitialized", false);
                _songsTableView.SetPrivateField("_preallocatedCells", new TableView.CellsGroup[0]);
                _songsTableView.Init();

                (_songsTableView.transform as RectTransform).anchorMin = new Vector2(0f, 0f);
                (_songsTableView.transform as RectTransform).anchorMax = new Vector2(1f, 1f);
                (_songsTableView.transform as RectTransform).sizeDelta = new Vector2(0f, 60f);
                (_songsTableView.transform as RectTransform).ancreplaceddPosition = new Vector2(0f, -3f);
                
                _songsTableView.dataSource = this;
                _songsTableView.didSelectCellWithIdxEvent += _songsTableView_DidSelectRowEvent;
            }
            else
            {
                _songsTableView.ReloadData();
            }
        }

19 Source : SongDescriptionViewController.cs
with MIT License
from andruzzzhka

protected override void DidActivate(bool firstActivation, ActivationType activationType)
        {
            if (firstActivation)
            {
                var headerPanelRectTransform = Instantiate(Resources.FindObjectsOfTypeAll<RectTransform>().First(x => x.name == "HeaderPanel" && x.parent.name == "PlayerSettingsViewController"), rectTransform);
                headerPanelRectTransform.gameObject.SetActive(true);

                _replacedleText = headerPanelRectTransform.GetComponentInChildren<TextMeshProUGUI>();
                _replacedleText.text = "SONG DESCRIPTION";

                _pageUpButton = Instantiate(Resources.FindObjectsOfTypeAll<Button>().First(x => x.name == "PageUpButton"), rectTransform, false);
                (_pageUpButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 1f);
                (_pageUpButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 1f);
                (_pageUpButton.transform as RectTransform).ancreplaceddPosition = new Vector2(52f, -12f);
                (_pageUpButton.transform as RectTransform).sizeDelta = new Vector2(8f, 6f);
                _pageUpButton.GetComponentsInChildren<RectTransform>().First(x => x.name == "BG").sizeDelta = new Vector2(8f, 6f);
                _pageUpButton.GetComponentsInChildren<UnityEngine.UI.Image>().First(x => x.name == "Arrow").sprite = Sprites.DoubleArrow;
                _pageUpButton.onClick.AddListener(delegate ()
                {
                    PageUpButtonPressed();
                });

                _pageDownButton = Instantiate(Resources.FindObjectsOfTypeAll<Button>().First(x => x.name == "PageDownButton"), rectTransform, false);
                (_pageDownButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 0f);
                (_pageDownButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 0f);
                (_pageDownButton.transform as RectTransform).ancreplaceddPosition = new Vector2(52f, 10f);
                (_pageDownButton.transform as RectTransform).sizeDelta = new Vector2(8f, 6f);
                _pageDownButton.GetComponentsInChildren<RectTransform>().First(x => x.name == "BG").sizeDelta = new Vector2(8f, 6f);
                _pageDownButton.GetComponentsInChildren<UnityEngine.UI.Image>().First(x => x.name == "Arrow").sprite = Sprites.DoubleArrow;
                _pageDownButton.onClick.AddListener(delegate ()
                {
                    PageDownButtonPressed();
                });

                _textViewport = new GameObject("DescriptionViewport", typeof(RectTransform), typeof(RectMask2D)).transform as RectTransform;
                _textViewport.SetParent(rectTransform, false);
                _textViewport.anchorMin = new Vector2(0.05f, 0.025f);
                _textViewport.anchorMax = new Vector2(0.9f, 0.85f);
                _textViewport.sizeDelta = new Vector2(0f, 0f);
                _textViewport.ancreplaceddPosition = new Vector2(0f, 0f);
                
                _descriptionText = BeatSaberUI.CreateText(_textViewport, "", new Vector2(0f, 0f));
                _descriptionText.fontSize = 4f;
                _descriptionText.enableWordWrapping = true;
                _descriptionText.overflowMode = TextOverflowModes.Overflow;
                _descriptionText.lineSpacing = -40f;
                _descriptionText.ignoreRectMaskCulling = true;
                _descriptionText.rectTransform.anchorMin = new Vector2(0f, 0f);
                _descriptionText.rectTransform.anchorMax = new Vector2(1f, 1f);
                _descriptionText.rectTransform.sizeDelta = new Vector2(0f, 0f);
                _descriptionText.rectTransform.ancreplaceddPosition = new Vector2(0f, 0f);

                _linkHandler = _descriptionText.gameObject.AddComponent<TextMeshProHyperlinkHandler>();
                _linkHandler.linkClicked += linkClicked;
            }
            SetDescription("");
        }

19 Source : SongDetailViewController.cs
with MIT License
from andruzzzhka

protected override void DidActivate(bool firstActivation, ActivationType type)
        {
            if (firstActivation)
            {
                gameObject.SetActive(true);
                _levelDetails = GetComponentsInChildren<StandardLevelDetailView>(true).First(x => x.name == "LevelDetail");
                _levelDetails.gameObject.SetActive(true);

                RemoveCustomUIElements(rectTransform);

                _levelParams = GetComponentsInChildren<LevelParamsPanel>().First(x => x.name == "LevelParamsPanel");

                foreach (HoverHint hint in _levelParams.transform.GetComponentsInChildren<HoverHint>())
                {
                    switch (hint.name)
                    {
                        case "Time":
                            {
                                hint.GetComponentInChildren<Image>().sprite = Sprites.DownloadIcon;
                            }; break;
                        case "BPM":
                            {
                                hint.GetComponentInChildren<Image>().sprite = Sprites.PlayIcon;
                            }; break;
                        case "NotesCount":
                            {
                                hint.GetComponentInChildren<Image>().sprite = Resources.FindObjectsOfTypeAll<Sprite>().First(x => x.name == "MetronomeIcon");
                            }; break;
                        case "ObstaclesCount":
                            {
                                hint.GetComponentInChildren<Image>().sprite = Sprites.ThumbUp;
                            }; break;
                        case "BombsCount":
                            {
                                hint.GetComponentInChildren<Image>().sprite = Sprites.ThumbDown;
                            }; break;
                    }

                    Destroy(hint);
                }
                
                RectTransform yourStats = GetComponentsInChildren<RectTransform>().First(x => x.name == "Stats");
                yourStats.gameObject.SetActive(true);
                
                TextMeshProUGUI[] _textComponents = GetComponentsInChildren<TextMeshProUGUI>();
                
                try
                {
                    songNameText = _textComponents.First(x => x.name == "SongNameText");

                    downloadsText = _textComponents.First(x => x.name == "ValueText" && x.transform.parent.name == "Time");
                    downloadsText.fontSize = 3f;

                    playsText = _textComponents.First(x => x.name == "ValueText" && x.transform.parent.name == "BPM");
                    playsText.fontSize = 3f;
                    
                    _textComponents.First(x => x.name == "replacedle" && x.transform.parent.name == "MaxRank").text = "Expert/+";
                    difficulty1Text = _textComponents.First(x => x.name == "Value" && x.transform.parent.name == "MaxRank");

                    _textComponents.First(x => x.name == "replacedle" && x.transform.parent.name == "Highscore").text = "Hard";
                    difficulty2Text = _textComponents.First(x => x.name == "Value" && x.transform.parent.name == "Highscore");

                    _textComponents.First(x => x.name == "replacedle" && x.transform.parent.name == "MaxCombo").text = "Easy/Normal";
                    difficulty3Text = _textComponents.First(x => x.name == "Value" && x.transform.parent.name == "MaxCombo");
                }
                catch (Exception e)
                {
                    Plugin.log.Critical("Unable to convert detail view controller! Exception:  " + e);
                }

                _downloadButton = _levelDetails.playButton;
                _downloadButton.SetButtonText("DOWNLOAD");
                _downloadButton.ToggleWordWrapping(false);
                _downloadButton.onClick.RemoveAllListeners();
                _downloadButton.onClick.AddListener(() => { downloadButtonPressed?.Invoke(_currentSong); });
                (_downloadButton.transform as RectTransform).sizeDelta = new Vector2(26f, 8.8f);

                _favoriteButton = _levelDetails.practiceButton;
                _favoriteButton.SetButtonIcon(Sprites.AddToFavorites);
                _favoriteButton.onClick.RemoveAllListeners();
                _favoriteButton.onClick.AddListener(() => { favoriteButtonPressed?.Invoke(_currentSong); });

                coverImage = _levelDetails.GetPrivateField<Image>("_coverImage");
            }
        }

19 Source : PlaylistListViewController.cs
with MIT License
from andruzzzhka

protected override void DidActivate(bool firstActivation, ActivationType type)
        {
            if (firstActivation && type == ActivationType.AddedToHierarchy)
            {
                rectTransform.anchorMin = new Vector2(0.5f, 0f);
                rectTransform.anchorMax = new Vector2(0.5f, 1f);
                rectTransform.sizeDelta = new Vector2(75f, 0f);
                rectTransform.pivot = new Vector2(0.5f, 0.5f);

                _pageUpButton = Instantiate(Resources.FindObjectsOfTypeAll<Button>().Last(x => (x.name == "PageUpButton")), rectTransform, false);
                (_pageUpButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 1f);
                (_pageUpButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 1f);
                (_pageUpButton.transform as RectTransform).ancreplaceddPosition = new Vector2(0f, -9f);
                (_pageUpButton.transform as RectTransform).sizeDelta = new Vector2(40f, 10f);
                _pageUpButton.interactable = true;
                _pageUpButton.onClick.AddListener(delegate ()
                {
                    _songsTableView.PageScrollUp();
                });

                _pageDownButton = Instantiate(Resources.FindObjectsOfTypeAll<Button>().First(x => (x.name == "PageDownButton")), rectTransform, false);
                (_pageDownButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 0f);
                (_pageDownButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 0f);
                (_pageDownButton.transform as RectTransform).ancreplaceddPosition = new Vector2(0f, 9f);
                (_pageDownButton.transform as RectTransform).sizeDelta = new Vector2(40f, 10f);
                _pageDownButton.interactable = true;
                _pageDownButton.onClick.AddListener(delegate ()
                {
                    _songsTableView.PageScrollDown();
                });

                _songListTableCellInstance = Resources.FindObjectsOfTypeAll<LevelListTableCell>().First(x => (x.name == "LevelListTableCell"));

                RectTransform container = new GameObject("CustomListContainer", typeof(RectTransform)).transform as RectTransform;
                container.SetParent(rectTransform, false);
                container.anchorMin = new Vector2(0f, 0.5f);
                container.anchorMax = new Vector2(1f, 0.5f);
                container.sizeDelta = new Vector2(0f, 0f);
                container.ancreplaceddPosition = new Vector2(0f, 0f);

                _songsTableView = new GameObject("CustomTableView", typeof(RectTransform)).AddComponent<TableView>();
                _songsTableView.gameObject.AddComponent<RectMask2D>();
                _songsTableView.transform.SetParent(container, false);
                    
                _songsTableView.SetPrivateField("_isInitialized", false);
                _songsTableView.SetPrivateField("_preallocatedCells", new TableView.CellsGroup[0]);
                _songsTableView.Init();

                (_songsTableView.transform as RectTransform).anchorMin = new Vector2(0f, 0f);
                (_songsTableView.transform as RectTransform).anchorMax = new Vector2(1f, 1f);
                (_songsTableView.transform as RectTransform).sizeDelta = new Vector2(0f, 60f);
                (_songsTableView.transform as RectTransform).ancreplaceddPosition = new Vector2(0f, 0f);
                                
                _songsTableView.dataSource = this;
                _songsTableView.ScrollToCellWithIdx(0, TableView.ScrollPositionType.Beginning, false);
                _lastSelectedRow = -1;
                _songsTableView.didSelectCellWithIdxEvent += _songsTableView_DidSelectRowEvent;
            }
            else
            {
                _songsTableView.ReloadData();
                _songsTableView.ScrollToCellWithIdx(0, TableView.ScrollPositionType.Beginning, false);
                _lastSelectedRow = -1;
            }
        }

19 Source : Logs_Controller.cs
with MIT License
from Aroueterra

void Start()
    {
        //Object Setup
        Alert = GameObject.Find("Alert");
        Player = GameObject.Find("Player");
        PC = GameObject.Find("Progress_Obj").GetComponent<Progress_Controller>();
        //Sound Setup
        audi_source = Player.GetComponent<Player_Movement>().audi;
        fail = Player.GetComponent<Player_Movement>().Fail;
        success = Player.GetComponent<Player_Movement>().Success;
        //Event Setup
        //Submit.onEndEdit.AddListener(val =>
        //{

        //});onEndEdit
        Submit.onEndEdit.AddListener(delegate { OnSubmitCheck(); });
    }

19 Source : Logs_Controller2.cs
with MIT License
from Aroueterra

void Start()
    {
        //Object Setup
        Alert = GameObject.Find("Alert");
        Player = GameObject.Find("Player");
        PC = GameObject.Find("Progress_Obj").GetComponent<Progress_Controller>();
        //Sound Setup
        audi_source = Player.GetComponent<Player_Movement>().audi;
        fail = Player.GetComponent<Player_Movement>().Fail;
        success = Player.GetComponent<Player_Movement>().Success;
        //Event Setup
        //Submit.onEndEdit.AddListener(val =>
        //{
        //});onEndEdit
        Submit.onEndEdit.AddListener(delegate { OnSubmitChecks(); });
    }

19 Source : Stacks_Controller.cs
with MIT License
from Aroueterra

void Start()
    {
        //Object Setup
        Alert = GameObject.Find("Alert");
        Player = GameObject.Find("Player");
        PC = GameObject.Find("Progress_Obj").GetComponent<Progress_Controller>();
        Submitter = GameObject.FindWithTag("Writer").GetComponent<InputField>();
        //Sound Setup
        audi_source = Player.GetComponent<Player_Movement>().audi;
        fail = Player.GetComponent<Player_Movement>().Fail;
        success = Player.GetComponent<Player_Movement>().Success;
        //Event Setup
        //Submit.onEndEdit.AddListener(val =>
        //{
        //});onEndEdit

        Submitter.onEndEdit.AddListener(delegate { OnSubmitChecking(); });
    }

19 Source : Store2_Script.cs
with MIT License
from Aroueterra

void Start () {
        //Object Setup
        Alert = GameObject.Find("Alert");
        Player = GameObject.Find("Player");
        PC = GameObject.Find("Progress_Obj").GetComponent<Progress_Controller>();
        //Sound Setup
        audi_source = Player.GetComponent<Player_Movement>().audi;
        fail = Player.GetComponent<Player_Movement>().Fail;
        success = Player.GetComponent<Player_Movement>().Success;
        //Event Setup
        Submit.onClick.AddListener(OnSubmitChecker);
    }

19 Source : Tree_Controller.cs
with MIT License
from Aroueterra

void Start()
    {
        //Object Setup
        Alert = GameObject.Find("Alert");
        Player = GameObject.Find("Player");
        PC = GameObject.Find("Progress_Obj").GetComponent<Progress_Controller>();
        //Sound Setup
        audi_source = Player.GetComponent<Player_Movement>().audi;
        fail = Player.GetComponent<Player_Movement>().Fail;
        success = Player.GetComponent<Player_Movement>().Success;
        //Event Setup
        //Submit.onEndEdit.AddListener(val =>
        //{
        //});onEndEdit
        Submit.onEndEdit.AddListener(delegate { OnSubmitChecka(); });
    }

19 Source : Submit_Numbers.cs
with MIT License
from Aroueterra

void Start () {
        Alert = GameObject.Find("Alert");
        Player = GameObject.Find("Player");
        PC = GameObject.Find("Progress_Obj").GetComponent<Progress_Controller>();
        audi_source = Player.GetComponent<Player_Movement>().audi;
        fail = Player.GetComponent<Player_Movement>().Fail;
        success = Player.GetComponent<Player_Movement>().Success;
        IF[3].text = (4).ToString();
        Submit = this.gameObject.GetComponent<Button>();
        Submit.onClick.AddListener(OnSubmitChecko);
    }

19 Source : ColorSlider.cs
with GNU General Public License v2.0
from Caeden117

private void Awake()
    {
        slider = GetComponent<Slider>();

        Hsvpicker.ONValueChanged.AddListener(ColorChanged);
        Hsvpicker.OnhsvChanged.AddListener(HSVChanged);
        slider.onValueChanged.AddListener(SliderChanged);
    }

19 Source : ExtensionButtonUI.cs
with GNU General Public License v2.0
from Caeden117

public void SetClickAction(UnityAction onClick)
    {
        button.onClick.RemoveAllListeners();
        button.onClick.AddListener(onClick);
    }

19 Source : HexColorField.cs
with GNU General Public License v2.0
from Caeden117

private void Awake()
    {
        hexInputField = GetComponent<InputField>();

        // Add listeners to keep text (and color) up to date
        hexInputField.onEndEdit.AddListener(UpdateColor);
        Hsvpicker.ONValueChanged.AddListener(UpdateHex);
    }

19 Source : VolumeSlider.cs
with GNU General Public License v2.0
from Caeden117

private void Start()
    {
        if (TryGetComponent<SettingsBinder>(out var settingsBinder))
        {
            slider.onValueChanged.AddListener(OnHandleMove);
            slider.SetValueWithoutNotify((float?)settingsBinder.RetrieveValueFromSettings() ?? 0);
            UpdateDisplay(false);
        }
    }

19 Source : BetterSlider.cs
with GNU General Public License v2.0
from Caeden117

protected virtual void Start()
    {
        if (TryGetComponent<SettingsBinder>(out var settingsBinder))
        {
            Slider.onValueChanged.AddListener(OnHandleMove);

            var settingValue = Convert.ToSingle(settingsBinder.RetrieveValueFromSettings());

            Slider.SetValueWithoutNotify(settingValue);

            UpdateDisplay(false);
        }
    }

19 Source : CM_DialogBox.cs
with GNU General Public License v2.0
from Caeden117

private void Start() => uiButton.onClick.AddListener(() => SendResult(0));

19 Source : CM_DialogBox.cs
with GNU General Public License v2.0
from Caeden117

private void SetupButton(int index, string text, TMP_Fontreplacedet font, int width = 100)
    {
        Button buttonComponent;
        if (index == 0)
        {
            buttonComponent = uiButton;
        }
        else
        {
            if (index > tempButtons.Count)
            {
                var newButton = Instantiate(uiButton.gameObject, uiButton.transform.parent);
                buttonComponent = newButton.GetComponent<Button>();
                buttonComponent.onClick.AddListener(() => SendResult(index));
                tempButtons.Add(buttonComponent);
            }
            else
            {
                buttonComponent = tempButtons[index - 1];
            }
        }

        SetupButton(buttonComponent, text, font, width);
    }

19 Source : CountersPlusCreditsViewController.cs
with MIT License
from Caeden117

protected override void DidActivate(bool firstActivation, bool addedToHierarchy, bool screenSystemEnabling)
        {
            base.DidActivate(firstActivation, firstActivation, screenSystemEnabling);
            if (!firstActivation) return;

            version.transform.parent.localPosition = new Vector3(0, 2.5f, 0);
            version.text = $"Version <color={(versionUtility.HasLatestVersion ? "#00FF00" : "#FF0000")}>{versionUtility.PluginVersion}</color>";
            creator.text = "Developed by: <color=#00c0ff>Caeden117</color>";
            update.text = $"<color=#FF0000>Version {versionUtility.BeatModsVersion} available for download!</color>";

            System.DateTime date = System.DateTime.Now;
            aprilfools.gameObject.SetActive(date.Month == 4 && date.Day == 1);

            if (versionUtility.HasLatestVersion) update.gameObject.SetActive(false);
            linkOpened.gameObject.SetActive(false);

            github.onClick.AddListener(() => GoTo("https://github.com/Caeden117/CountersPlus", github));
            issues.onClick.AddListener(() => GoTo("https://github.com/Caeden117/CountersPlus/issues", issues));
            donate.onClick.AddListener(() => GoTo("https://ko-fi.com/Caeden117", donate));
        }

19 Source : DSSTerminalDisplay.cs
with MIT License
from ccgould

public override bool FindAllComponents()
        {
            try
            {
                #region Canvas  
                var canvasGameObject = gameObject.GetComponentInChildren<Canvas>()?.gameObject;

                if (canvasGameObject == null)
                {
                    QuickLogger.Error("Canvas cannot be found");
                    return false;
                }
                #endregion

                #region Home
                var home = InterfaceHelpers.FindGameObject(canvasGameObject, "Home");
                #endregion
                
                #region VehiclesPage
                var vehiclesPage = InterfaceHelpers.FindGameObject(canvasGameObject, "VehiclesPage");
                #endregion

                #region VehicleDockingSettingsPage
                var vehiclesDockingSettingsPage = InterfaceHelpers.FindGameObject(canvasGameObject, "VehicleDockingSettingsPage");
                #endregion

                #region Item Page
                var itemPage = InterfaceHelpers.FindGameObject(vehiclesDockingSettingsPage, "ItemPage");
                #endregion

                #region Category Page
                var categoryPage = InterfaceHelpers.FindGameObject(vehiclesDockingSettingsPage, "CategoryPage");
                #endregion

                #region VehiclesContainersPage
                var vehiclesContainersPage = InterfaceHelpers.FindGameObject(canvasGameObject, "VehiclesContainersPage");
                #endregion

                #region BaseItemsPage
                var baseItemsPage = InterfaceHelpers.FindGameObject(canvasGameObject, "BaseItemsPage");
                #endregion

                #region GettingDataPage
                var gettingDataPage = InterfaceHelpers.FindGameObject(canvasGameObject, "GettingData");
                #endregion

                #region Settings
                var settings = InterfaceHelpers.FindGameObject(canvasGameObject, "SettingsPage");
                #endregion

                #region PoweredOff
                var poweredOff = InterfaceHelpers.FindGameObject(canvasGameObject, "PowerOffPage");
                #endregion

                #region ColorPageMain
                var colorMainPage = InterfaceHelpers.FindGameObject(canvasGameObject, "ColorPageMain");
                #endregion

                #region ScreenColorPicker

                var screenColorPicker = InterfaceHelpers.FindGameObject(canvasGameObject, "TerminalColorPage");

                #endregion

                #region AntennnaColorPicker

                _antennaColorPicker = InterfaceHelpers.FindGameObject(canvasGameObject, "AntennaColorPage");

                #endregion

                #region Base Grid

                _baseGrid = _mono.gameObject.AddComponent<GridHelper>();
                _baseGrid.OnLoadDisplay += OnLoadBaseGrid;
                _baseGrid.Setup(12, DSSModelPrefab.BaseItemPrefab, home, _startColor, _hoverColor, OnButtonClick); //Minus 2 ItemPerPage because of the added Home button

                #endregion

                #region Vehicle Grid

                _vehicleGrid = _mono.gameObject.AddComponent<GridHelper>();
                _vehicleGrid.OnLoadDisplay += OnLoadVehicleGrid;
                _vehicleGrid.Setup(12, DSSModelPrefab.VehicleItemPrefab, vehiclesPage, _startColor, _hoverColor, OnButtonClick); //Minus 1 ItemPerPage because of the added Home button

                #endregion

                #region Vehicle Containers Grid

                _vehicleContainersGrid = _mono.gameObject.AddComponent<GridHelper>();
                _vehicleContainersGrid.OnLoadDisplay += OnLoadVehicleContainersGrid;
                _vehicleContainersGrid.Setup(12, DSSModelPrefab.VehicleItemPrefab, vehiclesContainersPage, _startColor, _hoverColor, OnButtonClick, 5,
                    "PrevBTN", "NextBTN", "Grid", "Paginator", "HomeBTN", "VehiclesPageBTN"); //Minus 1 ItemPerPage because of the added Home button

                #endregion
                
                #region Item Grid

                _itemGrid = _mono.gameObject.AddComponent<GridHelper>();
                _itemGrid.OnLoadDisplay += OnLoadItemsGrid;
                _itemGrid.Setup(4, DSSModelPrefab.FilterItemPrefab, itemPage, _startColor, _hoverColor, OnButtonClick); //Minus 1 ItemPerPage because of the added Home button

                #endregion

                #region Category Grid

                _categoryGrid = _mono.gameObject.AddComponent<GridHelper>();
                _categoryGrid.OnLoadDisplay += OnLoadCategoryGrid;
                _categoryGrid.Setup(4, DSSModelPrefab.FilterItemPrefab, categoryPage, _startColor, _hoverColor, OnButtonClick); //Minus 1 ItemPerPage because of the added Home button

                #endregion
                
                #region Base Items Page

                _baseItemsGrid = _mono.gameObject.AddComponent<GridHelper>();
                _baseItemsGrid.OnLoadDisplay += OnLoadBaseItemsGrid;
                _baseItemsGrid.Setup(44, DSSModelPrefab.ItemPrefab, baseItemsPage, _startColor, _hoverColor, OnButtonClick);

                _counter = GameObjectHelpers.FindGameObject(baseItemsPage, "Counter").GetComponent<Text>();
                #endregion

                #region DumpBTNButton
                var closeBTN = InterfaceHelpers.FindGameObject(baseItemsPage, "DumpButton");

                InterfaceHelpers.CreateButton(closeBTN, "DumpBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.DumpToBase());
                #endregion

                #region ColorPickerBTN
                var colorPickerBTN = InterfaceHelpers.FindGameObject(settings, "ColorPickerBTN");

                InterfaceHelpers.CreateButton(colorPickerBTN, "ColorPickerBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.ColorPage());
                #endregion

                #region RenameBTN
                var renameBTN = InterfaceHelpers.FindGameObject(settings, "RenameBaseBTN");

                InterfaceHelpers.CreateButton(renameBTN, "RenameBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.Rename());
                #endregion

                #region SettingsBTN
                var settingsBTN = InterfaceHelpers.FindGameObject(home, "SettingsBTN");

                InterfaceHelpers.CreateButton(settingsBTN, "SettingsBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.SettingPage());
                #endregion

                #region HomePowerBTN
                var homePowerBTN = InterfaceHelpers.FindGameObject(home, "PowerBTN");

                InterfaceHelpers.CreateButton(homePowerBTN, "PowerBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.PowerButton());
                #endregion

                #region PoweredOffPowerBTN
                var poweredOffPowerBTN = InterfaceHelpers.FindGameObject(poweredOff, "PowerBTN");

                InterfaceHelpers.CreateButton(poweredOffPowerBTN, "PowerBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.PowerButton());
                #endregion

                #region ColorPickerMainHomeBTN
                var colorPickerMainHomeBTN = InterfaceHelpers.FindGameObject(colorMainPage, "HomeBTN");

                InterfaceHelpers.CreateButton(colorPickerMainHomeBTN, "SettingsBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.SettingPage());
                #endregion

                #region SettingHomeBTN
                var settingsHomeBTN = InterfaceHelpers.FindGameObject(settings, "HomeBTN");

                InterfaceHelpers.CreateButton(settingsHomeBTN, "HomeBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.GoToHome());
                #endregion

                #region Terminal Color BTN
                var terminalColorBTN = InterfaceHelpers.FindGameObject(colorMainPage, "TerminalColorBTN");

                InterfaceHelpers.CreateButton(terminalColorBTN, "TerminalColorBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, string.Format(AuxPatchers.ColorPageFormat(), AuxPatchers.Terminal()));
                #endregion

                #region VehicleSettingsBTN
                var vehicleSettingBTN = InterfaceHelpers.FindGameObject(settings, "AutoDockBTN");

                InterfaceHelpers.CreateButton(vehicleSettingBTN, "AutoDockBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.GoToDockedVehiclesSettings());
                #endregion

                #region Toggle

                _toggle = InterfaceHelpers.FindGameObject(vehiclesDockingSettingsPage, "Toggle").GetComponent<Toggle>();
                _toggle.onValueChanged.AddListener(OnAutoPullToggled);

                #endregion

                #region Search
                var inputField = InterfaceHelpers.FindGameObject(baseItemsPage, "InputField");

                if(inputField != null)
                {
                    var text = InterfaceHelpers.FindGameObject(inputField, "Placeholder")?.GetComponent<Text>();
                    if (text != null)
                    {
                        text.text = AuxPatchers.SearchForItemsMessage();
                    }
                    else
                    {
                        return false;
                    }

                    var searchField = inputField.AddComponent<SearchField>();
                    searchField.OnSearchValueChanged += UpdateSearch;
                }
                else
                {
                    //throw new MissingComponentException("Cannot find Input Field");
                    return false;
                }
            
                #endregion

                #region Antenna Color BTN
                var antennaColorBTN = InterfaceHelpers.FindGameObject(colorMainPage, "AntennaColorBTN");

                InterfaceHelpers.CreateButton(antennaColorBTN, "AntennaColorBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, string.Format(AuxPatchers.ColorPageFormat(), AuxPatchers.Antenna()));
                #endregion

                #region ColorPage
                _terminalColorPage.SetupGrid(90, DSSModelPrefab.ColorItemPrefab, screenColorPicker, OnButtonClick, _startColor, _hoverColor, 5,
                    "PrevBTN", "NextBTN", "Grid", "Paginator", "HomeBTN", "ColorPickerBTN");
                #endregion

                #region BaseItemDecription

                var baseItemPageDesc = InterfaceHelpers.FindGameObject(colorMainPage, "replacedle")?.GetComponent<Text>();
                baseItemPageDesc.text = AuxPatchers.ColorMainPageDesc();

                #endregion

                #region BaseName

                _baseNameLabel = InterfaceHelpers.FindGameObject(baseItemsPage, "BaseLabel")?.GetComponent<Text>();

                #endregion

                #region BaseItemsLoading

                _gettingData = InterfaceHelpers.FindGameObject(gettingDataPage, "replacedle")?.GetComponent<Text>();

                #endregion
                
                #region DockSettingsHomeBTN
                var dockSettingsHomeBTN = InterfaceHelpers.FindGameObject(vehiclesDockingSettingsPage, "HomeBTN");

                InterfaceHelpers.CreateButton(dockSettingsHomeBTN, "SettingsBTN", InterfaceButtonMode.Background,
                    OnButtonClick, _startColor, _hoverColor, MAX_INTERACTION_DISTANCE, AuxPatchers.SettingPage());
                #endregion



                return true;
            }
            catch (Exception e)
            {
                QuickLogger.Error(e.Message);
                QuickLogger.Error(e.StackTrace);
                return false;
            }
        }

19 Source : SearchField.cs
with MIT License
from ccgould

private void Awake()
        {
            _inputField = GetComponent<InputField>();
            _inputField.onValueChanged.AddListener(OnValueChanged);
            _inputField.onEndEdit.AddListener(OnEndEdit);
        }

19 Source : FCSMessageBoxDialog.cs
with MIT License
from ccgould

private void Initialize()
        {
            if(_initialized) return;
            _messageText = GameObjectHelpers.FindGameObject(gameObject, "Message")?.GetComponent<Text>();
            
            _cancelBTNObject = GameObjectHelpers.FindGameObject(gameObject, "CancelBTN");
            _cancelBTN = _cancelBTNObject?.GetComponent<Button>();
            _cancelBTNText = _cancelBTNObject?.GetComponentInChildren<Text>(true);
            _cancelBTN?.onClick.AddListener(() =>
            {
                OnCancelButtonClick?.Invoke(_messageId); 
                HideMessageBox();
            });

            _confirmButtonObject = GameObjectHelpers.FindGameObject(gameObject, "ConfirmBTN");
            _confirmBTNText = _confirmButtonObject?.GetComponentInChildren<Text>(true);
            _confirmBTN = _confirmButtonObject?.GetComponent<Button>();
            _confirmBTN?.onClick.AddListener(() =>
            {
                OnConfirmButtonClick?.Invoke(_messageId); 
                HideMessageBox();
            });

            _initialized = true;
        }

19 Source : QTDisplayManager.cs
with MIT License
from ccgould

public override bool FindAllComponents()
        {
            #region Canvas  
            var canvasGameObject = gameObject.GetComponentInChildren<Canvas>()?.gameObject;

            if (canvasGameObject == null)
            {
                QuickLogger.Error("Canvas cannot be found");
                return false;
            }
            #endregion

            #region L_Panel

            var lPanel = canvasGameObject.FindChild("Left_Panel")?.gameObject;

            if (lPanel == null)
            {
                QuickLogger.Error("Unable to find L_Panel GameObject");
                return false;
            }
            #endregion

            #region R_Panel

            var rPanel = canvasGameObject.FindChild("Right_Panel")?.gameObject;

            if (rPanel == null)
            {
                QuickLogger.Error("Unable to find R_Panel GameObject");
                return false;
            }
            #endregion

            #region Home

            var home = canvasGameObject.FindChild("Home")?.gameObject;

            if (home == null)
            {
                QuickLogger.Error("Unable to find Home GameObject");
                return false;
            }
            #endregion

            #region confirmation

            var confirmation = canvasGameObject.FindChild("Confirmation")?.gameObject;

            if (confirmation == null)
            {
                QuickLogger.Error("Unable to find Home GameObject");
                return false;
            }
            #endregion

            #region ColorPicker

            var colorPicker = canvasGameObject.FindChild("ColorPicker")?.gameObject;

            if (colorPicker == null)
            {
                QuickLogger.Error("Unable to find colorPicker GameObject");
                return false;
            }
            #endregion

            #region Color Picker Button
            var colorPickerBtn = InterfaceHelpers.FindGameObject(rPanel, "ColorPickerBTN");

            if (colorPickerBtn == null) return false;

            InterfaceHelpers.CreateButton(colorPickerBtn, "ColorPageBTN", InterfaceButtonMode.Background,
                OnButtonClick, _startColor, _hoverColor, MaxInteractionRange);
            #endregion

            #region Color Picker Button
            var renameBtn = InterfaceHelpers.FindGameObject(rPanel, "RenameBTN");

            if (renameBtn == null) return false;

            InterfaceHelpers.CreateButton(renameBtn, "RenameBTN", InterfaceButtonMode.Background,
                OnButtonClick, _startColor, _hoverColor, MaxInteractionRange);
            #endregion

            #region Text Field

            _textField = InterfaceHelpers.FindGameObject(lPanel, "UnitName")?.GetComponent<Text>();

            #endregion

            #region Grid
            _teleportGrid.Setup(7, QuantumTeleporterBuildable.ItemPrefab, home, _startColor, _hoverColor, OnButtonClick,
                5, "PrevBTN", "NextBTN", "Grid", "Paginator", string.Empty);
            _teleportGrid.OnLoadDisplay += OnLoadDisplay;
            #endregion

            #region Color Grid
            var _colorGrid = InterfaceHelpers.FindGameObject(colorPicker, "Grid");

            if (_colorGrid == null)
            {
                QuickLogger.Error<QTDisplayManager>("Cant find color page on home page");
                return false;
            } 
            #endregion

            #region Color Paginator
            var _colorPaginator = InterfaceHelpers.FindGameObject(colorPicker, "Paginator");

            if (_colorPaginator == null)
            {
                QuickLogger.Error<QTDisplayManager>("Cant find paginator on color picker page");
                return false;
            } 
            #endregion

            #region ColorPage
            _colorPage.SetupGrid(30, QuantumTeleporterBuildable.ColorItemPrefab, _colorGrid, _colorPaginator.GetComponent<Text>(), OnButtonClick);
            #endregion

            #region Home Button
            var homeBtn = InterfaceHelpers.FindGameObject(colorPicker, "HomeBTN");

            if (homeBtn == null) return false;

            InterfaceHelpers.CreateButton(homeBtn, "HomeBTN", InterfaceButtonMode.Background,
                OnButtonClick, _startColor, _hoverColor, MaxInteractionRange);
            #endregion

            #region Prev Color Button
            var prevColorBtn = InterfaceHelpers.FindGameObject(colorPicker, "PrevBTN");

            if (prevColorBtn == null) return false;

            InterfaceHelpers.CreatePaginator(prevColorBtn, -1,_colorPage.ChangeColorPageBy,_startColor,_hoverColor);
            #endregion

            #region Next Color Button
            var nextColorBtn = InterfaceHelpers.FindGameObject(colorPicker, "NextBTN");

            if (nextColorBtn == null) return false;

            InterfaceHelpers.CreatePaginator(nextColorBtn, 1, _colorPage.ChangeColorPageBy, _startColor, _hoverColor);
            #endregion
            
            #region Global Toggle
            var isGlobalToggle = InterfaceHelpers.FindGameObject(lPanel, "Toggle");

            if (isGlobalToggle == null) return false;

            var globalToggleLabel = InterfaceHelpers.FindGameObject(isGlobalToggle, "Label");
            if (globalToggleLabel == null) return false;
            globalToggleLabel.GetComponent<Text>().text = QuantumTeleporterBuildable.MakeGlobalUnit();

            _isGlobalToggle = isGlobalToggle.GetComponent<Toggle>();
            _isGlobalToggle.onValueChanged.AddListener(delegate
            {
                ToggleValueChanged(_isGlobalToggle);
            });
            #endregion

            #region Intra Tele Button
            var intraTele = InterfaceHelpers.FindGameObject(home, "Intra_TeleBtn");

            if (intraTele == null) return false;

            _intraTeleBtn = InterfaceHelpers.CreateButton(intraTele, "IntraTeleBtn", InterfaceButtonMode.Background,
                OnButtonClick, Color.black, Color.white, MaxInteractionRange);
            _intraTeleBtn.ChangeText(QuantumTeleporterBuildable.LocalNetwork());
            #endregion

            #region GLobal Tele Button
            var globalTele = InterfaceHelpers.FindGameObject(home, "Global_TeleBtn");

            if (globalTele == null) return false;

            _globalTeleBtn = InterfaceHelpers.CreateButton(globalTele, "GlobalTeleBtn", InterfaceButtonMode.Background,
                OnButtonClick, Color.black, Color.white, MaxInteractionRange);
            _globalTeleBtn.ChangeText(QuantumTeleporterBuildable.GlobalNetwork());
            #endregion

            #region Information Label
            var unitInfo = InterfaceHelpers.FindGameObject(lPanel, "UnitNameInfo");

            if (unitInfo == null) return false;

            var infoText = unitInfo.GetComponent<Text>();

            infoText.text = LeftPanelText();
            #endregion

            #region Yes Button
            var yesBTNGO = InterfaceHelpers.FindGameObject(confirmation, "YesBTN");

            if (yesBTNGO == null) return false;

                var yesBTN = InterfaceHelpers.CreateButton(yesBTNGO, "ConfirmYesBtn", InterfaceButtonMode.Background,
                OnButtonClick, Color.black, Color.white, MaxInteractionRange);
                yesBTN.ChangeText(QuantumTeleporterBuildable.Confirm());
            #endregion

            #region No Button
            var noBTNGO = InterfaceHelpers.FindGameObject(confirmation, "NoBTN");

            if (noBTNGO == null) return false;

            var noBTN = InterfaceHelpers.CreateButton(noBTNGO, "ConfirmNoBtn", InterfaceButtonMode.Background,
                OnButtonClick, Color.black, Color.white, MaxInteractionRange);
            noBTN.ChangeText(QuantumTeleporterBuildable.Cancel());
            #endregion

            #region Confirmation
            var confirmMessage = InterfaceHelpers.FindGameObject(confirmation, "Message");

            if (confirmMessage == null) return false;

            confirmMessage.GetComponent<Text>().text = QuantumTeleporterBuildable.ConfirmMessage();
            #endregion

            #region Destination
            var destination = InterfaceHelpers.FindGameObject(confirmation, "Destination");

            if (destination == null) return false;

            _destination = destination.GetComponent<Text>();
            #endregion

            return true;
        }

19 Source : PredictionBar.cs
with MIT License
from chrislee0419

public void ClearAndSetPredictionButtons(string searchText)
        {
            // NOTE: searchText should be lower-cased (keyboard sends lowercase characters)
            if (!_initialized)
                return;

            ClearPredictionButtons();

            if (string.IsNullOrEmpty(searchText))
                return;

            // create new or re-use old buttons
            PredictionButton btn = default;
            float currentX = 0f;
            var predictions = WordPredictionEngine.instance.GetSuggestedWords(searchText);
            for (int i = 0; i < predictions.Count && currentX < _xEndPos - _xStartPos; ++i)
            {
                var word = predictions[i].Word;
                var type = predictions[i].Type;

                if (_unusedButtons.Any())
                {
                    btn = _unusedButtons.Pop();
                    btn.SetActive(true);
                }
                else
                {
                    btn = new PredictionButton(_parent);
                }

                btn.Button.onClick.RemoveAllListeners();
                btn.Button.onClick.AddListener(delegate ()
                {
                    string[] searchTextWords = WordPredictionEngine.RemoveSymbolsRegex.Replace(searchText, " ").Split(WordPredictionEngine.SpaceCharArray);

                    if (searchTextWords.Length == 0)
                    {
                        // this should never be able to happen
                        // implies we got a suggested word from an empty search query
                        searchText = word;
                    }
                    else
                    {
                        char lastChar = searchText[searchText.Length - 1];
                        string lastSearchWord = searchTextWords[searchTextWords.Length - 1];

                        if (type == SuggestionType.Prefixed || type == SuggestionType.FuzzyMatch)
                        {
                            int index = searchText.LastIndexOf(lastSearchWord);
                            searchText = searchText.Remove(index) + word;
                        }
                        else if (type == SuggestionType.FollowUp)
                        {
                            string space = lastChar == ' ' ? "" : " ";
                            searchText = searchText + space + word;
                        }
                        else
                        {
                            searchText = word;
                        }
                    }

                    PredictionPressed?.Invoke(searchText, type);
                });

                btn.SetText(word.ToUpper(), _fontSize);
                btn.Type = type;

                var width = btn.PreferredTextWidth + 8f;
                var rt = btn.Button.transform as RectTransform;
                rt.sizeDelta = new Vector2(width, 7f);
                rt.ancreplaceddPosition = new Vector2(_xStartPos + currentX, _yPos);

                currentX += width + 1.5f;
                _predictionButtons.Add(btn);
            }

            // remove the last button created, since it goes past the end of the screen
            // we have to do this here, since we don't know the width of the strings to be displayed before button creation
            if (PredictionButton.IsValid(btn) && currentX >= _xEndPos - _xStartPos)
            {
                _predictionButtons.Remove(btn);
                btn.SetActive(false);
                _unusedButtons.Push(btn);
            }
        }

19 Source : SongListUI.cs
with MIT License
from chrislee0419

public void OnLateMenuSceneLoadedFresh()
        {
            Button soloFreePlayButton = Resources.FindObjectsOfTypeAll<Button>().First(x => x.name == "SoloFreePlayButton");
            Button partyFreePlayButton = Resources.FindObjectsOfTypeAll<Button>().First(x => x.name == "PartyFreePlayButton");
            Button campaignButton = Resources.FindObjectsOfTypeAll<Button>().First(x => x.name == "CampaignButton");

            soloFreePlayButton.onClick.AddListener(() => OnModeSelection(FreePlayMode.Solo));
            partyFreePlayButton.onClick.AddListener(() => OnModeSelection(FreePlayMode.Party));
            campaignButton.onClick.AddListener(() => OnModeSelection(FreePlayMode.Campaign));

            if (_bottomScreen != null)
                _bottomScreen.Dispose();

            if (SongBrowserTweaks.ModLoaded)
            {
                // delay building UI until SongBrowser elements are built (after the user selects mode)
            }
            else
            {
                InitializeAdditionalScreens(true);
            }
        }

19 Source : SongBrowserTweaks.cs
with MIT License
from chrislee0419

private static bool _Init()
        {
#if LESS_DEPS
            return false;
#else
            // acquire all the UI elements we need to change before modifying
            LevelCollectionViewController levelCollectionViewController;
            Button xButton;
            Button filterByButton;
            Button[] existingFilterButtons;

            var levelSelectionNavigationController = SongListUI.instance.LevelSelectionNavigationController;
            try
            {
                levelCollectionViewController = levelSelectionNavigationController.GetPrivateField<LevelCollectionViewController>("_levelCollectionViewController");

                _songBrowserUI = Resources.FindObjectsOfTypeAll<SongBrowserUI>().First();

                _searchButton = levelCollectionViewController.GetComponentsInChildren<Button>(true).First(x => x.name == "FilterSearchButton");
                existingFilterButtons = levelCollectionViewController.GetComponentsInChildren<Button>(true).Where(x => x.name.StartsWith("Filter") && x.name.EndsWith("Button")).ToArray();

                // these buttons are found using their respective x positions (will need to be changed if button position changes)
                xButton = levelCollectionViewController.GetComponentsInChildren<Button>(true).First(x => x.name == "CustomUIButton" && (x.transform as RectTransform).ancreplaceddPosition.x == -32.5f);
                filterByButton = levelCollectionViewController.GetComponentsInChildren<Button>(true).First(x => x.name == "CustomUIButton" && (x.transform as RectTransform).ancreplaceddPosition.x == 30.5);
                _clearFiltersButton = levelCollectionViewController.GetComponentsInChildren<Button>(true).First(x => x.name == "CustomUIButton" && (x.transform as RectTransform).ancreplaceddPosition.x == 54.5f);
            }
            catch (InvalidOperationException)
            {
                Logger.log.Debug("Unable to find the buttons created by SongBrowser");
                return false;
            }

            // SongBrowser filter buttons
            if (!PluginConfig.DisableSearch)
            {
                _searchButton.onClick.RemoveAllListeners();
                _searchButton.onClick.AddListener(delegate ()
                {
                    SongListUI.instance.SearchButtonPressed();
                    _filterButton.gameObject.SetActive(false);
                    _songBrowserUI.InvokeMethod("RefreshOuterUIState", new object[] { UIState.Main });
                });
            }
            else
            {
                Logger.log.Info("Enhanced search functionality is disabled. SongBrowser's \"Search\" button is not modified");
            }

            if (!PluginConfig.DisableFilters)
            {
                foreach (var button in existingFilterButtons)
                {
                    if (button.name == "FilterSearchButton")
                        continue;

                    button.onClick.AddListener(delegate ()
                    {
                        // search button should be hidden already via RefreshOuterUIState
                        _filterButton.gameObject.SetActive(false);
                        SongListUI.instance.UnapplyFilters();
                    });
                }

                // create this mod's filter button
                _filterButton = BeatSaberUI.CreateUIButton(levelCollectionViewController.rectTransform, "ApplyButton", new Vector2(-18f + (12.75f * existingFilterButtons.Length), 37f), new Vector2(16.75f, 5f),
                    delegate ()
                    {
                        SongListUI.instance.FilterButtonPressed();
                        _filterButton.gameObject.SetActive(false);
                        _songBrowserUI.InvokeMethod("RefreshOuterUIState", new object[] { UIState.Main });
                    },
                    "Other Filters");
                _filterButton.SetButtonTextSize(2.25f);
                _filterButton.GetComponentsInChildren<HorizontalLayoutGroup>().First(btn => btn.name == "Content").padding = new RectOffset(4, 4, 2, 2);
                _filterButton.ToggleWordWrapping(false);
                _filterButton.gameObject.SetActive(false);

                // SongBrowser outer UI buttons
                filterByButton.onClick.AddListener(delegate ()
                {
                    _filterButton.gameObject.SetActive(true);
                });
                _clearFiltersButton.onClick.RemoveAllListeners();
                _clearFiltersButton.onClick.AddListener(delegate ()
                {
                    SongListUI.instance.ClearButtonPressed();

                    // filters are cancelled by ClearButtonPressed -> UnapplyFilters -> FilterFlowCoordinatorFiltersUnapplied
                    // but only if custom filters are applied, otherwise we do it here
                    if ((_songBrowserUI as SongBrowserUI).Model.Settings.filterMode != SongFilterMode.None)
                        _FiltersUnapplied();
                });
                xButton.onClick.AddListener(delegate ()
                {
                    _filterButton.gameObject.SetActive(false);
                });

                // custom filter handler when the same level pack is selected
                SongBrowserModel.CustomFilterHandler = delegate (IAnnotatedBeatmapLevelCollection levelPack)
                {
                    FilterList.ApplyFilter(levelPack.beatmapLevelCollection.beatmapLevels, out var filteredLevels, false);
                    return filteredLevels.ToList();
                };

                // on first load, SongBrowser uses the previously applied settings
                // if this mod's filters was applied last, we have to disable it, since our filters aren't saved across sessions
                if ((_songBrowserUI as SongBrowserUI).Model.Settings.filterMode == SongFilterMode.Custom)
                {
                    (_songBrowserUI as SongBrowserUI).CancelFilter();
                    (_songBrowserUI as SongBrowserUI).ProcessSongList();
                    (_songBrowserUI as SongBrowserUI).RefreshSongUI();
                }
            }
            else
            {
                Logger.log.Info("Filter functionality is disabled. SongBrowser's buttons are not modified");
            }

            Initialized = true;
            Logger.log.Info("Modified SongBrowser's search, filter, and clear filter buttons");
            return true;
#endif
        }

19 Source : SongDetailsDisplay.cs
with MIT License
from chrislee0419

private void Awake()
        {
            rectTransform = this.GetComponent<RectTransform>();

            // cover image background
            var mask = new GameObject("SearchCoverImageMask").AddComponent<Mask>();
            mask.transform.SetParent(this.transform, false);
            mask.rectTransform.anchorMin = Vector2.zero;
            mask.rectTransform.anchorMax = Vector2.one;
            mask.rectTransform.ancreplaceddPosition = Vector2.zero;
            mask.rectTransform.sizeDelta = Vector2.zero;

            var maskImage = mask.gameObject.AddComponent<Image>();
            maskImage.sprite = UIUtilities.RoundRectPanelSprite;
            maskImage.material = UIUtilities.NoGlowMaterial;
            maskImage.color = UIUtilities.RoundRectDefaultColour;
            maskImage.type = Image.Type.Sliced;

            _coverImage = new GameObject("SearchCoverImage").AddComponent<RawImage>();
            _coverImage.transform.SetParent(mask.transform, false);
            _coverImage.rectTransform.anchorMin = Vector2.zero;
            _coverImage.rectTransform.anchorMax = Vector2.one;
            _coverImage.rectTransform.ancreplaceddPosition = Vector2.zero;
            _coverImage.rectTransform.sizeDelta = new Vector2(2f, 2f);

            _coverImage.enabled = false;
            _coverImage.texture = null;
            _coverImage.color = new Color(1f, 1f, 1f, 0.16f);

            // song text
            var nameContainer = CreateContainer(
                mask.transform,
                "SongNameContainer",
                new Vector2(0f, 1f),
                Vector2.one,
                new Vector2(0f, -1f),
                new Vector2(-4f, 12f),
                new Vector2(0.5f, 1f));

            _songNameText = BeatSaberUI.CreateText(nameContainer, "", Vector2.zero, Vector2.zero);
            _songNameText.name = "SongNameText";
            _songNameText.rectTransform.anchorMin = new Vector2(0f, 0.5f);
            _songNameText.rectTransform.anchorMax = Vector2.one;
            _songNameText.rectTransform.sizeDelta = new Vector2(-6f, 0f);

            _songNameText.alignment = TextAlignmentOptions.Center;
            _songNameText.overflowMode = TextOverflowModes.Ellipsis;
            _songNameText.enableWordWrapping = false;
            _songNameText.fontSize = 4f;

            _songAuthorText = BeatSaberUI.CreateText(nameContainer, "", Vector2.zero, Vector2.zero);
            _songAuthorText.name = "SongAuthorText";
            _songAuthorText.rectTransform.anchorMin = Vector2.zero;
            _songAuthorText.rectTransform.anchorMax = new Vector2(AuthorTextMapperTextXHalfPoint, 0.5f);
            _songAuthorText.rectTransform.sizeDelta = new Vector2(-3f, 0f);

            _songAuthorText.alignment = TextAlignmentOptions.Center;
            _songAuthorText.overflowMode = TextOverflowModes.Ellipsis;
            _songAuthorText.enableWordWrapping = false;
            _songAuthorText.fontSize = 3.4f;

            _songMapperText = BeatSaberUI.CreateText(nameContainer, "", Vector2.zero, Vector2.zero);
            _songMapperText.name = "SongMapperText";
            _songMapperText.rectTransform.anchorMin = new Vector2(AuthorTextMapperTextXHalfPoint, 0f);
            _songMapperText.rectTransform.anchorMax = new Vector2(1f, 0.5f);
            _songMapperText.rectTransform.sizeDelta = new Vector2(-3f, 0f);

            _songMapperText.alignment = TextAlignmentOptions.Center;
            _songMapperText.overflowMode = TextOverflowModes.Ellipsis;
            _songMapperText.enableWordWrapping = false;
            _songMapperText.fontSize = 3.4f;

            // characteristics panel
            const float HalfPoint = 0.34f;
            const float BackgroundScale = 0.65f;

            const float CharacteristicsreplacedleYAnchor = 0.8f;
            var characteristicsBG = CreateBackground(
                mask.transform,
                "Characteristics",
                new Vector2(0f, 1f),
                new Vector2(HalfPoint, 1f),
                new Vector2(0.5f, -14f),
                new Vector2(-3f, 13f),
                new Vector2(0.5f, 1f),
                BackgroundScale);

            var characteristicsreplacedleText = BeatSaberUI.CreateText(characteristicsBG, "CHARACTERISTICS", new Vector2(0f, -0.25f), new Vector2(0f, -0.5f));
            characteristicsreplacedleText.name = "Difficultiesreplacedle";
            characteristicsreplacedleText.rectTransform.anchorMin = new Vector2(0f, CharacteristicsreplacedleYAnchor);
            characteristicsreplacedleText.rectTransform.anchorMax = Vector2.one;

            characteristicsreplacedleText.alignment = TextAlignmentOptions.Top;
            characteristicsreplacedleText.fontSize = 2.1f;
            characteristicsreplacedleText.color = replacedleColour;

            var characteristicsContainerParent = CreateContainer(characteristicsBG, "Container", Vector2.zero, new Vector2(1f, CharacteristicsreplacedleYAnchor), Vector2.zero, Vector2.zero).gameObject;
            var vlg = characteristicsContainerParent.AddComponent<VerticalLayoutGroup>();
            vlg.spacing = 0.5f;
            vlg.padding = new RectOffset(1, 1, 0, 0);

            var iconRow = CreateContainer(characteristicsContainerParent.transform, "Row", Vector2.zero, Vector2.one, Vector2.zero, Vector2.zero).gameObject;
            var layoutElement = iconRow.AddComponent<LayoutElement>();
            layoutElement.preferredHeight = CharacteristicIconSize;

            var hlg = iconRow.AddComponent<HorizontalLayoutGroup>();
            hlg.spacing = CharacteristicIconSpacing;
            _characteristicsIconContainers.Add(iconRow);

            _characteristics = Resources.FindObjectsOfTypeAll<CustomLevelLoader>().First().GetField<BeatmapCharacteristicCollectionSO, CustomLevelLoader>("_beatmapCharacteristicCollection");

            // song info panel
            var songInfoBG = CreateBackground(
                mask.transform,
                "SongInfo",
                new Vector2(HalfPoint, 1f),
                Vector2.one,
                new Vector2(-0.5f, -14f),
                new Vector2(-3f, 6f),
                new Vector2(0.5f, 1f),
                BackgroundScale);

            var container = new GameObject("Time").AddComponent<RectTransform>();
            container.SetParent(songInfoBG.transform, false);
            container.anchorMin = new Vector2(0.15f, 0f);
            container.anchorMax = new Vector2(0.45f, 1f);
            container.ancreplaceddPosition = Vector2.zero;
            container.sizeDelta = Vector2.zero;

            var timeIcon = new GameObject("TimeIcon").AddComponent<Image>();
            timeIcon.rectTransform.SetParent(container, false);
            timeIcon.rectTransform.anchorMin = new Vector2(0.25f, 0.5f);
            timeIcon.rectTransform.anchorMax = new Vector2(0.25f, 0.5f);
            timeIcon.rectTransform.ancreplaceddPosition = Vector2.zero;
            timeIcon.rectTransform.sizeDelta = new Vector2(3.2f, 3.2f);

            timeIcon.sprite = Resources.FindObjectsOfTypeAll<Image>().First(x => x.name == "Icon" && x.sprite?.name == "ClockIcon").sprite;

            _timeText = BeatSaberUI.CreateText(container, "", Vector2.zero, Vector2.zero);
            _timeText.name = "TimeText";
            _timeText.rectTransform.anchorMin = new Vector2(0.5f, 0f);
            _timeText.rectTransform.anchorMax = new Vector2(1f, 1f);

            _timeText.alignment = TextAlignmentOptions.Center;
            _timeText.overflowMode = TextOverflowModes.Truncate;
            _timeText.enableWordWrapping = false;
            _timeText.fontSize = 3.2f;

            container = new GameObject("BPM").AddComponent<RectTransform>();
            container.SetParent(songInfoBG.transform, false);
            container.anchorMin = new Vector2(0.55f, 0f);
            container.anchorMax = new Vector2(0.85f, 1f);
            container.ancreplaceddPosition = Vector2.zero;
            container.sizeDelta = Vector2.zero;

            var bpmIcon = new GameObject("BPMIcon").AddComponent<Image>();
            bpmIcon.rectTransform.SetParent(container, false);
            bpmIcon.rectTransform.anchorMin = new Vector2(0.25f, 0.5f);
            bpmIcon.rectTransform.anchorMax = new Vector2(0.25f, 0.5f);
            bpmIcon.rectTransform.ancreplaceddPosition = Vector2.zero;
            bpmIcon.rectTransform.sizeDelta = new Vector2(3.2f, 3.2f);

            bpmIcon.sprite = Resources.FindObjectsOfTypeAll<Image>().First(x => x.name == "Icon" && x.sprite?.name == "MetronomeIcon").sprite;

            _bpmText = BeatSaberUI.CreateText(container, "", Vector2.zero, Vector2.zero);
            _bpmText.name = "BPMText";
            _bpmText.rectTransform.anchorMin = new Vector2(0.5f, 0f);
            _bpmText.rectTransform.anchorMax = new Vector2(1f, 1f);

            _bpmText.alignment = TextAlignmentOptions.Center;
            _bpmText.overflowMode = TextOverflowModes.Truncate;
            _bpmText.enableWordWrapping = false;
            _bpmText.fontSize = 3.2f;

            // difficulties panel
            var difficultiesBG = CreateBackground(
                mask.transform,
                "Difficulties",
                new Vector2(0f, 1f),
                new Vector2(HalfPoint, 1f),
                new Vector2(0.5f, -28f),
                new Vector2(-3f, 28f),
                new Vector2(0.5f, 1f),
                BackgroundScale);
            string[] DifficultyStrings = { "Easy", "Normal", "Hard", "Expert", "ExpertPlus" };
            string[] DifficultyTexts =
            {
                "<color=#55CC55>Easy</color>",
                "<color=#2299EE>Normal</color>",
                "<color=#FF9900>Hard</color>",
                "<color=#FF4433>Expert</color>",
                "<color=#AA22BB>Expert+</color>"
            };
            const float IconSize = 2.5f;
            const float DifficultiesreplacedleYAnchor = 0.88f;
            float divisionSize = DifficultiesreplacedleYAnchor / DifficultyStrings.Length;
            for (int i = 0; i < DifficultyStrings.Length; ++i)
            {
                float minYAnchor = DifficultiesreplacedleYAnchor - divisionSize * (i + 1);
                float maxYAnchor = DifficultiesreplacedleYAnchor - divisionSize * i;
                float halfYAnchor = (minYAnchor + maxYAnchor) / 2f;

                // offset 1u to the right
                var text = BeatSaberUI.CreateText(difficultiesBG, DifficultyTexts[i], new Vector2(2f, 0f), new Vector2(-2f, 0f));
                text.name = DifficultyStrings[i] + "Text";
                text.rectTransform.anchorMin = new Vector2(0f, minYAnchor);
                text.rectTransform.anchorMax = new Vector2(0.5f, maxYAnchor);

                text.alignment = TextAlignmentOptions.Center;
                text.overflowMode = TextOverflowModes.Truncate;
                text.enableWordWrapping = false;
                text.fontSize = 2.9f;

                var image = new GameObject("Icon").AddComponent<Image>();
                image.rectTransform.SetParent(difficultiesBG.transform, false);
                image.rectTransform.anchorMin = new Vector2(0.75f, halfYAnchor);
                image.rectTransform.anchorMax = new Vector2(0.75f, halfYAnchor);
                image.rectTransform.ancreplaceddPosition = Vector2.zero;
                image.rectTransform.sizeDelta = new Vector2(IconSize, IconSize);

                image.sprite = UIUtilities.BlankSprite;
                image.color = Color.black;
                image.material = UIUtilities.NoGlowMaterial;

                _difficultyElements.Add(DifficultyStrings[i], image);
            }

            var difficultiesreplacedleText = BeatSaberUI.CreateText(difficultiesBG, "DIFFICULTIES", new Vector2(0f, -0.25f), new Vector2(0f, -0.5f));
            difficultiesreplacedleText.name = "Difficultiesreplacedle";
            difficultiesreplacedleText.rectTransform.anchorMin = new Vector2(0f, DifficultiesreplacedleYAnchor);
            difficultiesreplacedleText.rectTransform.anchorMax = Vector2.one;

            difficultiesreplacedleText.alignment = TextAlignmentOptions.Top;
            difficultiesreplacedleText.fontSize = 2.1f;
            difficultiesreplacedleText.color = replacedleColour;

            // details text
            var detailsTextBG = CreateBackground(
                mask.transform,
                "DetailsText",
                new Vector2(HalfPoint, 1f),
                Vector2.one,
                new Vector2(-0.5f, -21f),
                new Vector2(-3f, 35f),
                new Vector2(0.5f, 1f),
                BackgroundScale);

            var detailsreplacedleText = BeatSaberUI.CreateText(detailsTextBG, "ADDITIONAL INFORMATION", new Vector2(0f, -1.5f), new Vector2(0f, 1.5f));
            detailsreplacedleText.name = "Detailsreplacedle";
            detailsreplacedleText.rectTransform.anchorMin = new Vector2(0f, 1f);
            detailsreplacedleText.rectTransform.anchorMax = Vector2.one;

            detailsreplacedleText.alignment = TextAlignmentOptions.Top;
            detailsreplacedleText.fontSize = 2.1f;
            detailsreplacedleText.color = replacedleColour;

            _detailsText = BeatSaberUI.CreateText(detailsTextBG, "", new Vector2(0f, -2f), new Vector2(-6f, -3f));
            _detailsText.name = "DetailsText";
            _detailsText.rectTransform.anchorMin = Vector2.zero;
            _detailsText.rectTransform.anchorMax = Vector2.one;

            _detailsText.alignment = TextAlignmentOptions.TopLeft;
            _detailsText.overflowMode = TextOverflowModes.Truncate;
            _detailsText.enableWordWrapping = true;
            _detailsText.fontSize = 3f;

            _loadingSpinner = UIUtilities.CreateLoadingSpinner(detailsTextBG);
            _loadingSpinner.SetActive(false);

            // buttons
            var buttonsContainer = CreateContainer(
                mask.transform,
                "ButtonContainer",
                Vector2.zero,
                new Vector2(1f, 0f),
                new Vector2(0f, 3f),
                new Vector2(-4f, 11f),
                new Vector2(0.5f, 0f));

            hlg = buttonsContainer.gameObject.AddComponent<HorizontalLayoutGroup>();
            hlg.spacing = 3f;

            var buttonPrefab = Resources.FindObjectsOfTypeAll<Button>().First(x => x.name == "PlayButton");

            _selectButton = Instantiate(buttonPrefab, buttonsContainer, false);
            _selectButton.name = "SelectSongButton";
            _selectButton.SetButtonText("SELECT SONG");
            _selectButton.SetButtonTextSize(4.7f);
            _selectButton.interactable = true;
            _selectButton.GetComponentInChildren<Image>().color = new Color(0f, 0.706f, 1f, 0.784f);
            _selectButton.ToggleWordWrapping(false);
            _selectButton.onClick.RemoveAllListeners();
            _selectButton.onClick.AddListener(() => SelectButtonPressed?.Invoke());

            _keyboardButton = Instantiate(buttonPrefab, buttonsContainer, false);
            _keyboardButton.name = "DisplayKeyboardButton";
            _keyboardButton.SetButtonText("DISPLAY\nKEYBOARD");
            _keyboardButton.SetButtonTextSize(3.3f);
            _keyboardButton.interactable = true;
            _keyboardButton.GetComponentInChildren<Image>().color = new Color(0f, 0.706f, 1f, 0.784f);
            _keyboardButton.onClick.RemoveAllListeners();
            _keyboardButton.onClick.AddListener(() => KeyboardButtonPressed?.Invoke());
            _keyboardButton.gameObject.SetActive(PluginConfig.SearchKeyboard == SearchKeyboardType.Compact);

            var detailView = Resources.FindObjectsOfTypeAll<StandardLevelDetailView>().First();
            _blurRenderer = detailView.GetField<KawaseBlurRendererSO, StandardLevelDetailView>("_kawaseBlurRenderer");
        }

19 Source : ShopInjector.cs
with MIT License
from Dazegambler

static GameObject CreateVariantOption(GameObject panel, UKContentWeapon weapon, int i)
        {
            var go = GameObject.Instantiate(variantTemplate, panel.transform);
            var info = go.GetComponent<VariationInfo>();
            info.enabled = false;

            var cbget = info.GetComponentInChildren<ColorBlindGet>();
            cbget.GetComponent<Image>().sprite = weapon.Icon;
            cbget.variationNumber = i;
            info.transform.Find("Text").GetComponent<Text>().text = weapon.Variants[i].name;
            info.transform.Find("Text (1)").gameObject.SetActive(false);

            // very hacky
            var equipmentStuffs = info.transform.Find("EquipmentStuffs");
            Button lb = equipmentStuffs.Find("PreviousButton").GetComponent<Button>();
            Button rb = equipmentStuffs.Find("NextButton").GetComponent<Button>();

            Image img = info.equipButton.transform.GetChild(0).GetComponent<Image>();

            var isEquipped = GunSetterPatch.equippedDict[weapon.Variants[i]];
            img.sprite = info.equipSprites[isEquipped ? 1 : 0];


            UnityAction del = () =>
            {
                GunSetterPatch.equippedDict[weapon.Variants[i]] = !GunSetterPatch.equippedDict[weapon.Variants[i]];
                img.sprite = info.equipSprites[GunSetterPatch.equippedDict[weapon.Variants[i]] ? 1 : 0];
                MonoSingleton<GunSetter>.Instance.ResetWeapons();
            };

            lb.onClick.AddListener(del);
            rb.onClick.AddListener(del);

            go.GetComponent<RectTransform>().offsetMax = new Vector2(0, 160 - (i * variantHeight));
            go.GetComponent<RectTransform>().offsetMin = new Vector2(-360, 80 - (i * variantHeight));

            //todo: equip buttons

            return go;
        }

19 Source : Tracking_Controller.cs
with MIT License
from DMagic1

private void Awake()
        {
            if (_instance != null && _instance != this)
            {
                Destroy(gameObject);
                return;
            }

            _instance = this;

            OnWidgetSelect.AddListener(new UnityAction<TrackingStationWidget>(OnWidgetSelected));
            OnWidgetAwake.AddListener(new UnityAction<TrackingStationWidget>(OnWidgetAwaken));

            GameEvents.onNewVesselCreated.Add(new EventData<Vessel>.OnEvent(OnVesselCreate));
            GameEvents.onVesselDestroy.Add(new EventData<Vessel>.OnEvent(OnVesselDestroy));
            GameEvents.onKnowledgeChanged.Add(new EventData<GameEvents.HostedFromToAction<IDiscoverable, DiscoveryLevels>>.OnEvent(OnKnowledgeChange));

            _CurrentMode = (Tracking_Mode)Tracking_Persistence.SortMode;

            StartCoroutine(WaitForTrackingStation());
        }

19 Source : FullVesselItem.cs
with MIT License
from DMagic1

private void Awake()
        {
            if (m_Toggle != null)
                m_Toggle.onValueChanged.AddListener(new UnityEngine.Events.UnityAction<bool>(OnVesselToggle));
        }

19 Source : FullVesselItem.cs
with MIT License
from DMagic1

public void SelectVessel()
        {
            if (m_Toggle == null)
                return;

            m_Toggle.onValueChanged.RemoveAllListeners();

            m_Toggle.group.SetAllTogglesOff();

            m_Toggle.isOn = true;

            m_Toggle.onValueChanged.AddListener(new UnityEngine.Events.UnityAction<bool>(OnVesselToggle));
        }

19 Source : VesselItem.cs
with MIT License
from DMagic1

public void SelectVessel()
        {
            if (m_Toggle == null)
                return;
            
            m_Toggle.onValueChanged.RemoveAllListeners();

            m_Toggle.group.SetAllTogglesOff();

            m_Toggle.isOn = true;

            m_Toggle.onValueChanged.AddListener(new UnityEngine.Events.UnityAction<bool>(OnVesselToggle));
        }

19 Source : Settings.cs
with MIT License
from hardcpp

protected override void OnViewCreation()
        {
            /// Update opacity
            SDK.UI.Backgroundable.SetOpacity(m_MessageFrame_Background,                     0.50f);
            SDK.UI.Backgroundable.SetOpacity(m_EventFrame_TriggerTab,                       0.50f);
            SDK.UI.Backgroundable.SetOpacity(m_EventFrame_ConditionsTab,                    0.50f);
            SDK.UI.Backgroundable.SetOpacity(m_EventFrame_ConditionsTab_ConditionContent,   0.50f);
            SDK.UI.Backgroundable.SetOpacity(m_EventFrame_ActionsTab,                       0.50f);
            SDK.UI.Backgroundable.SetOpacity(m_EventFrame_ActionsTab_ActionContent,         0.50f);
            SDK.UI.Backgroundable.SetOpacity(m_AddConditionFrame_Background,                0.50f);
            SDK.UI.Backgroundable.SetOpacity(m_AddActionFrame_Background,                   0.50f);
            SDK.UI.ModalView.SetOpacity(m_InputKeyboard.modalView,                          0.75f);

            /// Scale down up & down button
            m_EventFrame_ConditionsTab_UpButton.transform.localScale    = Vector3.one * 0.6f;
            m_EventFrame_ConditionsTab_DownButton.transform.localScale  = Vector3.one * 0.6f;
            m_EventFrame_ActionsTab_UpButton.transform.localScale       = Vector3.one * 0.6f;
            m_EventFrame_ActionsTab_DownButton.transform.localScale     = Vector3.one * 0.6f;

            /// Setup condition list
            if (m_EventFrame_ConditionsTab_ListView.GetComponent<LayoutElement>())
            {
                var l_LayoutElement = m_EventFrame_ConditionsTab_ListView.GetComponent<LayoutElement>();
                l_LayoutElement.preferredWidth  = 45;
                l_LayoutElement.preferredHeight = 40;

                var l_BSMLTableView = m_EventFrame_ConditionsTab_ListView.GetComponentInChildren<BSMLTableView>();
                l_BSMLTableView.SetDataSource(null, false);
                GameObject.DestroyImmediate(m_EventFrame_ConditionsTab_ListView.GetComponentInChildren<CustomListTableData>());
                m_EventFrame_ConditionsTab_List = l_BSMLTableView.gameObject.AddComponent<SDK.UI.DataSource.SimpleTextList>();
                m_EventFrame_ConditionsTab_List.TableViewInstance = l_BSMLTableView;
                m_EventFrame_ConditionsTab_List.CellSizeValue = 5f;
                l_BSMLTableView.didSelectCellWithIdxEvent += OnConditionSelected;
                l_BSMLTableView.SetDataSource(m_EventFrame_ConditionsTab_List, false);

                /// Bind events
                m_EventFrame_ConditionsTab_UpButton.onClick.AddListener(OnConditionPageUpPressed);
                m_EventFrame_ConditionsTab_DownButton.onClick.AddListener(OnConditionPageDownPressed);
            }

            /// Setup action list
            if (m_EventFrame_ActionsTab_ListView.GetComponent<LayoutElement>())
            {
                var l_LayoutElement = m_EventFrame_ActionsTab_ListView.GetComponent<LayoutElement>();
                l_LayoutElement.preferredWidth  = 45;
                l_LayoutElement.preferredHeight = 40;

                var l_BSMLTableView = m_EventFrame_ActionsTab_ListView.GetComponentInChildren<BSMLTableView>();
                l_BSMLTableView.SetDataSource(null, false);
                GameObject.DestroyImmediate(m_EventFrame_ActionsTab_ListView.GetComponentInChildren<CustomListTableData>());
                m_EventFrame_ActionsTab_List = l_BSMLTableView.gameObject.AddComponent<SDK.UI.DataSource.SimpleTextList>();
                m_EventFrame_ActionsTab_List.TableViewInstance = l_BSMLTableView;
                m_EventFrame_ActionsTab_List.CellSizeValue = 5f;
                l_BSMLTableView.didSelectCellWithIdxEvent += OnActionSelected;
                l_BSMLTableView.SetDataSource(m_EventFrame_ActionsTab_List, false);

                /// Bind events
                m_EventFrame_ActionsTab_UpButton.onClick.AddListener(OnActionPageUpPressed);
                m_EventFrame_ActionsTab_DownButton.onClick.AddListener(OnActionPageDownPressed);
            }

            SDK.UI.DropDownListSetting.Setup(m_AddConditionFrame_DropDown, null, true);
            SDK.UI.DropDownListSetting.Setup(m_AddActionFrame_DropDown, null, true);

            /// Create type selector
            m_EventFrame_TabSelectorControl = SDK.UI.TextSegmentedControl.Create(m_EventFrame_TabSelector.transform as RectTransform, false);
            m_EventFrame_TabSelectorControl.SetTexts(new string[] { "Trigger", "Conditions", "Actions" });
            m_EventFrame_TabSelectorControl.ReloadData();
            m_EventFrame_TabSelectorControl.didSelectCellEvent += OnTabSelected;

            /// Select a null event to hide everything
            SelectEvent(null);
        }

19 Source : SettingsRight.cs
with MIT License
from hardcpp

protected override void OnViewCreation()
        {
            /// Update background color
            SDK.UI.Backgroundable.SetOpacity(m_EventListFrame_Background, 0.5f);
            SDK.UI.Backgroundable.SetOpacity(m_AddEventFrame_Background, 0.75f);
            SDK.UI.Backgroundable.SetOpacity(m_ImportEventFrame_Background, 0.75f);
            SDK.UI.Backgroundable.SetOpacity(m_TemplateEventFrame_Background, 0.75f);
            SDK.UI.ModalView.SetOpacity(m_NewEventNameKeyboard.modalView, 0.75f);
            SDK.UI.ModalView.SetOpacity(m_RenameKeyboard.modalView, 0.75f);

            var l_Event = new BeatSaberMarkupLanguage.Parser.BSMLAction(this, this.GetType().GetMethod(nameof(OnFilterChanged), BindingFlags.Instance | BindingFlags.NonPublic));

            /// Setup filters
            SDK.UI.DropDownListSetting.Setup(m_FilterFrame_DropDown, l_Event, true, 1f);

            /// Scale down up & down button
            m_EventsUpButton.transform.localScale = Vector3.one * 0.5f;
            m_EventsDownButton.transform.localScale = Vector3.one * 0.5f;

            /// Prepare event list
            var l_BSMLTableView = m_EventsListView.GetComponentInChildren<BSMLTableView>();
            l_BSMLTableView.SetDataSource(null, false);
            GameObject.DestroyImmediate(m_EventsListView.GetComponentInChildren<CustomListTableData>());
            m_EventsList = l_BSMLTableView.gameObject.AddComponent<SDK.UI.DataSource.SimpleTextList>();
            m_EventsList.TableViewInstance  = l_BSMLTableView;
            m_EventsList.CellSizeValue      = 4.8f;
            l_BSMLTableView.didSelectCellWithIdxEvent += OnEventSelected;
            l_BSMLTableView.SetDataSource(m_EventsList, false);

            /// Bind events
            m_EventsUpButton.onClick.AddListener(OnPageUpPressed);
            m_EventsDownButton.onClick.AddListener(OnPageDownPressed);

            /// Remove new event type selector label
            SDK.UI.DropDownListSetting.Setup(m_AddEventFrame_DropDown, null, true, 0.95f);

            /// Remove import event type selector label
            SDK.UI.DropDownListSetting.Setup(m_ImportEventFrame_DropDown, null, true, 0.95f);

            /// Remove template event type selector label
            SDK.UI.DropDownListSetting.Setup(m_TemplateEventFrame_DropDown, null, true, 0.95f);

            OnFilterChanged(null);
        }

19 Source : ManagerMain.cs
with MIT License
from hardcpp

protected override sealed void OnViewCreation()
        {
            /// Scale down up & down button
            m_SongUpButton.transform.localScale     = Vector3.one * 0.6f;
            m_SongDownButton.transform.localScale   = Vector3.one * 0.6f;

            /// Create type selector
            m_TypeSegmentControl = SDK.UI.TextSegmentedControl.Create(m_TypeSegmentPanel.transform as RectTransform, false);
            m_TypeSegmentControl.SetTexts(new string[] { "Requests", "History", "Blacklist" });
            m_TypeSegmentControl.ReloadData();
            m_TypeSegmentControl.didSelectCellEvent += OnQueueTypeChanged;

            /// Prepare song list
            var l_BSMLTableView = m_SongListView.GetComponentInChildren<BSMLTableView>();
            l_BSMLTableView.SetDataSource(null, false);
            GameObject.DestroyImmediate(m_SongListView.GetComponentInChildren<CustomListTableData>());
            m_SongList = l_BSMLTableView.gameObject.AddComponent<SDK.UI.DataSource.SongList>();
            m_SongList.PlayPreviewAudio     = Config.ChatRequest.PlayPreviewMusic;
            m_SongList.PreviewAudioVolume   = 1.0f;
            m_SongList.TableViewInstance    = l_BSMLTableView;
            m_SongList.Init();
            l_BSMLTableView.SetDataSource(m_SongList, false);

            /// Bind events
            m_SongUpButton.onClick.AddListener(OnSongPageUpPressed);
            m_SongList.OnCoverFetched                               += OnSongCoverFetched;
            m_SongList.TableViewInstance.didSelectCellWithIdxEvent  += OnSongSelected;
            m_SongDownButton.onClick.AddListener(OnSongPageDownPressed);

            /// Show song info panel
            m_SongInfo_Detail = new SDK.UI.LevelDetail(m_SongInfoPanel.transform);
            UnselectSong();

            m_SongInfo_Detail.SetFavoriteToggleEnabled(true);
            m_SongInfo_Detail.SetFavoriteToggleImage("BeatSaberPlus.Modules.ChatRequest.Resources.Blacklist.png", "BeatSaberPlus.Modules.ChatRequest.Resources.Unblacklist.png");
            m_SongInfo_Detail.SetFavoriteToggleHoverHint("Add/Remove to blacklist");
            m_SongInfo_Detail.SetFavoriteToggleCallback(OnBlacklistButtonPressed);

            m_SongInfo_Detail.SetPracticeButtonEnabled(true);
            m_SongInfo_Detail.SetPracticeButtonText("Skip");
            m_SongInfo_Detail.SetPracticeButtonAction(SkipOrAddToQueueSong);

            m_SongInfo_Detail.SetPlayButtonText("Play");
            m_SongInfo_Detail.SetPlayButtonEnabled(true);
            m_SongInfo_Detail.SetPlayButtonAction(PlaySong);

            /// Force change to tab Request
            OnQueueTypeChanged(null, 0);
        }

19 Source : ModerationRight.cs
with MIT License
from hardcpp

protected override void OnViewCreation()
        {
            /// Update background color
            SDK.UI.Backgroundable.SetOpacity(m_Background, 0.5f);

            /// Scale down up & down button
            m_UsersUpButton.transform.localScale   = Vector3.one * 0.5f;
            m_UsersDownButton.transform.localScale = Vector3.one * 0.5f;

            /// Prepare user list
            var l_BSMLTableView = m_UsersListView.GetComponentInChildren<BSMLTableView>();
            l_BSMLTableView.SetDataSource(null, false);
            GameObject.DestroyImmediate(m_UsersListView.GetComponentInChildren<CustomListTableData>());
            m_UsersList = l_BSMLTableView.gameObject.AddComponent<SDK.UI.DataSource.SimpleTextList>();
            m_UsersList.TableViewInstance = l_BSMLTableView;
            l_BSMLTableView.SetDataSource(m_UsersList, false);

            /// Bind events
            m_UsersUpButton.onClick.AddListener(OnUsersPageUpPressed);
            l_BSMLTableView.didSelectCellWithIdxEvent += OnUserSelected;
            m_UsersDownButton.onClick.AddListener(OnUsersPageDownPressed);
        }

19 Source : ModerationShortcut.cs
with MIT License
from hardcpp

protected override void OnViewCreation()
        {
            /// Update background color
            SDK.UI.Backgroundable.SetOpacity(m_Shortcut_Background, 0.5f);
            SDK.UI.ModalView.SetOpacity(m_NewKeyboard.modalView, 0.75f);

            /// Scale down up & down button
            m_ShortcutUpButton.transform.localScale   = Vector3.one * 0.5f;
            m_ShortcutDownButton.transform.localScale = Vector3.one * 0.5f;

            /// Prepare event list
            var l_BSMLTableView = m_ShortcutListView.GetComponentInChildren<BSMLTableView>();
            l_BSMLTableView.SetDataSource(null, false);
            GameObject.DestroyImmediate(m_ShortcutListView.GetComponentInChildren<CustomListTableData>());
            m_ShortcutList = l_BSMLTableView.gameObject.AddComponent<SDK.UI.DataSource.SimpleTextList>();
            m_ShortcutList.TableViewInstance = l_BSMLTableView;
            m_ShortcutList.CellSizeValue = 4.8f;
            l_BSMLTableView.didSelectCellWithIdxEvent += OnShortcutSelected;
            l_BSMLTableView.SetDataSource(m_ShortcutList, false);

            /// Bind events
            m_ShortcutUpButton.onClick.AddListener(OnPageUpPressed);
            m_ShortcutDownButton.onClick.AddListener(OnPageDownPressed);

            /// Build the shortcut list
            m_FilteredList = Config.Chat.ModerationKeys.Split(new string[] { Config.Chat.s_ModerationKeyDefault_Split }, System.StringSplitOptions.RemoveEmptyEntries).ToList();
        }

19 Source : ViewController.cs
with MIT License
from hardcpp

protected override sealed void DidActivate(bool p_FirstActivation, bool p_AddedToHierarchy, bool p_ScreenSystemEnabling)
        {
            /// Forward event
            base.DidActivate(p_FirstActivation, p_AddedToHierarchy, p_ScreenSystemEnabling);

            /// Bind singleton
            Instance = this as T;

            if (p_FirstActivation)
            {
                var l_UICode = GetViewContentDescription();

                /// Add loading modal & message modal code
                if (true)
                {
                    var l_Closure = l_UICode.LastIndexOf('<');
                    var l_NewCode = l_UICode.Substring(0, l_Closure);

                    l_NewCode += "<modal id='SDK_MessageModal' show-event='SDK_ShowMessageModal' hide-event='SDK_CloseMessageModal,CloseAllModals' move-to-center='true' size-delta-y='30' size-delta-x='85'>";
                    l_NewCode += "  <vertical pad='0'>";
                    l_NewCode += "    <text text='' id='SDK_MessageModal_Text' font-size='4' align='Center'/>";
                    l_NewCode += "    <primary-button text='Ok' click-event='SDK_CloseMessageModal'></primary-button>";
                    l_NewCode += "  </vertical>";
                    l_NewCode += "</modal>";

                    l_NewCode += "<modal id='SDK_ConfirmModal' show-event='SDK_ShowConfirmModal' hide-event='SDK_CloseConfirmModal,CloseAllModals' move-to-center='true' size-delta-y='30' size-delta-x='85'>";
                    l_NewCode += "  <vertical pad='0'>";
                    l_NewCode += "    <text id='SDK_ConfirmModal_Text' text=' ' font-size='4' align='Center'/>";
                    l_NewCode += "    <horizontal>";
                    l_NewCode += "      <primary-button text='Yes' id='SDK_ConfirmModal_Button'></primary-button>";
                    l_NewCode += "      <button text='No' click-event='SDK_CloseConfirmModal'></button>";
                    l_NewCode += "    </horizontal>";
                    l_NewCode += "  </vertical>";
                    l_NewCode += "</modal>";

                    l_NewCode += "<modal id='SDK_LoadingModal' show-event='SDK_ShowLoadingModal' hide-event='SDK_CloseLoadingModal,CloseAllModals' move-to-center='true' size-delta-y='30' size-delta-x='48'>";
                    l_NewCode += "    <text id='SDK_LoadingModal_Text' font-size='5.5' align='Center'/>";
                    l_NewCode += "</modal>";
                    l_NewCode += l_UICode.Substring(l_Closure);

                    l_UICode = l_NewCode;
                }

                /// Construct UI
                m_ParserParams = BSMLParser.instance.Parse(l_UICode, gameObject, this as T);

                /// Change state
                UICreated = true;

                /// Setup loading modal
                SDK.UI.ModalView.SetupLoadingControl(m_SDK_LoadingModal, out m_LoadingModal_Spinner);
                SDK.UI.ModalView.SetOpacity(m_SDK_MessageModal, 0.75f);
                SDK.UI.ModalView.SetOpacity(m_SDK_ConfirmModal, 0.75f);
                SDK.UI.ModalView.SetOpacity(m_SDK_LoadingModal, 0.75f);

                /// bind events
                m_SDK_ConfirmModal_Button.onClick.RemoveAllListeners();
                m_SDK_ConfirmModal_Button.onClick.AddListener(OnSDKConfirmModal);

                /// Call implementation
                OnViewCreation();
            }

            /// Call implementation
            OnViewActivation();
        }

19 Source : LevelDetail.cs
with MIT License
from hardcpp

public void SetPracticeButtonAction(UnityEngine.Events.UnityAction p_Value)
        {
            m_PracticeButton.onClick.RemoveAllListeners();
            m_PracticeButton.onClick.AddListener(p_Value);
        }

19 Source : LevelDetail.cs
with MIT License
from hardcpp

public void SetPlayButtonAction(UnityEngine.Events.UnityAction p_Value)
        {
            m_PlayButton.onClick.RemoveAllListeners();
            m_PlayButton.onClick.AddListener(p_Value);
        }

19 Source : ViewTools.cs
with GNU General Public License v3.0
from HebaruSan

public static void AddFloatingButton(Transform parentTransform, float innerHorizOffset, float innerVertOffset, UIStyle style, string tooltip, UnityAction onClick)
		{
			// This creates a new button object using the prefab from KSP's UISkinManager.
			// The same prefab is used for the PopupDialog system buttons.
			// Anything we set on this object will be reflected in the button we create.
			GameObject btnGameObj = GameObject.Instantiate<GameObject>(UISkinManager.GetPrefab("UIButtonPrefab"));

			// Set the button's parent transform.
			btnGameObj.transform.SetParent(parentTransform, false);

			// Add a layout element and set it to be ignored.
			// Otherwise the button will end up on the bottom of the window.
			btnGameObj.AddComponent<LayoutElement>().ignoreLayout = true;

			// This is how we position the button.
			// The anchors and pivot make the button positioned relative to the top-right corner.
			// The ancreplacedd position sets the position with values in pixels.
			RectTransform rect = btnGameObj.GetComponent<RectTransform>();
			rect.ancreplaceddPosition = new Vector2(innerHorizOffset, innerVertOffset);
			rect.sizeDelta        = new Vector2(buttonIconWidth, buttonIconWidth);
			rect.anchorMin = rect.anchorMax = rect.pivot = new Vector2(
				rect.ancreplaceddPosition.x < 0 ? 1 : 0,
				rect.ancreplaceddPosition.y < 0 ? 1 : 0
			);

			// Set the button's image component to the normal sprite.
			// Since this object comes from the button's GameObject,
			// changing it affects the button directly!
			Image btnImg  = btnGameObj.GetComponent<Image>();
			btnImg.sprite = style.normal.background;

			// Now set the different states to their respective sprites.
			Button button      = btnGameObj.GetComponent<Button>();
			button.transition  = Selectable.Transition.SpriteSwap;
			button.spriteState = new SpriteState() {
				highlightedSprite = style.highlight.background,
				pressedSprite     = style.active.background,
				disabledSprite    = style.disabled.background
			};

			// The text will be "Button" if we don't clear it.
			btnGameObj.GetChild("Text").GetComponent<TextMeshProUGUI>().text = "";

			// Set the tooltip
			btnGameObj.SetTooltip(tooltip);

			// Set the code to call when clicked.
			button.onClick.AddListener(onClick);

			// Activate the button object, making it visible.
			btnGameObj.SetActive(true);
		}

19 Source : SceneEffectsCategorySlider.cs
with GNU Lesser General Public License v3.0
from IllusionMods

private void Init()
        {
            Slider.onValueChanged.RemoveAllListeners();
            if (ShowInput) Input.onValueChanged.RemoveAllListeners();
            if (ShowInput) Input.onEndEdit.RemoveAllListeners();
            if (ShowButton) Button.onClick.RemoveAllListeners();

            Slider.maxValue = SliderMaximum;
            Slider.value = InitialValue;
            if (ShowInput) Input.text = InitialValue.ToString(CultureInfo.InvariantCulture);

            Slider.onValueChanged.AddListener(delegate (float value)
            {
                if (!_eventsEnabled) return;
                SetValue(value);
            });

            if (ShowInput)
                Input.onEndEdit.AddListener(delegate (string value)
                {
                    if (!_eventsEnabled) return;
                    SetValue(value);
                });

            Button.onClick.AddListener(Reset);
            SetValue(InitialValue, false);
            _eventsEnabled = true;

            Label.gameObject.name = $"Label {Text}";
            Slider.gameObject.name = $"Slider {Text}";

            if (ShowInput) Input.gameObject.name = $"InputField {Text}";
            if (ShowButton) Button.gameObject.name = $"Button {Text}";
        }

19 Source : MakerCardSave.cs
with GNU Lesser General Public License v3.0
from IllusionMods

[HarmonyPrefix, HarmonyPatch(typeof(CvsCaptureMenu), "Start")]
        internal static void AddSaveCallback(CvsCaptureMenu __instance, Button ___btnSave)
        {
            // Trigger before the original onClick for card save happens
            ___btnSave.onClick.AddListener(CardSavePatch);
        }

19 Source : DynamicBoneEditor.ToggleSet.cs
with GNU General Public License v3.0
from IllusionMods

public void CreateUI(Transform parent)
        {
            {
                var contentList = UIUtility.CreatePanel("ListEntry", parent);
                contentList.gameObject.AddComponent<LayoutElement>().preferredHeight = PanelHeight;
                contentList.gameObject.AddComponent<Mask>();
                contentList.color = RowColor;

                var itemPanel = UIUtility.CreatePanel("ToggleSetPanel", contentList.transform);
                itemPanel.gameObject.AddComponent<CanvasGroup>();
                itemPanel.gameObject.AddComponent<HorizontalLayoutGroup>().padding = Padding;
                itemPanel.color = ItemColor;

                var toggleGroup = itemPanel.gameObject.AddComponent<ToggleGroup>();
                toggleGroup.allowSwitchOff = false;

                LabelText = UIUtility.CreateText("ToggleSetLabel", itemPanel.transform, Label);
                LabelText.alignment = TextAnchor.MiddleLeft;
                LabelText.color = Color.black;
                var labelLE = LabelText.gameObject.AddComponent<LayoutElement>();
                labelLE.preferredWidth = LabelWidth;
                labelLE.flexibleWidth = LabelWidth;

                Toggles = new Toggle[Options.Length];

                for (int i = 0; i < Options.Length; i++)
                {
                    int index = i;
                    Toggles[index] = UIUtility.CreateToggle(Options[index], itemPanel.transform, Options[index]);
                    Toggles[index].transform.SetRect(0f, 0f, 0f, 1f, 0f, 0f, 100f);
                    Toggles[index].isOn = false;
                    Toggles[index].group = toggleGroup;

                    Toggles[index].onValueChanged.AddListener(value =>
                    {
                        if (value)
                            Value = index;
                    });

                    var toggleLE = Toggles[index].gameObject.AddComponent<LayoutElement>();
                    toggleLE.preferredWidth = ToggleWidth;
                    toggleLE.flexibleWidth = 0;
                }

                var reset = UIUtility.CreateButton($"ToggleSetResetButton", itemPanel.transform, "Reset");
                var resetLE = reset.gameObject.AddComponent<LayoutElement>();
                resetLE.preferredWidth = ResetButtonWidth;
                resetLE.flexibleWidth = 0;

                reset.onClick.AddListener(() =>
                {
                    Value = ValueOriginal;
                });
            }
        }

19 Source : DynamicBoneEditor.UI.cs
with GNU General Public License v3.0
from IllusionMods

public static void ShowUI(int dynamicBoneIndex)
        {
            if (!MakerAPI.InsideAndLoaded)
                return;
            int slot = AccessoriesApi.SelectedMakerAccSlot;

            var accessory = MakerAPI.GetCharacterControl().GetAccessoryObject(slot);
            if (accessory == null)
            {
                Visible = false;
                return;
            }
            else
            {
                var dynamicBones = accessory.GetComponentsInChildren<DynamicBone>().Where(x => x.m_Root != null).ToList();

                if (dynamicBones.Count == 0)
                {
                    Visible = false;
                    return;
                }

                Visible = true;

                var dynamicBone = dynamicBones[dynamicBoneIndex];
                var controller = GetMakerCharaController();

                DynamicBoneDropdown.onValueChanged.RemoveAllListeners();
                DynamicBoneDropdown.options.Clear();
                foreach (var bone in dynamicBones)
                    DynamicBoneDropdown.options.Add(new Dropdown.OptionData(bone.m_Root.name));
                DynamicBoneDropdown.value = dynamicBoneIndex;
                DynamicBoneDropdown.captionText.text = dynamicBones[dynamicBoneIndex].m_Root.name;
                DynamicBoneDropdown.onValueChanged.AddListener(value => { ShowUI(value); });

                FreezeAxis.OnChange = null;
                FreezeAxis.ValueOriginal = (int)controller.GetFreezeAxisOriginal(slot, dynamicBone);
                var freezeAxis = controller.GetFreezeAxis(slot, dynamicBone);
                FreezeAxis.Value = freezeAxis == null ? FreezeAxis.ValueOriginal : (int)freezeAxis;
                FreezeAxis.OnChange = (value) => { GetMakerCharaController().SetFreezeAxis(slot, dynamicBone, (DynamicBone.FreezeAxis)value); };

                Weight.OnChange = null;
                Weight.ValueOriginal = controller.GetWeightOriginal(slot, dynamicBone);
                var weight = controller.GetWeight(slot, dynamicBone);
                Weight.Value = weight == null ? Weight.ValueOriginal : (float)weight;
                Weight.OnChange = (value) => { GetMakerCharaController().SetWeight(slot, dynamicBone, value); };

                Damping.OnChange = null;
                Damping.ValueOriginal = controller.GetDampingOriginal(slot, dynamicBone);
                var damping = controller.GetDamping(slot, dynamicBone);
                Damping.Value = damping == null ? Damping.ValueOriginal : (float)damping;
                Damping.OnChange = (value) => { GetMakerCharaController().SetDamping(slot, dynamicBone, value); };

                Elasticity.OnChange = null;
                Elasticity.ValueOriginal = controller.GetElasticityOriginal(slot, dynamicBone);
                var elasticity = controller.GetElasticity(slot, dynamicBone);
                Elasticity.Value = elasticity == null ? Elasticity.ValueOriginal : (float)elasticity;
                Elasticity.OnChange = (value) => { GetMakerCharaController().SetElasticity(slot, dynamicBone, value); };

                Stiffness.OnChange = null;
                Stiffness.ValueOriginal = controller.GetStiffnessOriginal(slot, dynamicBone);
                var stiffness = controller.GetStiffness(slot, dynamicBone);
                Stiffness.Value = stiffness == null ? Stiffness.ValueOriginal : (float)stiffness;
                Stiffness.OnChange = (value) => { GetMakerCharaController().SetStiffness(slot, dynamicBone, value); };

                Inertia.OnChange = null;
                Inertia.ValueOriginal = controller.GetInertiaOriginal(slot, dynamicBone);
                var inertia = controller.GetInertia(slot, dynamicBone);
                Inertia.Value = inertia == null ? Inertia.ValueOriginal : (float)inertia;
                Inertia.OnChange = (value) => { GetMakerCharaController().SetInertia(slot, dynamicBone, value); };

                Radius.OnChange = null;
                Radius.ValueOriginal = controller.GetRadiusOriginal(slot, dynamicBone);
                var radius = controller.GetRadius(slot, dynamicBone);
                Radius.Value = radius == null ? Radius.ValueOriginal : (float)radius;
                Radius.OnChange = (value) => { GetMakerCharaController().SetRadius(slot, dynamicBone, value); };
            }
        }

19 Source : FreeHRandom.cs
with GNU General Public License v3.0
from IllusionMods

private static void CreateRandomButton(string buttonObjectPath, CharacterType characterType)
        {
            var buttonObject = GameObject.Find(buttonObjectPath);
            if (buttonObject == null)
                return;
            RectTransform buttonToCopy = buttonObject.GetComponent<RectTransform>();
            if (buttonToCopy == null)
                return;

            var copy = Instantiate(buttonToCopy.gameObject);
            copy.name = $"{buttonToCopy.name}Random";
            Button randomButton = copy.GetComponent<Button>();
            Transform randomButtonTransform = randomButton.transform;
            RectTransform testButtonRectTransform = randomButtonTransform as RectTransform;
            randomButtonTransform.SetParent(buttonToCopy.parent, true);
            randomButtonTransform.localScale = buttonToCopy.localScale;
            randomButtonTransform.localPosition = buttonToCopy.localPosition;
            testButtonRectTransform.SetRect(buttonToCopy.anchorMin, buttonToCopy.anchorMax, buttonToCopy.offsetMin, buttonToCopy.offsetMax);
            testButtonRectTransform.ancreplaceddPosition = buttonToCopy.ancreplaceddPosition + new Vector2(0f, -50f);
            randomButton.onClick = new Button.ButtonClickedEvent();
            randomButton.onClick.AddListener(() => { RandomizeCharacter(characterType); });

            var tmp = copy.transform.Children().FirstOrDefault(x => x.name.StartsWith("TextMeshPro"));
            if (tmp != null)
                tmp.GetComponent<TextMeshProUGUI>().text = CC.Language == 0 ? "ランダム" : "Random";
        }

19 Source : DynamicBoneEditor.SliderSet.cs
with GNU General Public License v3.0
from IllusionMods

public void CreateUI(Transform parent)
        {
            var contentList = UIUtility.CreatePanel("ListEntry", parent);
            contentList.gameObject.AddComponent<LayoutElement>().preferredHeight = PanelHeight;
            contentList.gameObject.AddComponent<Mask>();
            contentList.color = RowColor;

            var itemPanel = UIUtility.CreatePanel("SliderSetPanel", contentList.transform);
            itemPanel.gameObject.AddComponent<CanvasGroup>();
            itemPanel.gameObject.AddComponent<HorizontalLayoutGroup>().padding = Padding;
            itemPanel.color = ItemColor;

            LabelText = UIUtility.CreateText("SliderSetLabel", itemPanel.transform, Label);
            LabelText.alignment = TextAnchor.MiddleLeft;
            LabelText.color = Color.black;
            var labelLE = LabelText.gameObject.AddComponent<LayoutElement>();
            labelLE.preferredWidth = LabelWidth;
            labelLE.flexibleWidth = LabelWidth;

            ValueSlider = UIUtility.CreateSlider("SliderSetSlider", itemPanel.transform);
            var sliderFloatLE = ValueSlider.gameObject.AddComponent<LayoutElement>();
            sliderFloatLE.preferredWidth = SliderWidth;
            sliderFloatLE.flexibleWidth = 0;

            InputField textBoxFloat = UIUtility.CreateInputField("SliderSetInputField", itemPanel.transform);
            textBoxFloat.text = "0";
            var textBoxFloatLE = textBoxFloat.gameObject.AddComponent<LayoutElement>();
            textBoxFloatLE.preferredWidth = TextBoxWidth;
            textBoxFloatLE.flexibleWidth = 0;

            var reset = UIUtility.CreateButton($"SliderSetResetButton", itemPanel.transform, "Reset");
            var resetLE = reset.gameObject.AddComponent<LayoutElement>();
            resetLE.preferredWidth = ResetButtonWidth;
            resetLE.flexibleWidth = 0;

            ValueSlider.onValueChanged.AddListener(value =>
            {
                textBoxFloat.text = value.ToString();
                textBoxFloat.onEndEdit.Invoke(value.ToString());
            });

            textBoxFloat.onEndEdit.AddListener(value =>
            {
                if (!float.TryParse(value, out float input))
                {
                    textBoxFloat.text = Value.ToString();
                    return;
                }
                Value = input;
            });

            reset.onClick.AddListener(() =>
            {
                Value = ValueOriginal;
            });
        }

See More Examples