public static Collection AddSelectedBeatmapsToCollection(this IBeatmapListingModel model, Collection collection) { foreach (var beatmap in model.SelectedBeatmaps) { collection.AddBeatmap(beatmap); } return(collection); }
static Collections GenBulkCollection(Beatmaps maps) { var collections = new Collections(); var collection = new Collection(OsuFileIo.LoadedMaps) { Name = "Bulk" }; foreach (var map in maps) { collection.AddBeatmap(map); } collections.Add(collection); return(collections); }
public static List <Collection> GenerateCollectionsByAccuracy(List <Score> scores, List <int> seperators, string prefix = "") { List <Score> scoresC = new List <Score>(scores); seperators.Sort(); List <Collection> collections = new List <Collection>(); int min = 0; int max = 0; foreach (int seperator in seperators) { min = max; max = seperator; Collection collection = new Collection(prefix + min + " - <" + max); Console.WriteLine(prefix + min + " - <" + max); Console.WriteLine("seperator " + seperator); Console.WriteLine("min " + min); Console.WriteLine("max " + max); foreach (Score score in scores) { if (score.GetAccuracy() >= min && score.GetAccuracy() < max) { collection.AddBeatmap(score.BeatmapMD5); scoresC.Remove(score); } } collections.Add(collection); } if (max <= 100) { Collection collection = new Collection(prefix + max + " - 100"); if (max == 100) { collection.Name = prefix + "100"; } foreach (Score score in scoresC) { collection.AddBeatmap(score.BeatmapMD5); } } return(collections); }
private Collections GetPlayerCollections(string username, string collectionNameSavePattern, ScoreSaveConditions configuration) { _currentUserMissingMapCount = 0; var validScores = GetPlayerScores(username, configuration); Dictionary <string, Beatmaps> collectionsDict = new Dictionary <string, Beatmaps>(); var collections = new Collections(); foreach (var s in validScores) { if (configuration.IsEgibleForSaving(s)) { string collectionName = CreateCollectionName(s, username, collectionNameSavePattern); if (collectionsDict.ContainsKey(collectionName)) { collectionsDict[collectionName].Add(GetBeatmapFromId(s.BeatmapId)); } else { collectionsDict.Add(collectionName, new Beatmaps() { GetBeatmapFromId(s.BeatmapId) }); } } } foreach (var c in collectionsDict) { var collection = new Collection(_mapCacher) { Name = c.Key }; foreach (var beatmap in c.Value) { collection.AddBeatmap(beatmap); } collections.Add(collection); } return(collections); }
public Collections ReadOsdb(string fullFileDir, MapCacher mapCacher) { int fileVersion = -1; DateTime fileDate = DateTime.Now; var collections = new Collections(); OpenFile(fullFileDir, false); _binReader.BaseStream.Seek(0, SeekOrigin.Begin); string versionString = _binReader.ReadString(); //check header if (_versions.ContainsKey(versionString)) { fileVersion = _versions[versionString]; } if (fileVersion == -1) { Error("Unrecognized osdb file version"); } else { _logger?.Log("Starting file load"); fileDate = DateTime.FromOADate(_binReader.ReadDouble()); _logger?.Log(">Date: " + fileDate); string lastEditor = _binReader.ReadString(); _logger?.Log(">LastEditor: " + lastEditor); int numberOfCollections = _binReader.ReadInt32(); _logger?.Log(">Collections: " + numberOfCollections); for (int i = 0; i < numberOfCollections; i++) { var name = _binReader.ReadString(); var numberOfBeatmaps = _binReader.ReadInt32(); _logger?.Log(">Number of maps in collection {0}: {1} named:{2}", i.ToString(), numberOfBeatmaps.ToString(), name); var collection = new Collection(mapCacher) { Name = name, LastEditorUsername = lastEditor }; for (int j = 0; j < numberOfBeatmaps; j++) { var map = new BeatmapExtension(); map.MapId = _binReader.ReadInt32(); if (fileVersion >= 2) { map.MapSetId = _binReader.ReadInt32(); } map.ArtistRoman = _binReader.ReadString(); map.TitleRoman = _binReader.ReadString(); map.DiffName = _binReader.ReadString(); map.Md5 = _binReader.ReadString(); if (fileVersion >= 4) { map.UserComment = _binReader.ReadString(); } if (fileVersion >= 5) { map.PlayMode = (PlayMode)_binReader.ReadByte(); } if (fileVersion >= 6) { map.ModPpStars.Add(map.PlayMode, new Dictionary <int, double>() { { 0, _binReader.ReadDouble() } }); } collection.AddBeatmap(map); } if (fileVersion >= 3) { var numberOfMapHashes = _binReader.ReadInt32(); for (int j = 0; j < numberOfMapHashes; j++) { string hash = _binReader.ReadString(); collection.AddBeatmapByHash(hash); } } collections.Add(collection); } } if (_binReader.ReadString() != "By Piotrekol") { Error("File footer is invalid, with could mean that this file is corrupted. CONTINUE AT YOUR OWN RISK"); } CloseFile(false); collections = IssuseVersionRelevantProcedures(fileVersion, fileDate, collections); return(collections); }
public IEnumerable <Collection> ReadOsdb(string fullFileDir, MapCacher mapCacher) { var fileVersion = -1; var fileDate = DateTime.Now; var collections = new Collections(); using (var fileStream = new FileStream(fullFileDir, FileMode.Open, FileAccess.Read)) { _memStream = new MemoryStream(); fileStream.CopyTo(_memStream); _binReader = new BinaryReader(_memStream); } _binReader.BaseStream.Seek(0, SeekOrigin.Begin); var versionString = _binReader.ReadString(); //check header if (_versions.ContainsKey(versionString)) { fileVersion = _versions[versionString]; } if (fileVersion == -1) { throw new CorruptedFileException($"Unrecognized osdb file version (got: {versionString})"); } else { if (fileVersion >= 7) { using (var archiveReader = GZipArchive.Open(_memStream)) { var memStream = new MemoryStream(); archiveReader.Entries.First().WriteTo(memStream); memStream.Position = 0; _binReader = new BinaryReader(memStream); _binReader.ReadString(); //version string } } _logger?.Log("Starting file load"); fileDate = DateTime.FromOADate(_binReader.ReadDouble()); _logger?.Log(">Date: " + fileDate); var lastEditor = _binReader.ReadString(); _logger?.Log(">LastEditor: " + lastEditor); var numberOfCollections = _binReader.ReadInt32(); _logger?.Log(">Collections: " + numberOfCollections); for (var i = 0; i < numberOfCollections; i++) { var name = _binReader.ReadString(); var onlineId = -1; if (fileVersion >= 7) { onlineId = _binReader.ReadInt32(); } var numberOfBeatmaps = _binReader.ReadInt32(); _logger?.Log(">Number of maps in collection {0}: {1} named:{2}", i.ToString(), numberOfBeatmaps.ToString(), name); var collection = new Collection(mapCacher) { Name = name, LastEditorUsername = lastEditor, OnlineId = onlineId }; for (var j = 0; j < numberOfBeatmaps; j++) { var map = new BeatmapExtension(); map.MapId = _binReader.ReadInt32(); if (fileVersion >= 2) { map.MapSetId = _binReader.ReadInt32(); } if (!isMinimalCollection(versionString)) { map.ArtistRoman = _binReader.ReadString(); map.TitleRoman = _binReader.ReadString(); map.DiffName = _binReader.ReadString(); } map.Md5 = _binReader.ReadString(); if (fileVersion >= 4) { map.UserComment = _binReader.ReadString(); } if (fileVersion >= 8 || (fileVersion >= 5 && IsFullCollection(versionString))) { map.PlayMode = (PlayMode)_binReader.ReadByte(); } if (fileVersion >= 8 || (fileVersion >= 6 && IsFullCollection(versionString))) { map.ModPpStars.Add(map.PlayMode, new StarRating { { 0, _binReader.ReadDouble() } }); } collection.AddBeatmap(map); } if (fileVersion >= 3) { var numberOfMapHashes = _binReader.ReadInt32(); for (var j = 0; j < numberOfMapHashes; j++) { var hash = _binReader.ReadString(); collection.AddBeatmapByHash(hash); } } yield return(collection); } } if (_binReader.ReadString() != "By Piotrekol") { _binReader.Close(); throw new CorruptedFileException("File footer is invalid, this collection might be corrupted."); } _binReader.Close(); }