Example #1
0
        public TableCell CellForIdx(TableView tableView, int idx)
        {
            LevelListTableCell tableCell = (LevelListTableCell)tableView.DequeueReusableCellForIdentifier(_songsTableView.reuseIdentifier);

            if (!tableCell)
            {
                if (songListTableCellInstance == null)
                {
                    songListTableCellInstance = Resources.FindObjectsOfTypeAll <LevelListTableCell>().First(x => (x.name == "LevelListTableCell"));
                }

                tableCell = Instantiate(songListTableCellInstance);
            }

            var level = _allBeatmaps.FirstOrDefault(x => x.levelID == requestedSongs[idx].levelId);

            if (level != null)
            {
                tableCell.SetDataFromLevelAsync(level, false);
                tableCell.RefreshAvailabilityAsync(_additionalContentModel, level.levelID);
            }
            else
            {
                TextMeshProUGUI songNameText   = LevelListTableCell_SongNameText(ref tableCell);
                TextMeshProUGUI authorNameText = LevelListTableCell_AuthorText(ref tableCell);
                songNameText.text   = string.Format("{0} <size=80%>{1}</size>", requestedSongs[idx].songName, requestedSongs[idx].songSubName);
                authorNameText.text = "Loading info...";

                RawImage coverImage = LevelListTableCell_CoverImage(ref tableCell);
                coverImage.texture = null;
                coverImage.color   = Color.clear;

                LevelListTableCell_BadgeImage(ref tableCell).enabled = false;

                Image[] chars = LevelListTableCell_CharImages(ref tableCell);

                foreach (Image img in chars)
                {
                    img.enabled = false;
                }

                SongDownloader.Instance.RequestSongByLevelID(requestedSongs[idx].hash, (info) =>
                {
                    songNameText.text   = string.Format("{0} <size=80%>{1}</size>", info.songName, info.songSubName);
                    authorNameText.text = info.songAuthorName;

                    StartCoroutine(LoadScripts.LoadSpriteCoroutine(info.coverURL, (cover) =>
                    {
                        coverImage.texture = cover;
                        coverImage.color   = Color.white;
                    }));
                });
            }

            tableCell.reuseIdentifier = _songsTableView.reuseIdentifier;
            return(tableCell);
        }
Example #2
0
        public TableCell CellForIdx(TableView tableView, int row)
        {
            LevelListTableCell cell = Instantiate(_songTableCellInstance);

            IPreviewBeatmapLevel song = availableSongs[row].PreviewBeatmap;

            cell.reuseIdentifier = "SongCell";
            cell.SetDataFromLevelAsync(song, false);
            cell.SetField("_bought", true);

            return(cell);
        }
        public TableCell CellForIdx(TableView tableView, int idx)
        {
            LevelListTableCell tableCell = (LevelListTableCell)tableView.DequeueReusableCellForIdentifier(_songsTableView.reuseIdentifier);

            if (!tableCell)
            {
                if (songListTableCellInstance == null)
                {
                    songListTableCellInstance = Resources.FindObjectsOfTypeAll <LevelListTableCell>().First(x => (x.name == "LevelListTableCell"));
                }

                tableCell = Instantiate(songListTableCellInstance);
            }

            var level = _beatmapLevelsModel.allLoadedBeatmapLevelPackCollection.beatmapLevelPacks.SelectMany(x => x.beatmapLevelCollection.beatmapLevels).FirstOrDefault(x => x.levelID == requestedSongs[idx].levelId);

            if (level != null)
            {
                tableCell.SetDataFromLevelAsync(level, false);
                tableCell.RefreshAvailabilityAsync(_additionalContentModel, level.levelID);
            }
            else
            {
                tableCell.GetPrivateField <TextMeshProUGUI>("_songNameText").text = string.Format("{0} <size=80%>{1}</size>", level.songName, level.songSubName);
                tableCell.GetPrivateField <TextMeshProUGUI>("_authorText").text   = level.songAuthorName;

                var coverImage = tableCell.GetPrivateField <RawImage>("_coverRawImage");
                coverImage.texture = null;
                coverImage.color   = Color.clear;

                Image[] chars = tableCell.GetPrivateField <Image[]>("_beatmapCharacteristicImages");

                foreach (var img in chars)
                {
                    img.enabled = false;
                }

                SongDownloader.Instance.RequestSongByLevelID(requestedSongs[idx].hash, (info) =>
                {
                    tableCell.GetPrivateField <TextMeshProUGUI>("_songNameText").text = string.Format("{0} <size=80%>{1}</size>", info.songName, info.songSubName);
                    tableCell.GetPrivateField <TextMeshProUGUI>("_authorText").text   = info.songAuthorName;

                    StartCoroutine(LoadScripts.LoadSpriteCoroutine(info.coverURL, (cover) => { coverImage.texture = cover; }));
                });
            }

            tableCell.reuseIdentifier = _songsTableView.reuseIdentifier;
            return(tableCell);
        }
        public TableCell CellForIdx(TableView tableView, int idx)
        {
            LevelListTableCell tableCell = (LevelListTableCell)tableView.DequeueReusableCellForIdentifier(songTable.reuseIdentifier);

            if (!tableCell)
            {
                tableCellBaseInstance = tableCellBaseInstance ?? Resources.FindObjectsOfTypeAll <LevelListTableCell>().First(x => (x.name == "LevelListTableCell"));
                tableCell             = Instantiate(tableCellBaseInstance);
            }

            tableCell.SetDataFromLevelAsync(availableSongs[idx], _playerDataModel.playerData.favoritesLevelIds.Contains(availableSongs[idx].levelID));
            tableCell.RefreshAvailabilityAsync(_additionalContentModel, availableSongs[idx].levelID);

            tableCell.reuseIdentifier = songTable.reuseIdentifier;
            return(tableCell);
        }