1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-12 11:42:54 +08:00

Introduce new storage class and manager

This commit is contained in:
Shivam 2020-06-08 00:46:40 +02:00
parent 73467410ab
commit 17cd9569ed
4 changed files with 70 additions and 10 deletions

View File

@ -27,9 +27,9 @@ namespace osu.Game.Tournament.Components
}
[BackgroundDependencyLoader]
private void load(TournamentStorage storage)
private void load(NewTournamentStorage storage)
{
var stream = storage.GetStream($@"videos/{filename}");
var stream = storage.VideoStorage.GetStream($@"{filename}");
if (stream != null)
{

View File

@ -19,6 +19,8 @@ using osu.Framework.Platform;
using osu.Game.Beatmaps;
using osu.Game.Graphics;
using osu.Game.Online.API.Requests;
using osu.Framework.Logging;
using osu.Game.Tournament.Configuration;
using osu.Game.Tournament.IPC;
using osu.Game.Tournament.Models;
using osu.Game.Users;
@ -37,7 +39,7 @@ namespace osu.Game.Tournament
private Storage storage;
private TournamentStorage tournamentStorage;
private NewTournamentStorage newTournamentStorage;
private DependencyContainer dependencies;
@ -52,15 +54,15 @@ namespace osu.Game.Tournament
}
[BackgroundDependencyLoader]
private void load(Storage storage, FrameworkConfigManager frameworkConfig)
private void load(FrameworkConfigManager frameworkConfig)
{
Resources.AddStore(new DllResourceStore(typeof(TournamentGameBase).Assembly));
dependencies.CacheAs(tournamentStorage = new TournamentStorage(storage));
dependencies.CacheAs(newTournamentStorage = new NewTournamentStorage(Host));
Textures.AddStore(new TextureLoaderStore(tournamentStorage));
Textures.AddStore(new TextureLoaderStore(newTournamentStorage.VideoStorage));
this.storage = storage;
this.storage = newTournamentStorage;
windowSize = frameworkConfig.GetBindable<Size>(FrameworkSetting.WindowedSize);
windowSize.BindValueChanged(size => ScheduleAfterChildren(() =>

View File

@ -2,18 +2,46 @@
// See the LICENCE file in the repository root for full licence text.
using osu.Framework.IO.Stores;
using osu.Framework.Logging;
using osu.Framework.Platform;
using osu.Game.IO;
using osu.Game.Tournament.Configuration;
namespace osu.Game.Tournament
{
internal class TournamentStorage : NamespacedResourceStore<byte[]>
internal class TournamentVideoStorage : NamespacedResourceStore<byte[]>
{
public TournamentStorage(Storage storage)
: base(new StorageBackedResourceStore(storage), "tournament")
public TournamentVideoStorage(Storage storage)
: base(new StorageBackedResourceStore(storage), "videos")
{
AddExtension("m4v");
AddExtension("avi");
AddExtension("mp4");
}
}
internal class NewTournamentStorage : WrappedStorage
{
private readonly GameHost host;
private readonly TournamentStorageManager storageConfig;
public readonly TournamentVideoStorage VideoStorage;
public NewTournamentStorage(GameHost host)
: base(host.Storage, string.Empty)
{
this.host = host;
storageConfig = new TournamentStorageManager(host.Storage);
var customTournamentPath = storageConfig.Get<string>(StorageConfig.CurrentTournament);
if (!string.IsNullOrEmpty(customTournamentPath))
{
ChangeTargetStorage(UnderlyingStorage.GetStorageForDirectory("tournaments/" + customTournamentPath));
} else {
ChangeTargetStorage(UnderlyingStorage.GetStorageForDirectory("tournaments/default"));
}
VideoStorage = new TournamentVideoStorage(this);
Logger.Log("Using tournament storage: " + GetFullPath(string.Empty));
}
}
}

View File

@ -0,0 +1,30 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using osu.Framework.Configuration;
using osu.Framework.Platform;
namespace osu.Game.Tournament.Configuration
{
public class TournamentStorageManager : IniConfigManager<StorageConfig>
{
protected override string Filename => "tournament.ini";
public TournamentStorageManager(Storage storage)
: base(storage)
{
}
protected override void InitialiseDefaults()
{
base.InitialiseDefaults();
Set(StorageConfig.CurrentTournament, string.Empty);
}
}
public enum StorageConfig
{
CurrentTournament,
}
}