osu/osu.Game.Tournament/Screens/SetupScreen.cs

101 lines
3.0 KiB
C#
Raw Normal View History

2019-09-21 17:10:04 +00:00
// 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.
2019-09-22 19:22:50 +00:00
using System;
using osu.Framework.Allocation;
2019-09-22 19:22:50 +00:00
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics.Sprites;
using osu.Game.Graphics.UserInterface;
using osu.Game.Screens.Edit.Setup.Components.LabelledComponents;
using osu.Game.Tournament.IPC;
2019-09-22 19:22:50 +00:00
using osuTK;
using osuTK.Graphics;
2019-09-21 17:10:04 +00:00
namespace osu.Game.Tournament.Screens
{
public class SetupScreen : TournamentScreen
{
[Resolved]
private MatchIPCInfo ipc { get; set; }
[BackgroundDependencyLoader]
private void load()
{
2019-09-22 19:22:50 +00:00
reload();
}
private void reload()
{
var fileBasedIpc = ipc as FileBasedIPC;
InternalChildren = new Drawable[]
{
new ActionableInfo
{
Label = "Current IPC source",
ButtonText = "Refresh",
Action = () =>
{
fileBasedIpc?.LocateStableStorage();
reload();
},
Value = fileBasedIpc?.Storage?.GetFullPath(string.Empty) ?? "Not found",
Failing = fileBasedIpc?.Storage == null,
Description = "The osu!stable installation which is currently being used as a data source. If a source is not found, make sure you have created an empty ipc.txt in your stable cutting-edge installation, and that it is registered as the default osu! install."
}
};
}
private class ActionableInfo : LabelledComponent
{
private OsuButton button;
public ActionableInfo()
: base(true)
{
}
public string ButtonText
{
set => button.Text = value;
}
public string Value
{
set => valueText.Text = value;
}
public bool Failing
{
set => valueText.Colour = value ? Color4.Red : Color4.White;
}
public Action Action;
private OsuSpriteText valueText;
protected override Drawable CreateComponent() => new Container
{
2019-09-22 19:22:50 +00:00
AutoSizeAxes = Axes.Y,
RelativeSizeAxes = Axes.X,
Children = new Drawable[]
{
valueText = new OsuSpriteText
{
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
},
button = new TriangleButton
{
Anchor = Anchor.CentreRight,
Origin = Anchor.CentreRight,
Size = new Vector2(100, 30),
Action = () => Action?.Invoke()
},
}
};
}
2019-09-21 17:10:04 +00:00
}
}