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 ;
2019-09-21 19:15:02 +00:00
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 ;
2019-09-21 19:15:02 +00:00
using osu.Game.Tournament.IPC ;
2019-09-22 19:22:50 +00:00
using osuTK ;
using osuTK.Graphics ;
2019-09-21 19:15:02 +00:00
2019-09-21 17:10:04 +00:00
namespace osu.Game.Tournament.Screens
{
public class SetupScreen : TournamentScreen
{
2019-09-21 19:15:02 +00:00
[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-21 19:15:02 +00:00
{
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 19:15:02 +00:00
}
2019-09-21 17:10:04 +00:00
}
}