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); }