public override TableCell CellForIdx(int row) { LevelListTableCell cell = Instantiate(cellInstance); var beatmapCharacteristicImages = cell.GetPrivateField <UnityEngine.UI.Image[]>("_beatmapCharacteristicImages"); foreach (UnityEngine.UI.Image i in beatmapCharacteristicImages) { i.enabled = false; } cell.SetPrivateField("_beatmapCharacteristicAlphas", new float[0]); cell.SetPrivateField("_beatmapCharacteristicImages", new UnityEngine.UI.Image[0]); TextMeshProUGUI songName = cell.GetPrivateField <TextMeshProUGUI>("_songNameText"); TextMeshProUGUI author = cell.GetPrivateField <TextMeshProUGUI>("_authorText"); author.overflowMode = TextOverflowModes.Overflow; RawImage image = cell.GetPrivateField <RawImage>("_coverRawImage"); if (row == 0) { songName.text = "Main Settings"; author.text = "Configure basic Counters+ settings."; image.texture = Images.Images.LoadTexture("MainSettings"); } else if (row == NumberOfCells() - 2) { songName.text = "Credits"; author.text = "View credits for Counters+."; image.texture = Images.Images.LoadTexture("Credits"); } else if (row == NumberOfCells() - 1) { songName.text = "Contributors"; author.text = "See who helped with Counters+!"; image.texture = Images.Images.LoadTexture("Contributors"); } else { SettingsInfo info = counterInfos[row - 1]; songName.text = info.Name; author.text = info.Description; try { if (info.IsCustom) { image.texture = Images.Images.LoadTexture("Custom"); } else { image.texture = Images.Images.LoadTexture(info.Name); } } catch { image.texture = Images.Images.LoadTexture("Bug"); } } cell.reuseIdentifier = "CountersPlusSettingCell"; return(cell); }
TableCell TableView.IDataSource.CellForIdx(int row) { LevelListTableCell tableCell = _tableView.DequeueReusableCellForIdentifier("AvatarListCell") as LevelListTableCell; if (tableCell == null) { tableCell = Instantiate(_tableCellTemplate); // remove level type icons tableCell.transform.Find("LevelTypeIcon0").gameObject.SetActive(false); tableCell.transform.Find("LevelTypeIcon1").gameObject.SetActive(false); tableCell.transform.Find("LevelTypeIcon2").gameObject.SetActive(false); tableCell.reuseIdentifier = "AvatarListCell"; } var cellInfo = new AvatarCellInfo(); if (__AvatarLoadResults[row] != AvatarLoadResult.Completed) { cellInfo.name = System.IO.Path.GetFileName(AvatarList[row].FullPath) + " failed to load"; cellInfo.authorName = "Make sure it's not a duplicate avatar."; cellInfo.rawImageTexture = null; } else { try { cellInfo.name = __AvatarNames[row]; cellInfo.authorName = __AvatarAuthors[row]; cellInfo.rawImageTexture = __AvatarCovers[row] ? __AvatarCovers[row].texture : Texture2D.blackTexture; } catch (Exception e) { cellInfo.name = "If you see this yell at Assistant"; cellInfo.authorName = "because she f****d up"; cellInfo.rawImageTexture = Texture2D.blackTexture; Console.WriteLine(e); } } tableCell.SetPrivateField("_beatmapCharacteristicAlphas", new float[0]); tableCell.SetPrivateField("_beatmapCharacteristicImages", new UnityEngine.UI.Image[0]); tableCell.GetPrivateField <TextMeshProUGUI>("_songNameText").text = cellInfo.name; tableCell.GetPrivateField <TextMeshProUGUI>("_authorText").text = cellInfo?.authorName; tableCell.GetPrivateField <UnityEngine.UI.RawImage>("_coverRawImage").texture = cellInfo.rawImageTexture; return(tableCell); }
public TableCell CellForIdx(TableView tableView, int idx) { // adapted from CustomUI's CustomListViewController LevelListTableCell tableCell = (LevelListTableCell)_tableView.DequeueReusableCellForIdentifier(ReuseIdentifier); if (tableCell == null) { tableCell = Instantiate(_tableCellInstance); // force text to take up full width (minus cover image) var cellText = tableCell.GetPrivateField <TextMeshProUGUI>("_songNameText"); cellText.rectTransform.sizeDelta += new Vector2(14f, 0f); cellText.rectTransform.anchoredPosition += new Vector2(7f, 0f); cellText = tableCell.GetPrivateField <TextMeshProUGUI>("_authorText"); cellText.rectTransform.sizeDelta += new Vector2(12f, 0f); cellText.rectTransform.anchoredPosition += new Vector2(6f, 0f); foreach (UEImage i in tableCell.GetPrivateField <UEImage[]>("_beatmapCharacteristicImages")) { i.enabled = false; } tableCell.SetPrivateField("_beatmapCharacteristicImages", new UEImage[0]); tableCell.transform.Find("FavoritesIcon").gameObject.SetActive(false); tableCell.reuseIdentifier = ReuseIdentifier; } IPreviewBeatmapLevel level = _beatmapLevels[idx]; string contributorsText = ""; if (!string.IsNullOrEmpty(level.levelAuthorName)) { contributorsText = $"[{level.levelAuthorName}]"; contributorsText = (string.IsNullOrEmpty(level.songAuthorName) ? "" : " ") + contributorsText; } tableCell.GetPrivateField <TextMeshProUGUI>("_songNameText").text = $"{level.songName} <size=80%>{level.songSubName}</size>"; tableCell.GetPrivateField <TextMeshProUGUI>("_authorText").text = $"{level.songAuthorName}<size=80%>{contributorsText}</size>"; tableCell.SetPrivateField("_bought", true); // black placeholder image RawImage coverImage = tableCell.GetPrivateField <RawImage>("_coverRawImage"); coverImage.texture = Texture2D.blackTexture; coverImage.color = Color.black; SetBaseGameCoverImageAsync(tableCell, level); return(tableCell); }
public TableCell CellForIdx(TableView tableView, int idx) { LevelListTableCell tableCell = avatarList.tableView.DequeueReusableCellForIdentifier(kTableCellReuseIdentifier) as LevelListTableCell; if (!tableCell) { tableCell = Instantiate(_tableCellTemplate); foreach (var image in tableCell.GetPrivateField <LevelListTableCell, UnityEngine.UI.Image[]>("_beatmapCharacteristicImages")) { DestroyImmediate(image); } tableCell.SetPrivateField("_beatmapCharacteristicImages", new UnityEngine.UI.Image[0]); tableCell.GetPrivateField <LevelListTableCell, RawImage>("_favoritesBadgeImage").enabled = false; tableCell.reuseIdentifier = kTableCellReuseIdentifier; } AvatarListItem avatar = _avatars[idx]; tableCell.GetPrivateField <LevelListTableCell, TextMeshProUGUI>("_songNameText").text = avatar.name; tableCell.GetPrivateField <LevelListTableCell, TextMeshProUGUI>("_authorText").text = avatar.author; tableCell.GetPrivateField <LevelListTableCell, RawImage>("_coverRawImage").texture = avatar.icon ?? _blankAvatarIcon; return(tableCell); }
public TableCell CellForIdx(int row) { LevelListTableCell cell = Instantiate(_songTableCellInstance); BeatmapLevelSO song = availableSongs[row]; cell.SetIcon(song.coverImage); cell.SetText($"{song.songName} <size=80%>{song.songSubName}</size>"); cell.SetSubText(song.songAuthorName); cell.reuseIdentifier = "SongCell"; cell.SetPrivateField("_beatmapCharacteristicAlphas", new float[3] { song.beatmapCharacteristics.Any(x => x.serializedName == "Standard") ? 1f : 0.1f, song.beatmapCharacteristics.Any(x => x.serializedName == "NoArrows") ? 1f : 0.1f, song.beatmapCharacteristics.Any(x => x.serializedName == "OneSaber") ? 1f : 0.1f }); cell.SetPrivateField("_beatmapCharacteristicImages", cell.GetComponentsInChildren <UnityEngine.UI.Image>().Where(x => x.name.StartsWith("LevelTypeIcon")).ToArray()); cell.SetPrivateField("_bought", true); return(cell); }
public LevelListTableCell GetTableCell(int row, bool beatmapCharacteristicImages = false) { LevelListTableCell _tableCell = (LevelListTableCell)_customListTableView.DequeueReusableCellForIdentifier(reuseIdentifier); if (!_tableCell) { _tableCell = Instantiate(_songListTableCellInstance); } if (!beatmapCharacteristicImages) { foreach (UnityEngine.UI.Image i in _tableCell.GetPrivateField <UnityEngine.UI.Image[]>("_beatmapCharacteristicImages")) { i.enabled = false; } } _tableCell.SetPrivateField("_beatmapCharacteristicAlphas", new float[0]); _tableCell.SetPrivateField("_beatmapCharacteristicImages", new UnityEngine.UI.Image[0]); _tableCell.reuseIdentifier = reuseIdentifier; return(_tableCell); }
public TableCell CellForIdx(int row) { LevelListTableCell _tableCell = _sabersTableView.DequeueReusableCellForIdentifier("LevelListTableCell") as LevelListTableCell; if (!_tableCell) { _tableCell = Instantiate(_songListTableCellInstance); _tableCell.reuseIdentifier = "LevelListTableCell"; } _tableCell.SetPrivateField("_beatmapCharacteristicAlphas", new float[0]); _tableCell.SetPrivateField("_beatmapCharacteristicImages", new UnityEngine.UI.Image[0]); var saber = _sabers.ElementAtOrDefault(row); _tableCell.GetPrivateField <TextMeshProUGUI>("_songNameText").text = saber?.Name; _tableCell.GetPrivateField <TextMeshProUGUI>("_authorText").text = saber?.Author; _tableCell.GetPrivateField <UnityEngine.UI.Image>("_coverImage").sprite = Sprite.Create(Texture2D.blackTexture, new Rect(), Vector2.zero); return(_tableCell); }
public TableCell CellForIdx(TableView view, int row) { LevelListTableCell _tableCell = Instantiate(_songListTableCellInstance); _tableCell.reuseIdentifier = "PlaylistTableCell"; var songNameText = _tableCell.GetPrivateField <TextMeshProUGUI>("_songNameText"); songNameText.text = playlistList[row].playlistTitle; songNameText.overflowMode = TextOverflowModes.Overflow; _tableCell.GetPrivateField <TextMeshProUGUI>("_authorText").text = playlistList[row].playlistAuthor; if (playlistList[row].icon != null) { _tableCell.GetPrivateField <RawImage>("_coverRawImage").texture = playlistList[row].icon.texture; } _tableCell.SetPrivateField("_beatmapCharacteristicAlphas", new float[0]); _tableCell.SetPrivateField("_beatmapCharacteristicImages", new UnityEngine.UI.Image[0]); _tableCell.SetPrivateField("_bought", true); foreach (var icon in _tableCell.GetComponentsInChildren <UnityEngine.UI.Image>().Where(x => x.name.StartsWith("LevelTypeIcon"))) { Destroy(icon.gameObject); } if (highlightDownloadedPlaylists) { if (PlaylistsCollection.loadedPlaylists.Any(x => x.PlaylistEqual(playlistList[row]))) { foreach (UnityEngine.UI.Image img in _tableCell.GetComponentsInChildren <UnityEngine.UI.Image>()) { img.color = new Color(1f, 1f, 1f, 0.2f); } foreach (TextMeshProUGUI text in _tableCell.GetComponentsInChildren <TextMeshProUGUI>()) { text.faceColor = new Color(1f, 1f, 1f, 0.2f); } } } return(_tableCell); }
public override TableCell CellForIdx(TableView tableView, int row) { LevelListTableCell _tableCell = Instantiate(_requestListTableCellInstance); _tableCell.reuseIdentifier = "VersusPlaylistFriendCell"; _tableCell.SetPrivateField("_bought", true); SongRequest request = SongInfoForRow(row); SetDataFromLevelAsync(request, _tableCell, row); return(_tableCell); }
public TableCell CellForIdx(int row) { LevelListTableCell cell = Instantiate(_presetsTableCellInstance); RoomPreset preset = availablePresets[row]; cell.GetComponentsInChildren <UnityEngine.UI.Image>(true).First(x => x.name == "CoverImage").enabled = false; cell.SetText($"{preset.GetName()}"); cell.SetSubText($"{preset.settings.Name}"); cell.reuseIdentifier = "PresetCell"; cell.SetPrivateField("_beatmapCharacteristicAlphas", new float[0]); cell.SetPrivateField("_beatmapCharacteristicImages", new UnityEngine.UI.Image[0]); cell.SetPrivateField("_bought", true); foreach (var icon in cell.GetComponentsInChildren <UnityEngine.UI.Image>().Where(x => x.name.StartsWith("LevelTypeIcon"))) { Destroy(icon.gameObject); } return(cell); }
public TableCell CellForIdx(TableView sender, int row) { LevelListTableCell cell = Instantiate(_serverTableCellInstance); cell.reuseIdentifier = "ServerHubCell"; ServerHubClient client = _serverHubClients[row]; cell.GetComponentsInChildren <UnityEngine.UI.RawImage>(true).First(x => x.name == "CoverImage").enabled = false; if (!string.IsNullOrEmpty(client.serverHubName)) { cell.SetText($"{(!client.serverHubCompatible ? (client.serverHubAvailable ? "<color=yellow>" : "<color=red>") : "")}{client.serverHubName}"); } else { cell.SetText($"{(!client.serverHubCompatible ? (client.serverHubAvailable ? "<color=yellow>" : "<color=red>") : "")}{client.ip}:{client.port}"); } if (client.serverHubCompatible) { cell.SetSubText($"{client.playersCount} players, {client.availableRoomsCount} rooms, ping: {Mathf.RoundToInt(client.ping * 1000)}"); } else { cell.SetSubText($"{(client.serverHubAvailable ? "VERSION MISMATCH" : "SERVER DOWN")}"); } cell.SetPrivateField("_beatmapCharacteristicAlphas", new float[0]); cell.SetPrivateField("_beatmapCharacteristicImages", new UnityEngine.UI.Image[0]); cell.SetPrivateField("_bought", true); foreach (var icon in cell.GetComponentsInChildren <UnityEngine.UI.Image>().Where(x => x.name.StartsWith("LevelTypeIcon"))) { Destroy(icon.gameObject); } return(cell); }
public override TableCell CellForIdx(TableView tablewView, int idx) { // adapted from CustomUI's CustomListViewController LevelListTableCell tableCell = (LevelListTableCell)_customListTableView.DequeueReusableCellForIdentifier(reuseIdentifier); TextMeshProUGUI cellText; UEImage statusImg; if (!tableCell) { tableCell = Instantiate(_songListTableCellInstance); // remove unused elements Destroy(tableCell.GetPrivateField <RawImage>("_coverRawImage").gameObject); Destroy(tableCell.GetPrivateField <TextMeshProUGUI>("_authorText").gameObject); cellText = tableCell.GetPrivateField <TextMeshProUGUI>("_songNameText"); cellText.fontSize = 5f; cellText.alignment = TextAlignmentOptions.Left; cellText.rectTransform.anchorMin = new Vector2(0.15f, 0f); cellText.rectTransform.anchorMax = Vector2.one; cellText.rectTransform.pivot = new Vector2(0.5f, 0.5f); cellText.rectTransform.sizeDelta = Vector2.zero; cellText.rectTransform.anchoredPosition = Vector2.zero; UEImage bgImg = tableCell.GetComponentsInChildren <UEImage>().First(x => x.name == "BG"); bgImg.rectTransform.anchorMin = Vector2.zero; bgImg.rectTransform.anchorMax = Vector2.one; bgImg.rectTransform.pivot = new Vector2(0.5f, 0.5f); bgImg.rectTransform.anchoredPosition = Vector2.zero; bgImg.rectTransform.sizeDelta = Vector2.zero; UEImage highlightImg = tableCell.GetComponentsInChildren <UEImage>().First(x => x.name == "Highlight"); highlightImg.rectTransform.anchorMin = Vector2.zero; highlightImg.rectTransform.anchorMax = Vector2.one; highlightImg.rectTransform.pivot = new Vector2(0.5f, 0.5f); highlightImg.rectTransform.anchoredPosition = Vector2.zero; highlightImg.rectTransform.sizeDelta = Vector2.zero; statusImg = new GameObject("StatusImage").AddComponent <UEImage>(); statusImg.transform.SetParent(tableCell.transform, false); statusImg.rectTransform.anchorMin = Vector2.zero; statusImg.rectTransform.anchorMax = new Vector2(0.03f, 1f); statusImg.rectTransform.pivot = new Vector2(0.5f, 0.5f); statusImg.rectTransform.sizeDelta = new Vector2(0.5f, 0.5f); statusImg.rectTransform.anchoredPosition = Vector2.zero; statusImg.sprite = Sprite.Create(Texture2D.whiteTexture, new Rect(0f, 0f, 1f, 1f), Vector2.zero); statusImg.color = DefaultFilterColor; statusImg.material = Utilities.NoGlowMaterial; foreach (UEImage i in tableCell.GetPrivateField <UEImage[]>("_beatmapCharacteristicImages")) { i.enabled = false; } tableCell.SetPrivateField("_beatmapCharacteristicAlphas", new float[0]); tableCell.SetPrivateField("_beatmapCharacteristicImages", new UEImage[0]); tableCell.reuseIdentifier = reuseIdentifier; } IFilter filter = FilterList[idx]; cellText = tableCell.GetPrivateField <TextMeshProUGUI>("_songNameText"); statusImg = tableCell.GetComponentsInChildren <UEImage>().First(x => x.name == "StatusImage"); if (filter.IsAvailable) { cellText.text = filter.FilterName; } else { cellText.text = $"<color=#FF8888><i>{filter.FilterName}</i></color>"; } if (filter.Status == FilterStatus.NotAppliedAndDefault) { statusImg.color = DefaultFilterColor; } else if (filter.Status == FilterStatus.NotAppliedAndChanged) { statusImg.color = PendingFilterColor; } else if (filter.Status == FilterStatus.AppliedAndChanged) { statusImg.color = AppliedPendingFilterColor; } else { statusImg.color = AppliedFilterColor; } return(tableCell); }
protected override void DidActivate(bool firstActivation, ActivationType activationType) { if (firstActivation && activationType == ActivationType.AddedToHierarchy) { _beatmapCharacteristics = Resources.FindObjectsOfTypeAll <BeatmapCharacteristicSO>(); _standardCharacteristic = _beatmapCharacteristics.First(x => x.serializedName == "Standard"); bool isHost = Client.Instance.isHost; _selectedSongCell = Instantiate(Resources.FindObjectsOfTypeAll <LevelListTableCell>().First(x => (x.name == "LevelListTableCell")), rectTransform, false); (_selectedSongCell.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (_selectedSongCell.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); (_selectedSongCell.transform as RectTransform).anchoredPosition = new Vector2(-25f, 7.5f); _selectedSongCell.SetPrivateField("_beatmapCharacteristicAlphas", new float[0]); _selectedSongCell.SetPrivateField("_beatmapCharacteristicImages", new UnityEngine.UI.Image[0]); _selectedSongCell.SetPrivateField("_bought", true); foreach (var icon in _selectedSongCell.GetComponentsInChildren <UnityEngine.UI.Image>().Where(x => x.name.StartsWith("LevelTypeIcon"))) { Destroy(icon.gameObject); } _playersReadyText = BeatSaberUI.CreateText(rectTransform, "0/0 players ready", new Vector2(0f, 5f)); _playersReadyText.rectTransform.anchorMin = new Vector2(0.5f, 0f); _playersReadyText.rectTransform.anchorMax = new Vector2(0.5f, 0f); _playersReadyText.alignment = TextAlignmentOptions.Center; _playersReadyText.fontSize = 5.5f; _cancelButton = BeatSaberUI.CreateUIButton(rectTransform, "CancelButton"); (_cancelButton.transform as RectTransform).anchoredPosition = new Vector2(-30f, -25f); (_cancelButton.transform as RectTransform).sizeDelta = new Vector2(28f, 12f); _cancelButton.SetButtonText("CANCEL"); _cancelButton.ToggleWordWrapping(false); _cancelButton.SetButtonTextSize(5.5f); _cancelButton.onClick.AddListener(delegate() { discardPressed?.Invoke(); }); _cancelButton.gameObject.SetActive(isHost); _playButton = BeatSaberUI.CreateUIButton(rectTransform, "CancelButton"); (_playButton.transform as RectTransform).anchoredPosition = new Vector2(30f, -25f); (_playButton.transform as RectTransform).sizeDelta = new Vector2(28f, 12f); _playButton.SetButtonText("PLAY"); _playButton.ToggleWordWrapping(false); _playButton.SetButtonTextSize(5.5f); _playButton.onClick.AddListener(delegate() { playPressed?.Invoke(_selectedSong, selectedCharacteristic, selectedDifficulty); }); var playGlow = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => x.name == "PlayButton").GetComponentsInChildren <RectTransform>().First(x => x.name == "GlowContainer"), _playButton.transform); //Let's add some glow! playGlow.transform.SetAsFirstSibling(); playGlow.GetComponentInChildren <UnityEngine.UI.Image>().color = new Color(0f, 0.7058824f, 1f, 0.7843137f); _playButton.gameObject.SetActive(isHost); _characteristicControl = BeatSaberUI.CreateTextSegmentedControl(rectTransform, new Vector2(0f, 34f), new Vector2(110f, 7f), _characteristicControl_didSelectCellEvent); _characteristicControl.SetTexts(new string[] { "Standard", "No Arrows", "One Saber" }); _characteristicControlBlocker = new GameObject("CharacteristicControlBlocker", typeof(RectTransform)).GetComponent <RectTransform>(); //"If it works it's not stupid" _characteristicControlBlocker.SetParent(rectTransform, false); _characteristicControlBlocker.gameObject.AddComponent <UnityEngine.UI.Image>().color = new Color(0f, 0f, 0f, 0f); _characteristicControlBlocker.anchorMin = new Vector2(0f, 1f); _characteristicControlBlocker.anchorMax = new Vector2(1f, 1f); _characteristicControlBlocker.sizeDelta = new Vector2(-30f, 7f); _characteristicControlBlocker.anchoredPosition = new Vector2(0f, -6f); _difficultyControl = BeatSaberUI.CreateTextSegmentedControl(rectTransform, new Vector2(0f, 24f), new Vector2(110f, 7f), _difficultyControl_didSelectCellEvent); _difficultyControl.SetTexts(new string[] { "Easy", "Normal", "Hard", "Expert", "Expert+" }); _difficultyControlBlocker = new GameObject("DifficultyControlBlocker", typeof(RectTransform)).GetComponent <RectTransform>(); //"If it works it's not stupid" _difficultyControlBlocker.SetParent(rectTransform, false); _difficultyControlBlocker.gameObject.AddComponent <UnityEngine.UI.Image>().color = new Color(0f, 0f, 0f, 0f); _difficultyControlBlocker.anchorMin = new Vector2(0f, 1f); _difficultyControlBlocker.anchorMax = new Vector2(1f, 1f); _difficultyControlBlocker.sizeDelta = new Vector2(-30f, 7f); _difficultyControlBlocker.anchoredPosition = new Vector2(0f, -16f); _progressBarRect = new GameObject("ProgressBar", typeof(RectTransform)).GetComponent <RectTransform>(); _progressBarRect.SetParent(rectTransform, false); _progressBarRect.anchorMin = new Vector2(0.5f, 0.5f); _progressBarRect.anchorMax = new Vector2(0.5f, 0.5f); _progressBarRect.anchoredPosition = new Vector2(0f, -7.5f); _progressBarRect.sizeDelta = new Vector2(46f, 5f); _progressBackground = new GameObject("Background", typeof(RectTransform), typeof(UnityEngine.UI.Image)).GetComponent <UnityEngine.UI.Image>(); _progressBackground.rectTransform.SetParent(_progressBarRect, false); _progressBackground.rectTransform.anchorMin = new Vector2(0f, 0f); _progressBackground.rectTransform.anchorMax = new Vector2(1f, 1f); _progressBackground.rectTransform.anchoredPosition = new Vector2(0f, 0f); _progressBackground.rectTransform.sizeDelta = new Vector2(0f, 0f); _progressBackground.sprite = Sprites.whitePixel; _progressBackground.material = Sprites.NoGlowMat; _progressBackground.color = new Color(1f, 1f, 1f, 0.075f); _progressBarImage = new GameObject("ProgressImage", typeof(RectTransform), typeof(UnityEngine.UI.Image)).GetComponent <UnityEngine.UI.Image>(); _progressBarImage.rectTransform.SetParent(_progressBarRect, false); _progressBarImage.rectTransform.anchorMin = new Vector2(0f, 0f); _progressBarImage.rectTransform.anchorMax = new Vector2(1f, 1f); _progressBarImage.rectTransform.anchoredPosition = new Vector2(0f, 0f); _progressBarImage.rectTransform.sizeDelta = new Vector2(0f, 0f); _progressBarImage.sprite = Sprites.whitePixel; _progressBarImage.material = Sprites.NoGlowMat; _progressBarImage.type = UnityEngine.UI.Image.Type.Filled; _progressBarImage.fillMethod = UnityEngine.UI.Image.FillMethod.Horizontal; _progressBarImage.fillAmount = 0.5f; _progressText = BeatSaberUI.CreateText(rectTransform, "0.0%", new Vector2(55f, -10f)); _progressText.rectTransform.SetParent(_progressBarRect, true); } _playButton.interactable = false; _progressBarRect.gameObject.SetActive(false); }
protected override void DidActivate(bool firstActivation, ActivationType type) { if (firstActivation && type == ActivationType.AddedToHierarchy) { _songTableCell = Instantiate(Resources.FindObjectsOfTypeAll <LevelListTableCell>().First(x => (x.name == "LevelListTableCell")), rectTransform); (_songTableCell.transform as RectTransform).anchoredPosition = new Vector2(100f, -1.5f); _songTableCell.SetPrivateField("_beatmapCharacteristicAlphas", new float[0]); _songTableCell.SetPrivateField("_beatmapCharacteristicImages", new UnityEngine.UI.Image[0]); _songTableCell.SetPrivateField("_bought", true); foreach (var icon in _songTableCell.GetComponentsInChildren <UnityEngine.UI.Image>().Where(x => x.name.StartsWith("LevelTypeIcon"))) { Destroy(icon.gameObject); } _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).anchoredPosition = new Vector2(0f, -12.5f); (_pageUpButton.transform as RectTransform).sizeDelta = new Vector2(40f, 6f); _pageUpButton.interactable = true; _pageUpButton.onClick.AddListener(delegate() { _leaderboardTableView.PageScrollUp(); }); _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).anchoredPosition = new Vector2(0f, 7f); (_pageDownButton.transform as RectTransform).sizeDelta = new Vector2(40f, 6f); _pageDownButton.interactable = true; _pageDownButton.onClick.AddListener(delegate() { _leaderboardTableView.PageScrollDown(); }); _pageDownButton.interactable = false; _playNowButton = this.CreateUIButton("QuitButton", new Vector2(-39f, 34.5f), new Vector2(28f, 8.8f), () => { playNowButtonPressed?.Invoke(); }, "Play now"); _playNowButton.ToggleWordWrapping(false); _progressText = BeatSaberUI.CreateText(rectTransform, "0.0%", new Vector2(8f, 32f)); _progressText.gameObject.SetActive(false); _leaderboardTableCellInstance = Resources.FindObjectsOfTypeAll <LeaderboardTableCell>().First(x => (x.name == "LeaderboardTableCell")); RectTransform container = new GameObject("Content", typeof(RectTransform)).transform as RectTransform; container.SetParent(rectTransform, false); container.anchorMin = new Vector2(0.15f, 0.5f); container.anchorMax = new Vector2(0.85f, 0.5f); container.sizeDelta = new Vector2(0f, 56f); container.anchoredPosition = new Vector2(0f, -3f); _leaderboardTableView = new GameObject("CustomTableView").AddComponent <TableView>(); _leaderboardTableView.gameObject.AddComponent <RectMask2D>(); _leaderboardTableView.transform.SetParent(container, false); _leaderboardTableView.SetPrivateField("_isInitialized", false); _leaderboardTableView.SetPrivateField("_preallocatedCells", new TableView.CellsGroup[0]); _leaderboardTableView.Init(); RectMask2D viewportMask = Instantiate(Resources.FindObjectsOfTypeAll <RectMask2D>().First(), _leaderboardTableView.transform, false); viewportMask.transform.DetachChildren(); _leaderboardTableView.GetComponentsInChildren <RectTransform>().First(x => x.name == "Content").transform.SetParent(viewportMask.rectTransform, false); (_leaderboardTableView.transform as RectTransform).anchorMin = new Vector2(0f, 0f); (_leaderboardTableView.transform as RectTransform).anchorMax = new Vector2(1f, 1f); (_leaderboardTableView.transform as RectTransform).sizeDelta = new Vector2(0f, 0f); (_leaderboardTableView.transform as RectTransform).anchoredPosition = new Vector3(0f, 0f); ReflectionUtil.SetPrivateField(_leaderboardTableView, "_pageUpButton", _pageUpButton); ReflectionUtil.SetPrivateField(_leaderboardTableView, "_pageDownButton", _pageDownButton); _leaderboardTableView.dataSource = this; _timerText = BeatSaberUI.CreateText(rectTransform, "", new Vector2(0f, 34f)); _timerText.fontSize = 8f; _timerText.alignment = TextAlignmentOptions.Center; _timerText.rectTransform.sizeDelta = new Vector2(30f, 6f); } }
protected override void DidActivate(bool firstActivation, ActivationType activationType) { if (firstActivation) { _timerText = BeatSaberUI.CreateText(rectTransform, "0:30", new Vector2(0f, 35f)); _timerText.alignment = TextAlignmentOptions.Top; _timerText.fontSize = 8f; _nextSongText = BeatSaberUI.CreateText(rectTransform, "Next song:", new Vector2(0f, 15.5f)); _nextSongText.alignment = TextAlignmentOptions.Top; _nextSongText.fontSize = 6f; _currentSongCell = Instantiate(Resources.FindObjectsOfTypeAll <LevelListTableCell>().First(x => (x.name == "LevelListTableCell")), rectTransform, false); (_currentSongCell.transform as RectTransform).anchoredPosition = new Vector2(55f, -27f); _currentSongCell.SetPrivateField("_beatmapCharacteristicAlphas", new float[0]); _currentSongCell.SetPrivateField("_beatmapCharacteristicImages", new UnityEngine.UI.Image[0]); _currentSongCell.SetPrivateField("_bought", true); foreach (var icon in _currentSongCell.GetComponentsInChildren <UnityEngine.UI.Image>().Where(x => x.name.StartsWith("LevelTypeIcon"))) { Destroy(icon.gameObject); } _progressBarRect = new GameObject("ProgressBar", typeof(RectTransform)).GetComponent <RectTransform>(); _progressBarRect.SetParent(rectTransform, false); _progressBarRect.anchorMin = new Vector2(0.5f, 0.5f); _progressBarRect.anchorMax = new Vector2(0.5f, 0.5f); _progressBarRect.anchoredPosition = new Vector2(0f, -7.5f); _progressBarRect.sizeDelta = new Vector2(46f, 5f); _progressBackground = new GameObject("Background", typeof(RectTransform), typeof(Image)).GetComponent <Image>(); _progressBackground.rectTransform.SetParent(_progressBarRect, false); _progressBackground.rectTransform.anchorMin = new Vector2(0f, 0f); _progressBackground.rectTransform.anchorMax = new Vector2(1f, 1f); _progressBackground.rectTransform.anchoredPosition = new Vector2(0f, 0f); _progressBackground.rectTransform.sizeDelta = new Vector2(0f, 0f); _progressBackground.sprite = Sprites.whitePixel; _progressBackground.material = Sprites.NoGlowMat; _progressBackground.color = new Color(1f, 1f, 1f, 0.075f); _progressBarImage = new GameObject("ProgressImage", typeof(RectTransform), typeof(Image)).GetComponent <Image>(); _progressBarImage.rectTransform.SetParent(_progressBarRect, false); _progressBarImage.rectTransform.anchorMin = new Vector2(0f, 0f); _progressBarImage.rectTransform.anchorMax = new Vector2(1f, 1f); _progressBarImage.rectTransform.anchoredPosition = new Vector2(0f, 0f); _progressBarImage.rectTransform.sizeDelta = new Vector2(0f, 0f); _progressBarImage.sprite = Sprites.whitePixel; _progressBarImage.material = Sprites.NoGlowMat; _progressBarImage.type = Image.Type.Filled; _progressBarImage.fillMethod = Image.FillMethod.Horizontal; _progressBarImage.fillAmount = 0.5f; _progressText = BeatSaberUI.CreateText(rectTransform, "0.0%", new Vector2(55f, -10f)); _progressText.rectTransform.SetParent(_progressBarRect, true); _progressBarRect.gameObject.SetActive(false); _skipButton = BeatSaberUI.CreateUIButton(rectTransform, "CancelButton", new Vector2(-12.5f, -25f), new Vector2(20f, 8.8f), () => { skipPressedEvent?.Invoke(); }, "Skip"); _skipButton.ToggleWordWrapping(false); _skipText = BeatSaberUI.CreateText(rectTransform, " this song", new Vector2(8.5f, -21f)); _skipText.alignment = TextAlignmentOptions.Top; _skipText.fontSize = 6f; _skipText.rectTransform.sizeDelta = new Vector2(0f, 0f); _skipText.overflowMode = TextOverflowModes.Overflow; _skipText.enableWordWrapping = false; } _progressBarRect.gameObject.SetActive(false); SetSkipState(false); }
private async void SetDataFromLevelAsync(SongRequest request, LevelListTableCell _tableCell, int row) { bool highlight = (request.requestInfo.Length > 0) && (request.requestInfo[0] == '!'); string msg = highlight ? "MSG" : ""; var hasMessage = (request.requestInfo.Length > 0) && (request.requestInfo[0] == '!'); var isChallenge = request.requestInfo.IndexOf("!challenge", StringComparison.OrdinalIgnoreCase) >= 0; var beatmapCharacteristicImages = _tableCell.GetPrivateField <UnityEngine.UI.Image[]>("_beatmapCharacteristicImages"); // NEW VERSION foreach (var i in beatmapCharacteristicImages) { i.enabled = false; } _tableCell.SetPrivateField("_beatmapCharacteristicAlphas", new float[3] { 0f, 1f, 1f }); // set message icon if request has a message // NEW VERSION if (hasMessage) { beatmapCharacteristicImages.Last().sprite = Base64Sprites.InfoIcon; beatmapCharacteristicImages.Last().enabled = true; } // set challenge icon if song is a challenge if (isChallenge) { var el = beatmapCharacteristicImages.ElementAt(1); el.sprite = Base64Sprites.VersusChallengeIcon; el.enabled = true; } string pp = ""; int ppvalue = request.song["pp"].AsInt; if (ppvalue > 0) { pp = $" {ppvalue} PP"; } var dt = new RequestBot.DynamicText().AddSong(request.song).AddUser(ref request.requestor); // Get basic fields dt.Add("Status", request.status.ToString()); dt.Add("Info", (request.requestInfo != "") ? " / " + request.requestInfo : ""); dt.Add("RequestTime", request.requestTime.ToLocalTime().ToString("hh:mm")); var songName = _tableCell.GetPrivateField <TextMeshProUGUI>("_songNameText"); //songName.text = $"{request.song["songName"].Value} <size=50%>{RequestBot.GetRating(ref request.song)} <color=#3fff3f>{pp}</color></size> <color=#ff00ff>{msg}</color>"; songName.text = $"{request.song["songName"].Value} <size=50%>{RequestBot.GetRating(ref request.song)} <color=#3fff3f>{pp}</color></size>"; // NEW VERSION var author = _tableCell.GetPrivateField <TextMeshProUGUI>("_authorText"); author.text = dt.Parse(RequestBot.QueueListRow2); var image = _tableCell.GetPrivateField <RawImage>("_coverRawImage"); var imageSet = false; if (SongCore.Loader.AreSongsLoaded) { CustomPreviewBeatmapLevel level = CustomLevelForRow(row); if (level != null) { Plugin.Log("custom level found"); // set image from song's cover image var tex = await level.GetCoverImageTexture2DAsync(System.Threading.CancellationToken.None); image.texture = tex; imageSet = true; } } if (!imageSet) { string url = request.song["coverURL"].Value; var s = GetSongCoverArt(url, (sprite) => { _cachedSprites[url] = sprite; _customListTableView.ReloadData(); }); image.texture = s.texture; } BeatSaberUI.AddHintText(_tableCell.transform as RectTransform, dt.Parse(RequestBot.SongHintText)); }