mirror of
https://github.com/ppy/osu.git
synced 2025-01-15 09:22:54 +08:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
8b336156f0
2
.gitignore
vendored
2
.gitignore
vendored
@ -11,7 +11,7 @@
|
|||||||
*.userprefs
|
*.userprefs
|
||||||
|
|
||||||
# Build results
|
# Build results
|
||||||
[Dd]ebug/
|
bin/[Dd]ebug/
|
||||||
[Dd]ebugPublic/
|
[Dd]ebugPublic/
|
||||||
[Rr]elease/
|
[Rr]elease/
|
||||||
[Rr]eleases/
|
[Rr]eleases/
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit b64322a56d3d55e8e5d1e6c3328024923cecd4d3
|
Subproject commit 7cad7cf48b2ae9f16cac503d46bd0ea801e7561f
|
@ -25,8 +25,7 @@ namespace osu.Desktop.Tests
|
|||||||
Ruleset.Register(new ManiaRuleset());
|
Ruleset.Register(new ManiaRuleset());
|
||||||
Ruleset.Register(new CatchRuleset());
|
Ruleset.Register(new CatchRuleset());
|
||||||
|
|
||||||
host.Add(new Benchmark());
|
host.Run(new Benchmark());
|
||||||
host.Run();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,10 +27,9 @@ namespace osu.Desktop.VisualTests
|
|||||||
Ruleset.Register(new CatchRuleset());
|
Ruleset.Register(new CatchRuleset());
|
||||||
|
|
||||||
if (benchmark)
|
if (benchmark)
|
||||||
host.Add(new Benchmark());
|
host.Run(new Benchmark());
|
||||||
else
|
else
|
||||||
host.Add(new VisualTestGame());
|
host.Run(new VisualTestGame());
|
||||||
host.Run();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ using OpenTK;
|
|||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Screens.Play;
|
using osu.Game.Screens.Play;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
@ -158,7 +158,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
|
|
||||||
AddButton(@"Alter stars", delegate
|
AddButton(@"Alter stars", delegate
|
||||||
{
|
{
|
||||||
stars.Count = RNG.NextSingle() * (stars.MaxStars + 1);
|
stars.Count = RNG.NextSingle() * (stars.StarCount + 1);
|
||||||
starsLabel.Text = stars.Count.ToString("0.00");
|
starsLabel.Text = stars.Count.ToString("0.00");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ namespace osu.Desktop
|
|||||||
// this method will only be executed if e.Effect in dragEnter gets set to something other that None.
|
// this method will only be executed if e.Effect in dragEnter gets set to something other that None.
|
||||||
var dropData = e.Data.GetData(DataFormats.FileDrop) as object[];
|
var dropData = e.Data.GetData(DataFormats.FileDrop) as object[];
|
||||||
var filePaths = dropData.Select(f => f.ToString()).ToArray();
|
var filePaths = dropData.Select(f => f.ToString()).ToArray();
|
||||||
ImportBeatmaps(filePaths);
|
ImportBeatmapsAsync(filePaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dragEnter(DragEventArgs e)
|
private void dragEnter(DragEventArgs e)
|
||||||
|
@ -46,8 +46,7 @@ namespace osu.Desktop
|
|||||||
Ruleset.Register(new ManiaRuleset());
|
Ruleset.Register(new ManiaRuleset());
|
||||||
Ruleset.Register(new CatchRuleset());
|
Ruleset.Register(new CatchRuleset());
|
||||||
|
|
||||||
host.Add(new OsuGameDesktop(args));
|
host.Run(new OsuGameDesktop(args));
|
||||||
host.Run();
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ namespace osu.Game.Modes.Catch
|
|||||||
|
|
||||||
protected override HitObjectConverter<CatchBaseHit> Converter => new CatchConverter();
|
protected override HitObjectConverter<CatchBaseHit> Converter => new CatchConverter();
|
||||||
|
|
||||||
protected override double ComputeDifficulty(Dictionary<String, String> categoryDifficulty)
|
protected override double CalculateInternal(Dictionary<String, String> categoryDifficulty)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Textures;
|
using osu.Framework.Graphics.Textures;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch.Objects.Drawable
|
namespace osu.Game.Modes.Catch.Objects.Drawable
|
||||||
|
@ -22,7 +22,7 @@ namespace osu.Game.Modes.Mania
|
|||||||
|
|
||||||
protected override HitObjectConverter<ManiaBaseHit> Converter => new ManiaConverter(columns);
|
protected override HitObjectConverter<ManiaBaseHit> Converter => new ManiaConverter(columns);
|
||||||
|
|
||||||
protected override double ComputeDifficulty(Dictionary<String, String> categoryDifficulty)
|
protected override double CalculateInternal(Dictionary<String, String> categoryDifficulty)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Textures;
|
using osu.Framework.Graphics.Textures;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Modes.Taiko.UI;
|
using osu.Game.Modes.Taiko.UI;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ using OpenTK.Graphics;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Modes.Osu.Objects.Drawables.Connections
|
namespace osu.Game.Modes.Osu.Objects.Drawables.Connections
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
using osu.Game.Modes.Objects.Drawables;
|
||||||
using osu.Game.Modes.Osu.Objects.Drawables.Pieces;
|
using osu.Game.Modes.Osu.Objects.Drawables.Pieces;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
@ -7,7 +7,7 @@ using osu.Framework.Audio;
|
|||||||
using osu.Framework.Audio.Sample;
|
using osu.Framework.Audio.Sample;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Beatmaps.Samples;
|
using osu.Game.Beatmaps.Samples;
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
using osu.Game.Modes.Objects.Drawables;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
using osu.Game.Modes.Objects.Drawables;
|
||||||
using osu.Game.Modes.Osu.Objects.Drawables.Pieces;
|
using osu.Game.Modes.Osu.Objects.Drawables.Pieces;
|
||||||
|
@ -5,7 +5,7 @@ using osu.Framework.Extensions;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
using osu.Game.Modes.Objects.Drawables;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Colour;
|
using osu.Framework.Graphics.Colour;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
@ -5,7 +5,6 @@ using System.Collections.Generic;
|
|||||||
using OpenTK;
|
using OpenTK;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using System.Diagnostics;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Osu.Objects
|
namespace osu.Game.Modes.Osu.Objects
|
||||||
{
|
{
|
||||||
@ -29,26 +28,21 @@ namespace osu.Game.Modes.Osu.Objects
|
|||||||
case CurveTypes.Linear:
|
case CurveTypes.Linear:
|
||||||
return subControlPoints;
|
return subControlPoints;
|
||||||
case CurveTypes.PerfectCurve:
|
case CurveTypes.PerfectCurve:
|
||||||
// If we have a different amount than 3 control points, use bezier for perfect curves.
|
//we can only use CircularArc iff we have exactly three control points and no dissection.
|
||||||
if (ControlPoints.Count != 3)
|
if (ControlPoints.Count != 3 || subControlPoints.Count != 3)
|
||||||
return new BezierApproximator(subControlPoints).CreateBezier();
|
break;
|
||||||
else
|
|
||||||
{
|
|
||||||
Debug.Assert(subControlPoints.Count == 3);
|
|
||||||
|
|
||||||
// Here we have exactly 3 control points. Attempt to fit a circular arc.
|
// Here we have exactly 3 control points. Attempt to fit a circular arc.
|
||||||
List<Vector2> subpath = new CircularArcApproximator(subControlPoints[0], subControlPoints[1], subControlPoints[2]).CreateArc();
|
List<Vector2> subpath = new CircularArcApproximator(subControlPoints[0], subControlPoints[1], subControlPoints[2]).CreateArc();
|
||||||
|
|
||||||
if (subpath.Count == 0)
|
// If for some reason a circular arc could not be fit to the 3 given points, fall back to a numerically stable bezier approximation.
|
||||||
// For some reason a circular arc could not be fit to the 3 given points. Fall back
|
if (subpath.Count == 0)
|
||||||
// to a numerically stable bezier approximation.
|
break;
|
||||||
subpath = new BezierApproximator(subControlPoints).CreateBezier();
|
|
||||||
|
|
||||||
return subpath;
|
return subpath;
|
||||||
}
|
|
||||||
default:
|
|
||||||
return new BezierApproximator(subControlPoints).CreateBezier();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return new BezierApproximator(subControlPoints).CreateBezier();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void calculatePath()
|
private void calculatePath()
|
||||||
@ -181,7 +175,7 @@ namespace osu.Game.Modes.Osu.Objects
|
|||||||
path.Clear();
|
path.Clear();
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (; i < calculatedPath.Count && cumulativeLength[i] < d0; ++i);
|
for (; i < calculatedPath.Count && cumulativeLength[i] < d0; ++i) ;
|
||||||
|
|
||||||
path.Add(interpolateVertices(i, d0) + Offset);
|
path.Add(interpolateVertices(i, d0) + Offset);
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ namespace osu.Game.Modes.Osu
|
|||||||
((Slider)h).Curve.Calculate();
|
((Slider)h).Curve.Calculate();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override double ComputeDifficulty(Dictionary<String, String> categoryDifficulty)
|
protected override double CalculateInternal(Dictionary<String, String> categoryDifficulty)
|
||||||
{
|
{
|
||||||
// Fill our custom DifficultyHitObject class, that carries additional information
|
// Fill our custom DifficultyHitObject class, that carries additional information
|
||||||
DifficultyHitObjects.Clear();
|
DifficultyHitObjects.Clear();
|
||||||
|
@ -5,7 +5,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Textures;
|
using osu.Framework.Graphics.Textures;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
|
||||||
namespace osu.Game.Modes.Taiko.Objects.Drawable
|
namespace osu.Game.Modes.Taiko.Objects.Drawable
|
||||||
|
@ -19,7 +19,7 @@ namespace osu.Game.Modes.Taiko
|
|||||||
|
|
||||||
protected override HitObjectConverter<TaikoBaseHit> Converter => new TaikoConverter();
|
protected override HitObjectConverter<TaikoBaseHit> Converter => new TaikoConverter();
|
||||||
|
|
||||||
protected override double ComputeDifficulty(Dictionary<String, String> categoryDifficulty)
|
protected override double CalculateInternal(Dictionary<String, String> categoryDifficulty)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Modes.UI;
|
using osu.Game.Modes.UI;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Desktop.Platform;
|
using osu.Framework.Desktop.Platform;
|
||||||
using osu.Framework.Platform;
|
using osu.Framework.Platform;
|
||||||
@ -59,14 +60,14 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
if (!importer.ImportAsync(osz_path).Wait(1000))
|
if (!importer.ImportAsync(osz_path).Wait(1000))
|
||||||
Assert.Fail(@"IPC took too long to send");
|
Assert.Fail(@"IPC took too long to send");
|
||||||
|
|
||||||
ensureLoaded(osu, 10000);
|
ensureLoaded(osu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private OsuGameBase loadOsu(GameHost host)
|
private OsuGameBase loadOsu(GameHost host)
|
||||||
{
|
{
|
||||||
var osu = new OsuGameBase();
|
var osu = new OsuGameBase();
|
||||||
host.Add(osu);
|
Task.Run(() => host.Run(osu));
|
||||||
|
|
||||||
while (!osu.IsLoaded)
|
while (!osu.IsLoaded)
|
||||||
Thread.Sleep(1);
|
Thread.Sleep(1);
|
||||||
@ -77,23 +78,23 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
return osu;
|
return osu;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ensureLoaded(OsuGameBase osu, int timeout = 100)
|
private void ensureLoaded(OsuGameBase osu, int timeout = 10000)
|
||||||
{
|
{
|
||||||
IEnumerable<BeatmapSetInfo> resultSets = null;
|
IEnumerable<BeatmapSetInfo> resultSets = null;
|
||||||
|
|
||||||
Action waitAction = () =>
|
Action waitAction = () =>
|
||||||
{
|
{
|
||||||
while ((resultSets = osu.Dependencies.Get<BeatmapDatabase>()
|
while ((resultSets = osu.Dependencies.Get<BeatmapDatabase>()
|
||||||
.Query<BeatmapSetInfo>().Where(s => s.OnlineBeatmapSetID == 241526)).Count() != 1)
|
.Query<BeatmapSetInfo>().Where(s => s.OnlineBeatmapSetID == 241526)).Count() == 0)
|
||||||
Thread.Sleep(1);
|
Thread.Sleep(50);
|
||||||
};
|
};
|
||||||
|
|
||||||
Assert.IsTrue(waitAction.BeginInvoke(null, null).AsyncWaitHandle.WaitOne(timeout),
|
Assert.IsTrue(waitAction.BeginInvoke(null, null).AsyncWaitHandle.WaitOne(timeout),
|
||||||
@"BeatmapSet did not import to the database");
|
$@"BeatmapSet did not import to the database in allocated time.");
|
||||||
|
|
||||||
//ensure we were stored to beatmap database backing...
|
//ensure we were stored to beatmap database backing...
|
||||||
|
|
||||||
Assert.IsTrue(resultSets.Count() == 1);
|
Assert.IsTrue(resultSets.Count() == 1, $@"Incorrect result count found ({resultSets.Count()} but should be 1).");
|
||||||
|
|
||||||
IEnumerable<BeatmapInfo> resultBeatmaps = null;
|
IEnumerable<BeatmapInfo> resultBeatmaps = null;
|
||||||
|
|
||||||
@ -102,16 +103,17 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
{
|
{
|
||||||
while ((resultBeatmaps = osu.Dependencies.Get<BeatmapDatabase>()
|
while ((resultBeatmaps = osu.Dependencies.Get<BeatmapDatabase>()
|
||||||
.Query<BeatmapInfo>().Where(s => s.OnlineBeatmapSetID == 241526 && s.BaseDifficultyID > 0)).Count() != 12)
|
.Query<BeatmapInfo>().Where(s => s.OnlineBeatmapSetID == 241526 && s.BaseDifficultyID > 0)).Count() != 12)
|
||||||
Thread.Sleep(1);
|
Thread.Sleep(50);
|
||||||
};
|
};
|
||||||
|
|
||||||
Assert.IsTrue(waitAction.BeginInvoke(null, null).AsyncWaitHandle.WaitOne(timeout),
|
Assert.IsTrue(waitAction.BeginInvoke(null, null).AsyncWaitHandle.WaitOne(timeout),
|
||||||
@"Beatmaps did not import to the database");
|
@"Beatmaps did not import to the database in allocated time");
|
||||||
|
|
||||||
//fetch children and check we can load from the post-storage path...
|
//fetch children and check we can load from the post-storage path...
|
||||||
var set = osu.Dependencies.Get<BeatmapDatabase>().GetChildren(resultSets.First());
|
var set = osu.Dependencies.Get<BeatmapDatabase>().GetChildren(resultSets.First());
|
||||||
|
|
||||||
Assert.IsTrue(set.Beatmaps.Count == resultBeatmaps.Count());
|
Assert.IsTrue(set.Beatmaps.Count == resultBeatmaps.Count(),
|
||||||
|
$@"Incorrect database beatmap count post-import ({resultBeatmaps.Count()} but should be {set.Beatmaps.Count}).");
|
||||||
|
|
||||||
foreach (BeatmapInfo b in resultBeatmaps)
|
foreach (BeatmapInfo b in resultBeatmaps)
|
||||||
Assert.IsTrue(set.Beatmaps.Any(c => c.OnlineBeatmapID == b.OnlineBeatmapID));
|
Assert.IsTrue(set.Beatmaps.Any(c => c.OnlineBeatmapID == b.OnlineBeatmapID));
|
||||||
|
@ -7,6 +7,7 @@ using OpenTK.Graphics;
|
|||||||
using osu.Game.Beatmaps.Timing;
|
using osu.Game.Beatmaps.Timing;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
using osu.Game.Modes.Objects;
|
using osu.Game.Modes.Objects;
|
||||||
|
using osu.Game.Modes;
|
||||||
|
|
||||||
namespace osu.Game.Beatmaps
|
namespace osu.Game.Beatmaps
|
||||||
{
|
{
|
||||||
@ -57,5 +58,7 @@ namespace osu.Game.Beatmaps
|
|||||||
|
|
||||||
return timingPoint ?? ControlPoint.Default;
|
return timingPoint ?? ControlPoint.Default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double CalculateStarDifficulty() => Ruleset.GetRuleset(BeatmapInfo.Mode).CreateDifficultyCalculator(this).Calculate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ namespace osu.Game.Beatmaps
|
|||||||
|
|
||||||
protected double TimeRate = 1;
|
protected double TimeRate = 1;
|
||||||
|
|
||||||
protected abstract double ComputeDifficulty(Dictionary<String, String> categoryDifficulty);
|
protected abstract double CalculateInternal(Dictionary<String, String> categoryDifficulty);
|
||||||
|
|
||||||
private void loadTiming()
|
private void loadTiming()
|
||||||
{
|
{
|
||||||
@ -23,10 +23,10 @@ namespace osu.Game.Beatmaps
|
|||||||
TimeRate = audioRate / 100.0;
|
TimeRate = audioRate / 100.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double GetDifficulty(Dictionary<string, string> categoryDifficulty = null)
|
public double Calculate(Dictionary<string, string> categoryDifficulty = null)
|
||||||
{
|
{
|
||||||
loadTiming();
|
loadTiming();
|
||||||
double difficulty = ComputeDifficulty(categoryDifficulty);
|
double difficulty = CalculateInternal(categoryDifficulty);
|
||||||
return difficulty;
|
return difficulty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,16 +59,21 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public BeatmapGroup(WorkingBeatmap beatmap)
|
public BeatmapGroup(BeatmapSetInfo beatmapSet, BeatmapDatabase database)
|
||||||
{
|
{
|
||||||
|
BeatmapSet = beatmapSet;
|
||||||
|
WorkingBeatmap beatmap = database.GetWorkingBeatmap(BeatmapSet.Beatmaps.FirstOrDefault());
|
||||||
|
foreach (var b in BeatmapSet.Beatmaps)
|
||||||
|
b.StarDifficulty = (float)database.GetWorkingBeatmap(b).Beatmap.CalculateStarDifficulty();
|
||||||
|
|
||||||
Header = new BeatmapSetHeader(beatmap)
|
Header = new BeatmapSetHeader(beatmap)
|
||||||
{
|
{
|
||||||
GainedSelection = headerGainedSelection,
|
GainedSelection = headerGainedSelection,
|
||||||
RelativeSizeAxes = Axes.X,
|
RelativeSizeAxes = Axes.X,
|
||||||
};
|
};
|
||||||
|
|
||||||
BeatmapSet = beatmap.BeatmapSetInfo;
|
BeatmapSet.Beatmaps = BeatmapSet.Beatmaps.OrderBy(b => b.StarDifficulty).ToList();
|
||||||
BeatmapPanels = beatmap.BeatmapSetInfo.Beatmaps.Select(b => new BeatmapPanel(b)
|
BeatmapPanels = BeatmapSet.Beatmaps.Select(b => new BeatmapPanel(b)
|
||||||
{
|
{
|
||||||
Alpha = 0,
|
Alpha = 0,
|
||||||
GainedSelection = panelGainedSelection,
|
GainedSelection = panelGainedSelection,
|
||||||
|
@ -26,6 +26,7 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
public Action<BeatmapPanel> GainedSelection;
|
public Action<BeatmapPanel> GainedSelection;
|
||||||
public Action<BeatmapPanel> StartRequested;
|
public Action<BeatmapPanel> StartRequested;
|
||||||
private Triangles triangles;
|
private Triangles triangles;
|
||||||
|
private StarCounter starCounter;
|
||||||
|
|
||||||
protected override void Selected()
|
protected override void Selected()
|
||||||
{
|
{
|
||||||
@ -56,6 +57,14 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
return base.OnClick(state);
|
return base.OnClick(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void ApplyState(PanelSelectedState last = PanelSelectedState.Hidden)
|
||||||
|
{
|
||||||
|
base.ApplyState(last);
|
||||||
|
|
||||||
|
if (last == PanelSelectedState.Hidden && State != last)
|
||||||
|
starCounter.ReplayAnimation();
|
||||||
|
}
|
||||||
|
|
||||||
public BeatmapPanel(BeatmapInfo beatmap)
|
public BeatmapPanel(BeatmapInfo beatmap)
|
||||||
{
|
{
|
||||||
Beatmap = beatmap;
|
Beatmap = beatmap;
|
||||||
@ -92,7 +101,6 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
new FlowContainer
|
new FlowContainer
|
||||||
{
|
{
|
||||||
Padding = new MarginPadding { Left = 5 },
|
Padding = new MarginPadding { Left = 5 },
|
||||||
Spacing = new Vector2(0, 5),
|
|
||||||
Direction = FlowDirections.Vertical,
|
Direction = FlowDirections.Vertical,
|
||||||
AutoSizeAxes = Axes.Both,
|
AutoSizeAxes = Axes.Both,
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
@ -130,7 +138,11 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new StarCounter { Count = beatmap.StarDifficulty, StarSize = 8 }
|
starCounter = new StarCounter
|
||||||
|
{
|
||||||
|
Count = beatmap.StarDifficulty,
|
||||||
|
Scale = new Vector2(0.8f),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
using osu.Framework;
|
using osu.Framework;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
@ -50,10 +50,10 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
applyState();
|
ApplyState();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyState()
|
protected virtual void ApplyState(PanelSelectedState last = PanelSelectedState.Hidden)
|
||||||
{
|
{
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
@ -81,9 +81,10 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (state == value) return;
|
if (state == value) return;
|
||||||
state = value;
|
|
||||||
|
|
||||||
applyState();
|
var last = state;
|
||||||
|
state = value;
|
||||||
|
ApplyState(last);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,10 +119,6 @@ namespace osu.Game.Database
|
|||||||
using (var reader = ArchiveReader.GetReader(storage, path))
|
using (var reader = ArchiveReader.GetReader(storage, path))
|
||||||
metadata = reader.ReadMetadata();
|
metadata = reader.ReadMetadata();
|
||||||
|
|
||||||
if (metadata.OnlineBeatmapSetID.HasValue &&
|
|
||||||
connection.Table<BeatmapSetInfo>().Count(b => b.OnlineBeatmapSetID == metadata.OnlineBeatmapSetID) != 0)
|
|
||||||
return; // TODO: Update this beatmap instead
|
|
||||||
|
|
||||||
if (File.Exists(path)) // Not always the case, i.e. for LegacyFilesystemReader
|
if (File.Exists(path)) // Not always the case, i.e. for LegacyFilesystemReader
|
||||||
{
|
{
|
||||||
using (var md5 = MD5.Create())
|
using (var md5 = MD5.Create())
|
||||||
@ -131,10 +127,26 @@ namespace osu.Game.Database
|
|||||||
hash = BitConverter.ToString(md5.ComputeHash(input)).Replace("-", "").ToLowerInvariant();
|
hash = BitConverter.ToString(md5.ComputeHash(input)).Replace("-", "").ToLowerInvariant();
|
||||||
input.Seek(0, SeekOrigin.Begin);
|
input.Seek(0, SeekOrigin.Begin);
|
||||||
path = Path.Combine(@"beatmaps", hash.Remove(1), hash.Remove(2), hash);
|
path = Path.Combine(@"beatmaps", hash.Remove(1), hash.Remove(2), hash);
|
||||||
using (var output = storage.GetStream(path, FileAccess.Write))
|
if (!storage.Exists(path))
|
||||||
input.CopyTo(output);
|
using (var output = storage.GetStream(path, FileAccess.Write))
|
||||||
|
input.CopyTo(output);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var existing = connection.Table<BeatmapSetInfo>().FirstOrDefault(b => b.Hash == hash);
|
||||||
|
|
||||||
|
if (existing != null)
|
||||||
|
{
|
||||||
|
if (existing.DeletePending)
|
||||||
|
{
|
||||||
|
existing.DeletePending = false;
|
||||||
|
Update(existing, false);
|
||||||
|
BeatmapSetAdded?.Invoke(existing);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var beatmapSet = new BeatmapSetInfo
|
var beatmapSet = new BeatmapSetInfo
|
||||||
{
|
{
|
||||||
OnlineBeatmapSetID = metadata.OnlineBeatmapSetID,
|
OnlineBeatmapSetID = metadata.OnlineBeatmapSetID,
|
||||||
@ -169,15 +181,18 @@ namespace osu.Game.Database
|
|||||||
|
|
||||||
public void Import(IEnumerable<BeatmapSetInfo> beatmapSets)
|
public void Import(IEnumerable<BeatmapSetInfo> beatmapSets)
|
||||||
{
|
{
|
||||||
connection.BeginTransaction();
|
lock (connection)
|
||||||
|
|
||||||
foreach (var s in beatmapSets)
|
|
||||||
{
|
{
|
||||||
connection.InsertWithChildren(s, true);
|
connection.BeginTransaction();
|
||||||
BeatmapSetAdded?.Invoke(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
connection.Commit();
|
foreach (var s in beatmapSets)
|
||||||
|
{
|
||||||
|
connection.InsertWithChildren(s, true);
|
||||||
|
BeatmapSetAdded?.Invoke(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
connection.Commit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Delete(BeatmapSetInfo beatmapSet)
|
public void Delete(BeatmapSetInfo beatmapSet)
|
||||||
|
@ -7,7 +7,6 @@ using osu.Game.Beatmaps.Samples;
|
|||||||
using osu.Game.Modes;
|
using osu.Game.Modes;
|
||||||
using SQLite.Net.Attributes;
|
using SQLite.Net.Attributes;
|
||||||
using SQLiteNetExtensions.Attributes;
|
using SQLiteNetExtensions.Attributes;
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
|
|
||||||
namespace osu.Game.Database
|
namespace osu.Game.Database
|
||||||
{
|
{
|
||||||
@ -73,7 +72,6 @@ namespace osu.Game.Database
|
|||||||
// Metadata
|
// Metadata
|
||||||
public string Version { get; set; }
|
public string Version { get; set; }
|
||||||
|
|
||||||
//todo: background threaded computation of this
|
|
||||||
private float starDifficulty = -1;
|
private float starDifficulty = -1;
|
||||||
public float StarDifficulty
|
public float StarDifficulty
|
||||||
{
|
{
|
||||||
@ -85,11 +83,6 @@ namespace osu.Game.Database
|
|||||||
set { starDifficulty = value; }
|
set { starDifficulty = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void ComputeDifficulty(BeatmapDatabase database)
|
|
||||||
{
|
|
||||||
StarDifficulty = (float)Ruleset.GetRuleset(Mode).CreateDifficultyCalculator(database.GetWorkingBeatmap(this).Beatmap).GetDifficulty();
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Equals(BeatmapInfo other)
|
public bool Equals(BeatmapInfo other)
|
||||||
{
|
{
|
||||||
return ID == other?.ID;
|
return ID == other?.ID;
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
|
||||||
using SQLite.Net.Attributes;
|
using SQLite.Net.Attributes;
|
||||||
using SQLiteNetExtensions.Attributes;
|
using SQLiteNetExtensions.Attributes;
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Configuration;
|
using osu.Game.Configuration;
|
||||||
using osu.Framework.Configuration;
|
using osu.Framework.Configuration;
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ using osu.Framework.Graphics.Containers;
|
|||||||
using osu.Framework.Graphics.Cursor;
|
using osu.Framework.Graphics.Cursor;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Textures;
|
using osu.Framework.Graphics.Textures;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Game.Configuration;
|
using osu.Game.Configuration;
|
||||||
using System;
|
using System;
|
||||||
|
@ -8,7 +8,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
|
|
||||||
namespace osu.Game.Graphics.UserInterface
|
namespace osu.Game.Graphics.UserInterface
|
||||||
@ -55,7 +55,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
Roundness = 8,
|
Roundness = 8,
|
||||||
};
|
};
|
||||||
|
|
||||||
FadeGlowTo(0);
|
FadeEdgeEffectTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Glowing
|
public bool Glowing
|
||||||
@ -65,11 +65,11 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
if (value)
|
if (value)
|
||||||
{
|
{
|
||||||
FadeColour(glowingColour, 500, EasingTypes.OutQuint);
|
FadeColour(glowingColour, 500, EasingTypes.OutQuint);
|
||||||
FadeGlowTo(1, 500, EasingTypes.OutQuint);
|
FadeEdgeEffectTo(1, 500, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FadeGlowTo(0, 500);
|
FadeEdgeEffectTo(0, 500);
|
||||||
FadeColour(idleColour, 500);
|
FadeColour(idleColour, 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ using OpenTK.Graphics;
|
|||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Game.Graphics.Backgrounds;
|
using osu.Game.Graphics.Backgrounds;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ using osu.Framework.Audio;
|
|||||||
using osu.Framework.Audio.Sample;
|
using osu.Framework.Audio.Sample;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace osu.Game.Graphics.UserInterface
|
namespace osu.Game.Graphics.UserInterface
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
|
@ -4,19 +4,17 @@
|
|||||||
using OpenTK;
|
using OpenTK;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace osu.Game.Graphics.UserInterface
|
namespace osu.Game.Graphics.UserInterface
|
||||||
{
|
{
|
||||||
public class StarCounter : Container
|
public class StarCounter : Container
|
||||||
{
|
{
|
||||||
private readonly Container starContainer;
|
private readonly Container<Star> stars;
|
||||||
private readonly List<TextAwesome> stars = new List<TextAwesome>();
|
|
||||||
|
|
||||||
private double transformStartTime = 0;
|
private double transformStartTime;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Maximum amount of stars displayed.
|
/// Maximum amount of stars displayed.
|
||||||
@ -24,37 +22,20 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// This does not limit the counter value, but the amount of stars displayed.
|
/// This does not limit the counter value, but the amount of stars displayed.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public int MaxStars
|
public int StarCount { get; }
|
||||||
{
|
|
||||||
get;
|
|
||||||
protected set;
|
|
||||||
}
|
|
||||||
|
|
||||||
private double animationDelay => 80;
|
private double animationDelay => 80;
|
||||||
|
|
||||||
private double scalingDuration => 500;
|
private double scalingDuration => 1000;
|
||||||
private EasingTypes scalingEasing => EasingTypes.OutElasticHalf;
|
private EasingTypes scalingEasing => EasingTypes.OutElasticHalf;
|
||||||
private float minStarScale => 0.3f;
|
private float minStarScale => 0.4f;
|
||||||
|
|
||||||
private double fadingDuration => 100;
|
private double fadingDuration => 100;
|
||||||
private float minStarAlpha => 0.5f;
|
private float minStarAlpha => 0.5f;
|
||||||
|
|
||||||
public float StarSize = 20;
|
private const float star_size = 20;
|
||||||
public float StarSpacing = 4;
|
private float star_spacing = 4;
|
||||||
|
|
||||||
public float VisibleValue
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
double elapsedTime = Time.Current - transformStartTime;
|
|
||||||
double expectedElapsedTime = Math.Abs(prevCount - count) * animationDelay;
|
|
||||||
if (elapsedTime >= expectedElapsedTime)
|
|
||||||
return count;
|
|
||||||
return Interpolation.ValueAt(elapsedTime, prevCount, count, 0, expectedElapsedTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private float prevCount;
|
|
||||||
private float count;
|
private float count;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -69,119 +50,121 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
|
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (IsLoaded)
|
if (count == value) return;
|
||||||
{
|
|
||||||
prevCount = VisibleValue;
|
|
||||||
transformCount(prevCount, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (IsLoaded)
|
||||||
|
transformCount(value);
|
||||||
count = value;
|
count = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Shows a float count as stars (up to 10). Used as star difficulty display.
|
|
||||||
/// </summary>
|
|
||||||
public StarCounter() : this(10)
|
|
||||||
{
|
|
||||||
AutoSizeAxes = Axes.Both;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shows a float count as stars. Used as star difficulty display.
|
/// Shows a float count as stars. Used as star difficulty display.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="maxstars">Maximum amount of stars to display.</param>
|
/// <param name="starCount">Maximum amount of stars to display.</param>
|
||||||
public StarCounter(int maxstars)
|
public StarCounter(int starCount = 10)
|
||||||
{
|
{
|
||||||
MaxStars = Math.Max(maxstars, 0);
|
StarCount = Math.Max(starCount, 0);
|
||||||
|
|
||||||
|
AutoSizeAxes = Axes.Both;
|
||||||
|
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
starContainer = new Container
|
stars = new FlowContainer<Star>
|
||||||
{
|
{
|
||||||
Anchor = Anchor.CentreLeft,
|
AutoSizeAxes = Axes.Both,
|
||||||
Origin = Anchor.CentreLeft,
|
Direction = FlowDirections.Horizontal,
|
||||||
|
Spacing = new Vector2(star_spacing),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
starContainer.Width = MaxStars * StarSize + Math.Max(MaxStars - 1, 0) * StarSpacing;
|
for (int i = 0; i < StarCount; i++)
|
||||||
starContainer.Height = StarSize;
|
|
||||||
|
|
||||||
for (int i = 0; i < MaxStars; i++)
|
|
||||||
{
|
{
|
||||||
TextAwesome star = new TextAwesome
|
stars.Add(new Star
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.fa_star,
|
|
||||||
Anchor = Anchor.CentreLeft,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
TextSize = StarSize,
|
|
||||||
Scale = new Vector2(minStarScale),
|
|
||||||
Alpha = minStarAlpha,
|
Alpha = minStarAlpha,
|
||||||
Position = new Vector2((StarSize + StarSpacing) * i + (StarSize + StarSpacing) / 2, 0),
|
});
|
||||||
};
|
|
||||||
|
|
||||||
//todo: user Container<T> once we have it.
|
|
||||||
stars.Add(star);
|
|
||||||
starContainer.Add(star);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
// Animate initial state from zero.
|
// Animate initial state from zero.
|
||||||
transformCount(0, Count);
|
ReplayAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetCount()
|
public void ResetCount()
|
||||||
{
|
{
|
||||||
Count = 0;
|
count = 0;
|
||||||
StopAnimation();
|
StopAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ReplayAnimation()
|
||||||
|
{
|
||||||
|
var t = count;
|
||||||
|
ResetCount();
|
||||||
|
Count = t;
|
||||||
|
}
|
||||||
|
|
||||||
public void StopAnimation()
|
public void StopAnimation()
|
||||||
{
|
{
|
||||||
prevCount = count;
|
int i = 0;
|
||||||
transformStartTime = Time.Current;
|
foreach (var star in stars.Children)
|
||||||
|
{
|
||||||
for (int i = 0; i < MaxStars; i++)
|
star.ClearTransforms(true);
|
||||||
transformStarQuick(i, count);
|
star.FadeTo(i < count ? 1.0f : minStarAlpha);
|
||||||
|
star.Icon.ScaleTo(getStarScale(i, count));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private float getStarScale(int i, float value)
|
private float getStarScale(int i, float value)
|
||||||
{
|
{
|
||||||
if (value <= i)
|
if (value <= i)
|
||||||
return minStarScale;
|
return minStarScale;
|
||||||
if (i + 1 <= value)
|
|
||||||
return 1.0f;
|
return i + 1 <= value ? 1.0f : Interpolation.ValueAt(value, minStarScale, 1.0f, i, i + 1);
|
||||||
return Interpolation.ValueAt(value, minStarScale, 1.0f, i, i + 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void transformStar(int i, float value)
|
private void transformCount(float newValue)
|
||||||
{
|
{
|
||||||
stars[i].FadeTo(i < value ? 1.0f : minStarAlpha, fadingDuration);
|
int i = 0;
|
||||||
stars[i].ScaleTo(getStarScale(i, value), scalingDuration, scalingEasing);
|
foreach (var star in stars.Children)
|
||||||
}
|
|
||||||
|
|
||||||
private void transformStarQuick(int i, float value)
|
|
||||||
{
|
|
||||||
stars[i].FadeTo(i < value ? 1.0f : minStarAlpha);
|
|
||||||
stars[i].ScaleTo(getStarScale(i, value));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void transformCount(float currentValue, float newValue)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < MaxStars; i++)
|
|
||||||
{
|
{
|
||||||
stars[i].ClearTransformations();
|
star.ClearTransforms(true);
|
||||||
if (currentValue <= newValue)
|
if (count <= newValue)
|
||||||
stars[i].Delay(Math.Max(i - currentValue, 0) * animationDelay);
|
star.Delay(Math.Max(i - count, 0) * animationDelay, true);
|
||||||
else
|
else
|
||||||
stars[i].Delay(Math.Max(currentValue - 1 - i, 0) * animationDelay);
|
star.Delay(Math.Max(count - 1 - i, 0) * animationDelay, true);
|
||||||
transformStar(i, newValue);
|
|
||||||
stars[i].DelayReset();
|
star.FadeTo(i < newValue ? 1.0f : minStarAlpha, fadingDuration);
|
||||||
|
star.Icon.ScaleTo(getStarScale(i, newValue), scalingDuration, scalingEasing);
|
||||||
|
star.DelayReset();
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Star : Container
|
||||||
|
{
|
||||||
|
public TextAwesome Icon;
|
||||||
|
public Star()
|
||||||
|
{
|
||||||
|
Size = new Vector2(star_size);
|
||||||
|
|
||||||
|
Children = new[]
|
||||||
|
{
|
||||||
|
Icon = new TextAwesome
|
||||||
|
{
|
||||||
|
TextSize = star_size,
|
||||||
|
Icon = FontAwesome.fa_star,
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
transformStartTime = Time.Current;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
@ -164,7 +164,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
|
|
||||||
protected override bool OnHover(InputState state)
|
protected override bool OnHover(InputState state)
|
||||||
{
|
{
|
||||||
icon.ClearTransformations();
|
icon.ClearTransforms();
|
||||||
|
|
||||||
ResizeTo(SIZE_EXTENDED, transform_time, EasingTypes.OutElastic);
|
ResizeTo(SIZE_EXTENDED, transform_time, EasingTypes.OutElastic);
|
||||||
|
|
||||||
@ -193,7 +193,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
|
|
||||||
protected override void OnHoverLost(InputState state)
|
protected override void OnHoverLost(InputState state)
|
||||||
{
|
{
|
||||||
icon.ClearTransformations();
|
icon.ClearTransforms();
|
||||||
|
|
||||||
ResizeTo(SIZE_RETRACTED, transform_time, EasingTypes.OutElastic);
|
ResizeTo(SIZE_RETRACTED, transform_time, EasingTypes.OutElastic);
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ namespace osu.Game.Graphics.UserInterface.Volume
|
|||||||
|
|
||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
ClearTransformations();
|
ClearTransforms();
|
||||||
FadeIn(100);
|
FadeIn(100);
|
||||||
|
|
||||||
schedulePopOut();
|
schedulePopOut();
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using OpenTK.Input;
|
using OpenTK.Input;
|
||||||
|
@ -5,7 +5,7 @@ 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.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
@ -5,7 +5,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ 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.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
@ -15,7 +15,7 @@ using osu.Framework.Logging;
|
|||||||
using osu.Game.Graphics.UserInterface.Volume;
|
using osu.Game.Graphics.UserInterface.Volume;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Timing;
|
using osu.Framework.Timing;
|
||||||
using osu.Game.Modes;
|
using osu.Game.Modes;
|
||||||
using osu.Game.Overlays.Toolbar;
|
using osu.Game.Overlays.Toolbar;
|
||||||
@ -25,6 +25,7 @@ using OpenTK;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using osu.Game.Overlays.Notifications;
|
using osu.Game.Overlays.Notifications;
|
||||||
|
|
||||||
namespace osu.Game
|
namespace osu.Game
|
||||||
@ -81,7 +82,7 @@ namespace osu.Game
|
|||||||
if (args?.Length > 0)
|
if (args?.Length > 0)
|
||||||
{
|
{
|
||||||
var paths = args.Where(a => !a.StartsWith(@"-"));
|
var paths = args.Where(a => !a.StartsWith(@"-"));
|
||||||
ImportBeatmaps(paths);
|
ImportBeatmapsAsync(paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
Dependencies.Cache(this);
|
Dependencies.Cache(this);
|
||||||
@ -89,9 +90,9 @@ namespace osu.Game
|
|||||||
PlayMode = LocalConfig.GetBindable<PlayMode>(OsuConfig.PlayMode);
|
PlayMode = LocalConfig.GetBindable<PlayMode>(OsuConfig.PlayMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ImportBeatmaps(IEnumerable<string> paths)
|
protected async void ImportBeatmapsAsync(IEnumerable<string> paths)
|
||||||
{
|
{
|
||||||
Schedule(delegate { Dependencies.Get<BeatmapDatabase>().Import(paths); });
|
await Task.Run(() => BeatmapDatabase.Import(paths));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
|
@ -23,6 +23,8 @@ namespace osu.Game
|
|||||||
{
|
{
|
||||||
protected OsuConfigManager LocalConfig;
|
protected OsuConfigManager LocalConfig;
|
||||||
|
|
||||||
|
protected BeatmapDatabase BeatmapDatabase;
|
||||||
|
|
||||||
protected override string MainResourceFile => @"osu.Game.Resources.dll";
|
protected override string MainResourceFile => @"osu.Game.Resources.dll";
|
||||||
|
|
||||||
public APIAccess API;
|
public APIAccess API;
|
||||||
@ -40,7 +42,7 @@ namespace osu.Game
|
|||||||
{
|
{
|
||||||
Dependencies.Cache(this);
|
Dependencies.Cache(this);
|
||||||
Dependencies.Cache(LocalConfig);
|
Dependencies.Cache(LocalConfig);
|
||||||
Dependencies.Cache(new BeatmapDatabase(Host.Storage, Host));
|
Dependencies.Cache(BeatmapDatabase = new BeatmapDatabase(Host.Storage, Host));
|
||||||
Dependencies.Cache(new OsuColour());
|
Dependencies.Cache(new OsuColour());
|
||||||
|
|
||||||
//this completely overrides the framework default. will need to change once we make a proper FontStore.
|
//this completely overrides the framework default. will need to change once we make a proper FontStore.
|
||||||
|
@ -10,7 +10,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Threading;
|
using osu.Framework.Threading;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
|
@ -6,7 +6,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Overlays.Options.Sections.General;
|
using osu.Game.Overlays.Options.Sections.General;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
@ -14,7 +14,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Textures;
|
using osu.Framework.Graphics.Textures;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
@ -78,6 +78,8 @@ namespace osu.Game.Overlays
|
|||||||
private void load(OsuGameBase osuGame, OsuConfigManager config, BeatmapDatabase beatmaps, AudioManager audio,
|
private void load(OsuGameBase osuGame, OsuConfigManager config, BeatmapDatabase beatmaps, AudioManager audio,
|
||||||
TextureStore textures, OsuColour colours)
|
TextureStore textures, OsuColour colours)
|
||||||
{
|
{
|
||||||
|
game = osuGame;
|
||||||
|
|
||||||
unicodeString = config.GetUnicodeString;
|
unicodeString = config.GetUnicodeString;
|
||||||
|
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
@ -322,12 +324,6 @@ namespace osu.Game.Overlays
|
|||||||
updateDisplay(current, isNext ? TransformDirection.Next : TransformDirection.Prev);
|
updateDisplay(current, isNext ? TransformDirection.Next : TransformDirection.Prev);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Load(Framework.Game game)
|
|
||||||
{
|
|
||||||
this.game = game;
|
|
||||||
base.Load(game);
|
|
||||||
}
|
|
||||||
|
|
||||||
Action pendingBeatmapSwitch;
|
Action pendingBeatmapSwitch;
|
||||||
|
|
||||||
private void updateDisplay(WorkingBeatmap beatmap, TransformDirection direction)
|
private void updateDisplay(WorkingBeatmap beatmap, TransformDirection direction)
|
||||||
|
@ -8,7 +8,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Overlays.Notifications;
|
using osu.Game.Overlays.Notifications;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
@ -8,7 +8,7 @@ using osu.Framework.Graphics.Colour;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
@ -211,7 +211,7 @@ namespace osu.Game.Overlays.Notifications
|
|||||||
{
|
{
|
||||||
pulsate = value;
|
pulsate = value;
|
||||||
|
|
||||||
pulsateLayer.ClearTransformations();
|
pulsateLayer.ClearTransforms();
|
||||||
pulsateLayer.Alpha = 1;
|
pulsateLayer.Alpha = 1;
|
||||||
|
|
||||||
if (pulsate)
|
if (pulsate)
|
||||||
|
@ -9,7 +9,7 @@ using osu.Framework.Extensions.IEnumerableExtensions;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
@ -6,7 +6,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
37
osu.Game/Overlays/Options/Sections/Debug/GCOptions.cs
Normal file
37
osu.Game/Overlays/Options/Sections/Debug/GCOptions.cs
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Runtime;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
|
using osu.Framework.Configuration;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Game.Configuration;
|
||||||
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
|
||||||
|
namespace osu.Game.Overlays.Options.Sections.Debug
|
||||||
|
{
|
||||||
|
public class GCOptions : OptionsSubsection
|
||||||
|
{
|
||||||
|
protected override string Header => "Garbage Collector";
|
||||||
|
|
||||||
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(FrameworkDebugConfigManager config)
|
||||||
|
{
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new OptionEnumDropDown<GCLatencyMode>
|
||||||
|
{
|
||||||
|
LabelText = "Active mode",
|
||||||
|
Bindable = config.GetBindable<GCLatencyMode>(FrameworkDebugConfig.ActiveGCMode)
|
||||||
|
},
|
||||||
|
new OsuButton
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.X,
|
||||||
|
Text = "Force garbage collection",
|
||||||
|
Action = () => GC.Collect()
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
23
osu.Game/Overlays/Options/Sections/DebugSection.cs
Normal file
23
osu.Game/Overlays/Options/Sections/DebugSection.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Game.Graphics;
|
||||||
|
using osu.Game.Overlays.Options.Sections.Debug;
|
||||||
|
|
||||||
|
namespace osu.Game.Overlays.Options.Sections
|
||||||
|
{
|
||||||
|
public class DebugSection : OptionsSection
|
||||||
|
{
|
||||||
|
public override string Header => "Debug";
|
||||||
|
public override FontAwesome Icon => FontAwesome.fa_bug;
|
||||||
|
|
||||||
|
public DebugSection()
|
||||||
|
{
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new GCOptions(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -6,7 +6,7 @@ using OpenTK.Graphics;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Framework.Threading;
|
using osu.Framework.Threading;
|
||||||
using osu.Game.Overlays.Toolbar;
|
using osu.Game.Overlays.Toolbar;
|
||||||
|
@ -8,7 +8,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Overlays.Options;
|
using osu.Game.Overlays.Options;
|
||||||
using System;
|
using System;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
@ -55,6 +55,7 @@ namespace osu.Game.Overlays
|
|||||||
new EditorSection(),
|
new EditorSection(),
|
||||||
new OnlineSection(),
|
new OnlineSection(),
|
||||||
new MaintenanceSection(),
|
new MaintenanceSection(),
|
||||||
|
new DebugSection(),
|
||||||
};
|
};
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Graphics.Colour;
|
using osu.Framework.Graphics.Colour;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
|
@ -11,7 +11,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
|
|
||||||
namespace osu.Game.Overlays.Pause
|
namespace osu.Game.Overlays.Pause
|
||||||
|
@ -6,7 +6,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Colour;
|
using osu.Framework.Graphics.Colour;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Modes;
|
using osu.Game.Modes;
|
||||||
|
@ -9,7 +9,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Backgrounds;
|
using osu.Game.Graphics.Backgrounds;
|
||||||
|
@ -8,7 +8,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Modes;
|
using osu.Game.Modes;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
@ -6,7 +6,7 @@ using System.Threading;
|
|||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Screens;
|
using osu.Framework.Screens;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Graphics.Backgrounds;
|
using osu.Game.Graphics.Backgrounds;
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ using osu.Framework.Screens;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
using osu.Game.Screens.Backgrounds;
|
using osu.Game.Screens.Backgrounds;
|
||||||
|
@ -9,7 +9,7 @@ using osu.Framework.Audio.Sample;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
@ -138,7 +138,7 @@ namespace osu.Game.Screens.Menu
|
|||||||
int duration = 0; //(int)(Game.Audio.BeatLength / 2);
|
int duration = 0; //(int)(Game.Audio.BeatLength / 2);
|
||||||
if (duration == 0) duration = 250;
|
if (duration == 0) duration = 250;
|
||||||
|
|
||||||
icon.ClearTransformations();
|
icon.ClearTransforms();
|
||||||
|
|
||||||
icon.ScaleTo(1, 500, EasingTypes.OutElasticHalf);
|
icon.ScaleTo(1, 500, EasingTypes.OutElasticHalf);
|
||||||
|
|
||||||
@ -219,7 +219,7 @@ namespace osu.Game.Screens.Menu
|
|||||||
|
|
||||||
protected override void OnHoverLost(InputState state)
|
protected override void OnHoverLost(InputState state)
|
||||||
{
|
{
|
||||||
icon.ClearTransformations();
|
icon.ClearTransforms();
|
||||||
icon.RotateTo(0, 500, EasingTypes.Out);
|
icon.RotateTo(0, 500, EasingTypes.Out);
|
||||||
icon.MoveTo(Vector2.Zero, 500, EasingTypes.Out);
|
icon.MoveTo(Vector2.Zero, 500, EasingTypes.Out);
|
||||||
icon.ScaleTo(0.7f, 500, EasingTypes.OutElasticHalf);
|
icon.ScaleTo(0.7f, 500, EasingTypes.OutElasticHalf);
|
||||||
@ -274,7 +274,7 @@ namespace osu.Game.Screens.Menu
|
|||||||
|
|
||||||
clickAction?.Invoke();
|
clickAction?.Invoke();
|
||||||
|
|
||||||
boxHoverLayer.ClearTransformations();
|
boxHoverLayer.ClearTransforms();
|
||||||
boxHoverLayer.Alpha = 0.9f;
|
boxHoverLayer.Alpha = 0.9f;
|
||||||
boxHoverLayer.FadeOut(800, EasingTypes.OutExpo);
|
boxHoverLayer.FadeOut(800, EasingTypes.OutExpo);
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ using osu.Framework.Audio;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Overlays.Toolbar;
|
using osu.Game.Overlays.Toolbar;
|
||||||
|
@ -7,7 +7,7 @@ using osu.Framework.Audio.Sample;
|
|||||||
using osu.Framework.Audio.Track;
|
using osu.Framework.Audio.Track;
|
||||||
using osu.Framework.Screens;
|
using osu.Framework.Screens;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
using osu.Game.Screens.Backgrounds;
|
using osu.Game.Screens.Backgrounds;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
@ -5,7 +5,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Screens;
|
using osu.Framework.Screens;
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Screens.Testing;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
using osu.Game.Screens.Backgrounds;
|
using osu.Game.Screens.Backgrounds;
|
||||||
using osu.Game.Screens.Charts;
|
using osu.Game.Screens.Charts;
|
||||||
|
@ -9,7 +9,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Textures;
|
using osu.Framework.Graphics.Textures;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Backgrounds;
|
using osu.Game.Graphics.Backgrounds;
|
||||||
@ -204,7 +204,7 @@ namespace osu.Game.Screens.Menu
|
|||||||
|
|
||||||
sampleClick.Play();
|
sampleClick.Play();
|
||||||
|
|
||||||
flashLayer.ClearTransformations();
|
flashLayer.ClearTransforms();
|
||||||
flashLayer.Alpha = 0.4f;
|
flashLayer.Alpha = 0.4f;
|
||||||
flashLayer.FadeOut(1500, EasingTypes.OutExpo);
|
flashLayer.FadeOut(1500, EasingTypes.OutExpo);
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using OpenTK.Input;
|
using OpenTK.Input;
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Input;
|
using OpenTK.Input;
|
||||||
|
@ -22,7 +22,7 @@ using System;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Logging;
|
using osu.Framework.Logging;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Play
|
namespace osu.Game.Screens.Play
|
||||||
@ -312,6 +312,9 @@ namespace osu.Game.Screens.Play
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
FadeOut(250);
|
||||||
|
Content.ScaleTo(0.7f, 750, EasingTypes.InQuint);
|
||||||
|
|
||||||
dimLevel.ValueChanged -= dimChanged;
|
dimLevel.ValueChanged -= dimChanged;
|
||||||
Background?.FadeTo(1f, 200);
|
Background?.FadeTo(1f, 200);
|
||||||
return base.OnExiting(next);
|
return base.OnExiting(next);
|
||||||
|
@ -6,7 +6,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Framework.Screens;
|
using osu.Framework.Screens;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
@ -80,6 +80,8 @@ namespace osu.Game.Screens.Play
|
|||||||
|
|
||||||
Schedule(() =>
|
Schedule(() =>
|
||||||
{
|
{
|
||||||
|
if (!IsCurrentScreen) return;
|
||||||
|
|
||||||
if (!Push(player))
|
if (!Push(player))
|
||||||
Exit();
|
Exit();
|
||||||
});
|
});
|
||||||
@ -89,6 +91,12 @@ namespace osu.Game.Screens.Play
|
|||||||
{
|
{
|
||||||
Content.ScaleTo(0.7f, 150, EasingTypes.InQuint);
|
Content.ScaleTo(0.7f, 150, EasingTypes.InQuint);
|
||||||
FadeOut(150);
|
FadeOut(150);
|
||||||
|
|
||||||
|
//OsuScreens are currently never finalised due to the Bindable<Beatmap> bindings.
|
||||||
|
//can be removed once we solve that one.
|
||||||
|
if (player != null && player.LoadState != LoadState.Alive)
|
||||||
|
player.Dispose();
|
||||||
|
|
||||||
return base.OnExiting(next);
|
return base.OnExiting(next);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
using osu.Framework.Screens;
|
using osu.Framework.Screens;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
using osu.Game.Modes;
|
using osu.Game.Modes;
|
||||||
using osu.Game.Screens.Backgrounds;
|
using osu.Game.Screens.Backgrounds;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
using OpenTK;
|
using OpenTK;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -7,7 +7,7 @@ using OpenTK.Graphics;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Screens.Menu;
|
using osu.Game.Screens.Menu;
|
||||||
|
@ -8,7 +8,7 @@ using osu.Framework.Graphics.Containers;
|
|||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using System;
|
using System;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Select
|
namespace osu.Game.Screens.Select
|
||||||
@ -113,7 +113,7 @@ namespace osu.Game.Screens.Select
|
|||||||
|
|
||||||
protected override bool OnClick(InputState state)
|
protected override bool OnClick(InputState state)
|
||||||
{
|
{
|
||||||
box.ClearTransformations();
|
box.ClearTransforms();
|
||||||
box.Alpha = 1;
|
box.Alpha = 1;
|
||||||
box.FadeOut(Footer.TRANSITION_LENGTH * 3, EasingTypes.OutQuint);
|
box.FadeOut(Footer.TRANSITION_LENGTH * 3, EasingTypes.OutQuint);
|
||||||
return base.OnClick(state);
|
return base.OnClick(state);
|
||||||
|
@ -19,7 +19,7 @@ using osu.Game.Screens.Backgrounds;
|
|||||||
using OpenTK;
|
using OpenTK;
|
||||||
using osu.Game.Screens.Play;
|
using osu.Game.Screens.Play;
|
||||||
using osu.Framework.Audio.Sample;
|
using osu.Framework.Audio.Sample;
|
||||||
using osu.Framework.Graphics.Transformations;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Beatmaps.Drawables;
|
using osu.Game.Beatmaps.Drawables;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
@ -341,11 +341,7 @@ namespace osu.Game.Screens.Select
|
|||||||
if (b.Metadata == null) b.Metadata = beatmapSet.Metadata;
|
if (b.Metadata == null) b.Metadata = beatmapSet.Metadata;
|
||||||
});
|
});
|
||||||
|
|
||||||
foreach (var b in beatmapSet.Beatmaps)
|
var group = new BeatmapGroup(beatmapSet, database)
|
||||||
b.ComputeDifficulty(database);
|
|
||||||
beatmapSet.Beatmaps = beatmapSet.Beatmaps.OrderBy(b => b.StarDifficulty).ToList();
|
|
||||||
|
|
||||||
var group = new BeatmapGroup(database.GetWorkingBeatmap(beatmapSet.Beatmaps.FirstOrDefault()))
|
|
||||||
{
|
{
|
||||||
SelectionChanged = selectionChanged,
|
SelectionChanged = selectionChanged,
|
||||||
StartRequested = b => footer.StartButton.TriggerClick()
|
StartRequested = b => footer.StartButton.TriggerClick()
|
||||||
|
@ -118,6 +118,8 @@
|
|||||||
<Compile Include="Graphics\UserInterface\OsuDropDownHeader.cs" />
|
<Compile Include="Graphics\UserInterface\OsuDropDownHeader.cs" />
|
||||||
<Compile Include="Graphics\UserInterface\OsuDropDownMenu.cs" />
|
<Compile Include="Graphics\UserInterface\OsuDropDownMenu.cs" />
|
||||||
<Compile Include="Graphics\UserInterface\OsuDropDownMenuItem.cs" />
|
<Compile Include="Graphics\UserInterface\OsuDropDownMenuItem.cs" />
|
||||||
|
<Compile Include="Overlays\Options\Sections\DebugSection.cs" />
|
||||||
|
<Compile Include="Overlays\Options\Sections\Debug\GCOptions.cs" />
|
||||||
<Compile Include="Overlays\Toolbar\ToolbarHomeButton.cs" />
|
<Compile Include="Overlays\Toolbar\ToolbarHomeButton.cs" />
|
||||||
<Compile Include="Overlays\Toolbar\ToolbarMusicButton.cs" />
|
<Compile Include="Overlays\Toolbar\ToolbarMusicButton.cs" />
|
||||||
<Compile Include="Overlays\Toolbar\ToolbarNotificationButton.cs" />
|
<Compile Include="Overlays\Toolbar\ToolbarNotificationButton.cs" />
|
||||||
|
Loading…
Reference in New Issue
Block a user