コード例 #1
0
        public static MusicModConfig FromCSV(string modPath, List <MusicModCSVConfig> csvEntries)
        {
            var output = new MusicModConfig()
            {
                Name   = Path.GetFileName(modPath),
                Author = "CSV",
                Games  = new List <Game>()
            };

            if (csvEntries != null)
            {
                foreach (var csvEntry in csvEntries)
                {
                    var gameId = csvEntry.GameId;

                    var game = output.Games.FirstOrDefault(p => p.Id == gameId);
                    if (game == null)
                    {
                        game = new Game()
                        {
                            Id       = csvEntry.GameId,
                            SeriesId = csvEntry.GameSeriesId,
                            Title    = new Dictionary <string, string>(),
                            Songs    = new List <Song>()
                        };

                        foreach (var validLocale in LocaleHelper.ValidLocales)
                        {
                            var localePascal = LocaleHelper.GetPascalCaseLocale(validLocale);
                            var gameTitle    = GetPropValue <string>(csvEntry, $"GameTitle{localePascal}");
                            if (!string.IsNullOrEmpty(gameTitle))
                            {
                                game.Title.Add(validLocale, gameTitle);
                            }
                        }
                        output.Games.Add(game);
                    }

                    var newSong = new Song()
                    {
                        FileName   = csvEntry.FileName,
                        Id         = csvEntry.SongId,
                        RecordType = csvEntry.SongRecordType,
                        Playlists  = new List <PlaylistInfo>(),
                        Author     = new Dictionary <string, string>(),
                        Copyright  = new Dictionary <string, string>(),
                        Title      = new Dictionary <string, string>()
                    };

                    foreach (var validLocale in LocaleHelper.ValidLocales)
                    {
                        var localePascal = LocaleHelper.GetPascalCaseLocale(validLocale);

                        var title = GetPropValue <string>(csvEntry, $"SongTitle{localePascal}");
                        if (!string.IsNullOrEmpty(title))
                        {
                            newSong.Title.Add(validLocale, title);
                        }

                        var author = GetPropValue <string>(csvEntry, $"SongAuthor{localePascal}");
                        if (!string.IsNullOrEmpty(author))
                        {
                            newSong.Author.Add(validLocale, author);
                        }

                        var copyright = GetPropValue <string>(csvEntry, $"SongCopyright{localePascal}");
                        if (!string.IsNullOrEmpty(copyright))
                        {
                            newSong.Copyright.Add(validLocale, copyright);
                        }
                    }

                    for (int i = 1; i <= 9; i++)
                    {
                        var playlistId = GetPropValue <string>(csvEntry, $"PlaylistId{i}");
                        if (!string.IsNullOrEmpty(playlistId))
                        {
                            newSong.Playlists.Add(new PlaylistInfo()
                            {
                                Id = playlistId
                            });
                        }
                    }

                    game.Songs.Add(newSong);
                }
            }

            return(output);
        }