mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 17:43:05 +08:00
Add tournament switching in the UI
This commit is contained in:
parent
87da6b3270
commit
eda6e1fbdd
@ -1,10 +1,12 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// 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.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Logging;
|
using osu.Framework.Logging;
|
||||||
using osu.Framework.Platform;
|
using osu.Framework.Platform;
|
||||||
using osu.Game.IO;
|
using osu.Game.IO;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Collections.Generic;
|
||||||
using osu.Game.Tournament.Configuration;
|
using osu.Game.Tournament.Configuration;
|
||||||
|
|
||||||
namespace osu.Game.Tournament.IO
|
namespace osu.Game.Tournament.IO
|
||||||
@ -13,12 +15,15 @@ namespace osu.Game.Tournament.IO
|
|||||||
{
|
{
|
||||||
private const string default_tournament = "default";
|
private const string default_tournament = "default";
|
||||||
private readonly Storage storage;
|
private readonly Storage storage;
|
||||||
|
private readonly Storage allTournaments;
|
||||||
private readonly TournamentStorageManager storageConfig;
|
private readonly TournamentStorageManager storageConfig;
|
||||||
|
public readonly Bindable<string> CurrentTournament;
|
||||||
|
|
||||||
public TournamentStorage(Storage storage)
|
public TournamentStorage(Storage storage)
|
||||||
: base(storage.GetStorageForDirectory("tournaments"), string.Empty)
|
: base(storage.GetStorageForDirectory("tournaments"), string.Empty)
|
||||||
{
|
{
|
||||||
this.storage = storage;
|
this.storage = storage;
|
||||||
|
allTournaments = UnderlyingStorage;
|
||||||
|
|
||||||
storageConfig = new TournamentStorageManager(storage);
|
storageConfig = new TournamentStorageManager(storage);
|
||||||
|
|
||||||
@ -29,9 +34,22 @@ namespace osu.Game.Tournament.IO
|
|||||||
else
|
else
|
||||||
Migrate(UnderlyingStorage.GetStorageForDirectory(default_tournament));
|
Migrate(UnderlyingStorage.GetStorageForDirectory(default_tournament));
|
||||||
|
|
||||||
|
CurrentTournament = new Bindable<string>(storageConfig.Get<string>(StorageConfig.CurrentTournament));
|
||||||
Logger.Log("Using tournament storage: " + GetFullPath(string.Empty));
|
Logger.Log("Using tournament storage: " + GetFullPath(string.Empty));
|
||||||
|
|
||||||
|
CurrentTournament.BindValueChanged(updateTournament, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateTournament(ValueChangedEvent<string> newTournament)
|
||||||
|
{
|
||||||
|
ChangeTargetStorage(allTournaments.GetStorageForDirectory(newTournament.NewValue));
|
||||||
|
Logger.Log("Changing tournament storage: " + GetFullPath(string.Empty));
|
||||||
|
storageConfig.Set(StorageConfig.CurrentTournament, newTournament.NewValue);
|
||||||
|
storageConfig.Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<string> ListTournaments() => allTournaments.GetDirectories(string.Empty);
|
||||||
|
|
||||||
public override void Migrate(Storage newStorage)
|
public override void Migrate(Storage newStorage)
|
||||||
{
|
{
|
||||||
// this migration only happens once on moving to the per-tournament storage system.
|
// this migration only happens once on moving to the per-tournament storage system.
|
||||||
|
@ -9,8 +9,10 @@ using osu.Framework.Bindables;
|
|||||||
using osu.Framework.Configuration;
|
using osu.Framework.Configuration;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Framework.Platform;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Graphics.UserInterfaceV2;
|
using osu.Game.Graphics.UserInterfaceV2;
|
||||||
|
using osu.Game.Tournament.IO;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
@ -40,6 +42,9 @@ namespace osu.Game.Tournament.Screens
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
private RulesetStore rulesets { get; set; }
|
private RulesetStore rulesets { get; set; }
|
||||||
|
|
||||||
|
[Resolved]
|
||||||
|
private Storage storage { get; set; }
|
||||||
|
|
||||||
[Resolved(canBeNull: true)]
|
[Resolved(canBeNull: true)]
|
||||||
private TournamentSceneManager sceneManager { get; set; }
|
private TournamentSceneManager sceneManager { get; set; }
|
||||||
|
|
||||||
@ -70,6 +75,7 @@ namespace osu.Game.Tournament.Screens
|
|||||||
private void reload()
|
private void reload()
|
||||||
{
|
{
|
||||||
var fileBasedIpc = ipc as FileBasedIPC;
|
var fileBasedIpc = ipc as FileBasedIPC;
|
||||||
|
var tourneyStorage = storage as TournamentStorage;
|
||||||
fillFlow.Children = new Drawable[]
|
fillFlow.Children = new Drawable[]
|
||||||
{
|
{
|
||||||
new ActionableInfo
|
new ActionableInfo
|
||||||
@ -111,6 +117,13 @@ namespace osu.Game.Tournament.Screens
|
|||||||
Items = rulesets.AvailableRulesets,
|
Items = rulesets.AvailableRulesets,
|
||||||
Current = LadderInfo.Ruleset,
|
Current = LadderInfo.Ruleset,
|
||||||
},
|
},
|
||||||
|
new LabelledDropdown<string>
|
||||||
|
{
|
||||||
|
Label = "Current tournament",
|
||||||
|
Description = "Changes the background videos and bracket to match the selected tournament. This requires a restart after selecting to apply changes.",
|
||||||
|
Items = tourneyStorage?.ListTournaments(),
|
||||||
|
Current = tourneyStorage?.CurrentTournament,
|
||||||
|
},
|
||||||
resolution = new ResolutionSelector
|
resolution = new ResolutionSelector
|
||||||
{
|
{
|
||||||
Label = "Stream area resolution",
|
Label = "Stream area resolution",
|
||||||
|
Loading…
Reference in New Issue
Block a user