Example #1
0
        public SeasonPack Load(DirectoryInfo gamedataFolder)
        {
            var levelDataFile = new FileInfo(Path.Combine(gamedataFolder.FullName, "leveldata.xml"));
            var levelData     = serializer.DeserializeFromFile <XmlLevelDataRoot>(levelDataFile);

            var seasonpack = new SeasonPack
            {
                Seasons = levelData.Sets
                          .Select((set, i) =>
                {
                    var season = new Season(set.Name)
                    {
                        Unlocked = set.State.IsUnlocked,
                        Levels   = set.Levels
                                   .Select((l, i) => (level: levelMetaLoader.Load(gamedataFolder, l.Name), index: i))
                                   .ToDictionary(v => v.level.Id, v => v),
                    };

                    return(season, i);
                })
                          .ToDictionary(v => v.season.Id, v => v),
            };

            foreach (var set in levelData.Sets)
            {
                if (set.NextSet is not null)
                {
                    seasonpack.Seasons[set.Name].Season.Unlocks = seasonpack.Seasons[set.NextSet].Season;
                }
            }

            return(seasonpack);
        }
        public Level Load(DirectoryInfo gamedataFolder, string levelId)
        {
            var levelData = levelDataUnifier.UnifyWithGeneric(
                generic: levelDataLoader.LoadGenericData(gamedataFolder),
                level: levelDataLoader.LoadLevelSpecificData(gamedataFolder, levelId));

            var level = converter.Convert <XmlLevelData, Level>(levelData);

            level.Meta = levelMetaLoader.Load(gamedataFolder, levelId);

            return(level);
        }