// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using osu.Framework.Allocation; 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; using osuTK; using osuTK.Graphics; namespace osu.Game.Tournament.Screens { public class SetupScreen : TournamentScreen { [Resolved] private MatchIPCInfo ipc { get; set; } [BackgroundDependencyLoader] private void load() { 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 { 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() }, } }; } } }