public CollectionEditor(ICollectionEditor collectionEditor, ICollectionNameValidator collectionNameValidator, ICollectionAddRenameForm collectionAddRenameForm, MapCacher mapCacher) { _collectionEditor = collectionEditor; _collectionNameValidator = collectionNameValidator; _collectionAddRenameForm = collectionAddRenameForm; _mapCacher = mapCacher; }
public UserTopGenerator(string osuApiKey, MapCacher mapCacher) { if (mapCacher == null) { throw new ArgumentNullException(nameof(mapCacher)); } if (string.IsNullOrEmpty(osuApiKey)) { throw new ArgumentException("osuApiKey is required."); } _osuApi = new OsuApi(osuApiKey); _mapCacher = mapCacher; _collectionManager = new CollectionsManager(_mapCacher.Beatmaps); }
public void SetLoadedMaps(MapCacher instance) { if (instance == null) { throw new BeatmapCacherNotInitalizedException(); } if (LoadedMaps != null) { LoadedMaps.BeatmapsModified -= LoadedMaps_BeatmapsModified; } LoadedMaps = instance; LoadedMaps.BeatmapsModified += LoadedMaps_BeatmapsModified; ReprocessBeatmaps(); }
public Collections LoadCollections(string fullFileDir, MapCacher mapCacher) { openFile(fullFileDir); LastfileDate = readInt32(); int numOfCollections = readInt32(); logger?.Log("Reading " + numOfCollections + " Collections"); Collections loadedCollections = new Collections(); try { for (int i = 1; i <= numOfCollections; i++) { var collectionName = readString(); var numberOfDiffs = readInt32(); var collection = new Collection(mapCacher) { Name = collectionName }; var j = 0; for (j = 0; j < numberOfDiffs; j++)//j=1 <= { var md5 = readString(); collection.AddBeatmapByHash(md5); } loadedCollections.Add(collection); logger?.Log(">Number of maps in collection {0}: {1} named:{2}", i.ToString(), numberOfDiffs.ToString(), collection.Name); } } catch (System.IO.IOException) { throw new System.IO.IOException("This isn't valid osu! collection!"); } closeFile(); return(loadedCollections); }
public CollectionLoader(MapCacher mapCacher) { _mapCacher = mapCacher; }
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 WebCollection(int onlineId, MapCacher instance, bool loaded = false) : base(instance) { OnlineId = onlineId; Loaded = loaded; }
public Collection(MapCacher instance) { SetLoadedMaps(instance); }
public CollectionsApiGenerator(MapCacher loadedBeatmaps) { _loadedBeatmaps = loadedBeatmaps; }
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(); }