mirror of
https://github.com/ppy/osu
synced 2025-04-10 19:21:45 +00:00
Merge branch 'master' into replay-seek-single-frame
This commit is contained in:
commit
1ac682e2c9
@ -13,7 +13,7 @@ namespace osu.Game.Rulesets.EmptyFreeform.Tests
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
public static int Main(string[] args)
|
public static int Main(string[] args)
|
||||||
{
|
{
|
||||||
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu", new HostOptions { BindIPC = true }))
|
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu"))
|
||||||
{
|
{
|
||||||
host.Run(new OsuTestBrowser());
|
host.Run(new OsuTestBrowser());
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -13,7 +13,7 @@ namespace osu.Game.Rulesets.Pippidon.Tests
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
public static int Main(string[] args)
|
public static int Main(string[] args)
|
||||||
{
|
{
|
||||||
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu", new HostOptions { BindIPC = true }))
|
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu"))
|
||||||
{
|
{
|
||||||
host.Run(new OsuTestBrowser());
|
host.Run(new OsuTestBrowser());
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -13,7 +13,7 @@ namespace osu.Game.Rulesets.EmptyScrolling.Tests
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
public static int Main(string[] args)
|
public static int Main(string[] args)
|
||||||
{
|
{
|
||||||
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu", new HostOptions { BindIPC = true }))
|
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu"))
|
||||||
{
|
{
|
||||||
host.Run(new OsuTestBrowser());
|
host.Run(new OsuTestBrowser());
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -13,7 +13,7 @@ namespace osu.Game.Rulesets.Pippidon.Tests
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
public static int Main(string[] args)
|
public static int Main(string[] args)
|
||||||
{
|
{
|
||||||
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu", new HostOptions { BindIPC = true }))
|
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu"))
|
||||||
{
|
{
|
||||||
host.Run(new OsuTestBrowser());
|
host.Run(new OsuTestBrowser());
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -102,7 +102,7 @@ namespace osu.Desktop
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
using (DesktopGameHost host = Host.GetSuitableDesktopHost(gameName, new HostOptions { BindIPC = !tournamentClient }))
|
using (DesktopGameHost host = Host.GetSuitableDesktopHost(gameName, new HostOptions { IPCPort = !tournamentClient ? OsuGame.IPC_PORT : null }))
|
||||||
{
|
{
|
||||||
if (!host.IsPrimaryInstance)
|
if (!host.IsPrimaryInstance)
|
||||||
{
|
{
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
<ProjectReference Include="..\osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj" />
|
<ProjectReference Include="..\osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="Clowd.Squirrel" Version="2.10.2" />
|
<PackageReference Include="Clowd.Squirrel" Version="2.11.1" />
|
||||||
<PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" />
|
<PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" />
|
||||||
<PackageReference Include="System.IO.Packaging" Version="7.0.0" />
|
<PackageReference Include="System.IO.Packaging" Version="8.0.0" />
|
||||||
<PackageReference Include="DiscordRichPresence" Version="1.2.1.24" />
|
<PackageReference Include="DiscordRichPresence" Version="1.2.1.24" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Label="Resources">
|
<ItemGroup Label="Resources">
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="BenchmarkDotNet" Version="0.13.9" />
|
<PackageReference Include="BenchmarkDotNet" Version="0.13.9" />
|
||||||
<PackageReference Include="nunit" Version="3.13.3" />
|
<PackageReference Include="nunit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<Import Project="..\osu.TestProject.props" />
|
<Import Project="..\osu.TestProject.props" />
|
||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Project">
|
<PropertyGroup Label="Project">
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
// 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 System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Game.Rulesets.Mania.Beatmaps;
|
using osu.Game.Rulesets.Mania.Beatmaps;
|
||||||
using osu.Game.Rulesets.Mania.Objects;
|
using osu.Game.Rulesets.Mania.Objects;
|
||||||
using osu.Game.Rulesets.Mania.UI;
|
using osu.Game.Rulesets.Mania.UI;
|
||||||
@ -16,37 +14,35 @@ namespace osu.Game.Rulesets.Mania.Tests.Skinning
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestMinor()
|
public void TestMinor()
|
||||||
{
|
{
|
||||||
AddStep("Create barlines", () => recreate());
|
AddStep("Create barlines", recreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void recreate(Func<IEnumerable<BarLine>>? createBarLines = null)
|
private void recreate()
|
||||||
{
|
{
|
||||||
var stageDefinitions = new List<StageDefinition>
|
var stageDefinitions = new List<StageDefinition>
|
||||||
{
|
{
|
||||||
new StageDefinition(4),
|
new StageDefinition(4),
|
||||||
};
|
};
|
||||||
|
|
||||||
SetContents(_ => new ManiaPlayfield(stageDefinitions).With(s =>
|
SetContents(_ =>
|
||||||
{
|
{
|
||||||
if (createBarLines != null)
|
var maniaPlayfield = new ManiaPlayfield(stageDefinitions);
|
||||||
|
|
||||||
|
// Must be scheduled so the pool is loaded before we try and retrieve from it.
|
||||||
|
Schedule(() =>
|
||||||
{
|
{
|
||||||
var barLines = createBarLines();
|
|
||||||
|
|
||||||
foreach (var b in barLines)
|
|
||||||
s.Add(b);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < 64; i++)
|
for (int i = 0; i < 64; i++)
|
||||||
{
|
{
|
||||||
s.Add(new BarLine
|
maniaPlayfield.Add(new BarLine
|
||||||
{
|
{
|
||||||
StartTime = Time.Current + i * 500,
|
StartTime = Time.Current + i * 500,
|
||||||
Major = i % 4 == 0,
|
Major = i % 4 == 0,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}));
|
});
|
||||||
|
|
||||||
|
return maniaPlayfield;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<Import Project="..\osu.TestProject.props" />
|
<Import Project="..\osu.TestProject.props" />
|
||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Project">
|
<PropertyGroup Label="Project">
|
||||||
|
@ -25,16 +25,16 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
private OsuConfigManager config { get; set; } = null!;
|
private OsuConfigManager config { get; set; } = null!;
|
||||||
|
|
||||||
private readonly List<DrawablePool<TestDrawableOsuJudgement>> pools;
|
private readonly List<DrawablePool<TestDrawableOsuJudgement>> pools = new List<DrawablePool<TestDrawableOsuJudgement>>();
|
||||||
|
|
||||||
public TestSceneDrawableJudgement()
|
[TestCaseSource(nameof(validResults))]
|
||||||
|
public void Test(HitResult result)
|
||||||
{
|
{
|
||||||
pools = new List<DrawablePool<TestDrawableOsuJudgement>>();
|
|
||||||
|
|
||||||
foreach (HitResult result in Enum.GetValues(typeof(HitResult)).OfType<HitResult>().Skip(1))
|
|
||||||
showResult(result);
|
showResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static IEnumerable<HitResult> validResults => Enum.GetValues<HitResult>().Skip(1);
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestHitLightingDisabled()
|
public void TestHitLightingDisabled()
|
||||||
{
|
{
|
||||||
@ -72,19 +72,21 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
pools.Add(pool = new DrawablePool<TestDrawableOsuJudgement>(1));
|
pools.Add(pool = new DrawablePool<TestDrawableOsuJudgement>(1));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pool = pools[poolIndex];
|
|
||||||
|
|
||||||
// We need to make sure neither the pool nor the judgement get disposed when new content is set, and they both share the same parent.
|
// We need to make sure neither the pool nor the judgement get disposed when new content is set, and they both share the same parent.
|
||||||
|
pool = pools[poolIndex];
|
||||||
((Container)pool.Parent!).Clear(false);
|
((Container)pool.Parent!).Clear(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
var container = new Container
|
var container = new Container
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Children = new Drawable[]
|
Child = pool,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Must be scheduled so the pool is loaded before we try and retrieve from it.
|
||||||
|
Schedule(() =>
|
||||||
{
|
{
|
||||||
pool,
|
container.Add(pool.Get(j => j.Apply(new JudgementResult(new HitObject
|
||||||
pool.Get(j => j.Apply(new JudgementResult(new HitObject
|
|
||||||
{
|
{
|
||||||
StartTime = Time.Current
|
StartTime = Time.Current
|
||||||
}, new Judgement())
|
}, new Judgement())
|
||||||
@ -94,9 +96,8 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
{
|
{
|
||||||
j.Anchor = Anchor.Centre;
|
j.Anchor = Anchor.Centre;
|
||||||
j.Origin = Anchor.Centre;
|
j.Origin = Anchor.Centre;
|
||||||
})
|
}));
|
||||||
}
|
});
|
||||||
};
|
|
||||||
|
|
||||||
poolIndex++;
|
poolIndex++;
|
||||||
return container;
|
return container;
|
||||||
|
@ -32,7 +32,7 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
{
|
{
|
||||||
DrawableSlider dho = null;
|
DrawableSlider dho = null;
|
||||||
|
|
||||||
AddStep("create slider", () => Child = dho = new DrawableSlider(prepareObject(new Slider
|
AddStep("create slider", () => Child = dho = new DrawableSlider(applyDefaults(new Slider
|
||||||
{
|
{
|
||||||
Position = new Vector2(256, 192),
|
Position = new Vector2(256, 192),
|
||||||
IndexInCurrentCombo = 0,
|
IndexInCurrentCombo = 0,
|
||||||
@ -47,7 +47,7 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
|
|
||||||
AddWaitStep("wait for progression", 1);
|
AddWaitStep("wait for progression", 1);
|
||||||
|
|
||||||
AddStep("apply new slider", () => dho.Apply(prepareObject(new Slider
|
AddStep("apply new slider", () => dho.Apply(applyDefaults(new Slider
|
||||||
{
|
{
|
||||||
Position = new Vector2(256, 192),
|
Position = new Vector2(256, 192),
|
||||||
ComboIndex = 1,
|
ComboIndex = 1,
|
||||||
@ -75,7 +75,7 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
Child = new SkinProvidingContainer(provider)
|
Child = new SkinProvidingContainer(provider)
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Child = dho = new DrawableSlider(prepareObject(new Slider
|
Child = dho = new DrawableSlider(applyDefaults(new Slider
|
||||||
{
|
{
|
||||||
Position = new Vector2(256, 192),
|
Position = new Vector2(256, 192),
|
||||||
IndexInCurrentCombo = 0,
|
IndexInCurrentCombo = 0,
|
||||||
@ -97,7 +97,38 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
AddAssert("ball is red", () => dho.ChildrenOfType<LegacySliderBall>().Single().BallColour == Color4.Red);
|
AddAssert("ball is red", () => dho.ChildrenOfType<LegacySliderBall>().Single().BallColour == Color4.Red);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Slider prepareObject(Slider slider)
|
[Test]
|
||||||
|
public void TestIncreaseRepeatCount()
|
||||||
|
{
|
||||||
|
DrawableSlider dho = null;
|
||||||
|
|
||||||
|
AddStep("create slider", () =>
|
||||||
|
{
|
||||||
|
Child = dho = new DrawableSlider(applyDefaults(new Slider
|
||||||
|
{
|
||||||
|
Position = new Vector2(256, 192),
|
||||||
|
IndexInCurrentCombo = 0,
|
||||||
|
StartTime = Time.Current,
|
||||||
|
Path = new SliderPath(PathType.LINEAR, new[]
|
||||||
|
{
|
||||||
|
Vector2.Zero,
|
||||||
|
new Vector2(150, 100),
|
||||||
|
new Vector2(300, 0),
|
||||||
|
})
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
AddStep("increase repeat count", () =>
|
||||||
|
{
|
||||||
|
dho.HitObject.RepeatCount++;
|
||||||
|
applyDefaults(dho.HitObject);
|
||||||
|
});
|
||||||
|
|
||||||
|
AddAssert("repeat got custom anchor", () =>
|
||||||
|
dho.ChildrenOfType<DrawableSliderRepeat>().Single().RelativeAnchorPosition == Vector2.Divide(dho.SliderBody!.PathOffset, dho.DrawSize));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Slider applyDefaults(Slider slider)
|
||||||
{
|
{
|
||||||
slider.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty());
|
slider.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty());
|
||||||
return slider;
|
return slider;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||||
<PackageReference Include="Moq" Version="4.18.4" />
|
<PackageReference Include="Moq" Version="4.18.4" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Project">
|
<PropertyGroup Label="Project">
|
||||||
|
@ -67,7 +67,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
private Container<DrawableSliderRepeat> repeatContainer;
|
private Container<DrawableSliderRepeat> repeatContainer;
|
||||||
private PausableSkinnableSound slidingSample;
|
private PausableSkinnableSound slidingSample;
|
||||||
|
|
||||||
private readonly LayoutValue drawSizeLayout;
|
private readonly LayoutValue relativeAnchorPositionLayout;
|
||||||
|
|
||||||
public DrawableSlider()
|
public DrawableSlider()
|
||||||
: this(null)
|
: this(null)
|
||||||
@ -85,7 +85,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
AlwaysPresent = true,
|
AlwaysPresent = true,
|
||||||
Alpha = 0
|
Alpha = 0
|
||||||
};
|
};
|
||||||
AddLayout(drawSizeLayout = new LayoutValue(Invalidation.DrawSize | Invalidation.MiscGeometry));
|
AddLayout(relativeAnchorPositionLayout = new LayoutValue(Invalidation.DrawSize | Invalidation.MiscGeometry));
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
@ -190,6 +190,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
repeatContainer.Add(repeat);
|
repeatContainer.Add(repeat);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
relativeAnchorPositionLayout.Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void ClearNestedHitObjects()
|
protected override void ClearNestedHitObjects()
|
||||||
@ -265,14 +267,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
Size = SliderBody?.Size ?? Vector2.Zero;
|
Size = SliderBody?.Size ?? Vector2.Zero;
|
||||||
OriginPosition = SliderBody?.PathOffset ?? Vector2.Zero;
|
OriginPosition = SliderBody?.PathOffset ?? Vector2.Zero;
|
||||||
|
|
||||||
if (!drawSizeLayout.IsValid)
|
if (!relativeAnchorPositionLayout.IsValid)
|
||||||
{
|
{
|
||||||
Vector2 pos = Vector2.Divide(OriginPosition, DrawSize);
|
Vector2 pos = Vector2.Divide(OriginPosition, DrawSize);
|
||||||
foreach (var obj in NestedHitObjects)
|
foreach (var obj in NestedHitObjects)
|
||||||
obj.RelativeAnchorPosition = pos;
|
obj.RelativeAnchorPosition = pos;
|
||||||
Ball.RelativeAnchorPosition = pos;
|
Ball.RelativeAnchorPosition = pos;
|
||||||
|
|
||||||
drawSizeLayout.Validate();
|
relativeAnchorPositionLayout.Validate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ using osuTK.Graphics;
|
|||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Skinning.Argon
|
namespace osu.Game.Rulesets.Osu.Skinning.Argon
|
||||||
{
|
{
|
||||||
public partial class ArgonCursor : OsuCursorSprite
|
public partial class ArgonCursor : SkinnableCursor
|
||||||
{
|
{
|
||||||
public ArgonCursor()
|
public ArgonCursor()
|
||||||
{
|
{
|
||||||
|
@ -15,6 +15,7 @@ namespace osu.Game.Rulesets.Osu.Skinning.Default
|
|||||||
{
|
{
|
||||||
TriangleScale = 1.2f;
|
TriangleScale = 1.2f;
|
||||||
HideAlphaDiscrepancies = false;
|
HideAlphaDiscrepancies = false;
|
||||||
|
ClampToDrawable = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
|
@ -9,8 +9,11 @@ using osuTK;
|
|||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Skinning.Legacy
|
namespace osu.Game.Rulesets.Osu.Skinning.Legacy
|
||||||
{
|
{
|
||||||
public partial class LegacyCursor : OsuCursorSprite
|
public partial class LegacyCursor : SkinnableCursor
|
||||||
{
|
{
|
||||||
|
private const float pressed_scale = 1.3f;
|
||||||
|
private const float released_scale = 1f;
|
||||||
|
|
||||||
private readonly ISkin skin;
|
private readonly ISkin skin;
|
||||||
private bool spin;
|
private bool spin;
|
||||||
|
|
||||||
@ -51,5 +54,16 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy
|
|||||||
if (spin)
|
if (spin)
|
||||||
ExpandTarget.Spin(10000, RotationDirection.Clockwise);
|
ExpandTarget.Spin(10000, RotationDirection.Clockwise);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Expand()
|
||||||
|
{
|
||||||
|
ExpandTarget?.ScaleTo(released_scale)
|
||||||
|
.ScaleTo(pressed_scale, 100, Easing.Out);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Contract()
|
||||||
|
{
|
||||||
|
ExpandTarget?.ScaleTo(released_scale, 100, Easing.Out);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,15 +24,12 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor
|
|||||||
{
|
{
|
||||||
public const float SIZE = 28;
|
public const float SIZE = 28;
|
||||||
|
|
||||||
private const float pressed_scale = 1.2f;
|
|
||||||
private const float released_scale = 1f;
|
|
||||||
|
|
||||||
private bool cursorExpand;
|
private bool cursorExpand;
|
||||||
|
|
||||||
private SkinnableDrawable cursorSprite;
|
private SkinnableDrawable cursorSprite;
|
||||||
private Container cursorScaleContainer = null!;
|
private Container cursorScaleContainer = null!;
|
||||||
|
|
||||||
private Drawable expandTarget => (cursorSprite.Drawable as OsuCursorSprite)?.ExpandTarget ?? cursorSprite;
|
private SkinnableCursor skinnableCursor => (SkinnableCursor)cursorSprite.Drawable;
|
||||||
|
|
||||||
public IBindable<float> CursorScale => cursorScale;
|
public IBindable<float> CursorScale => cursorScale;
|
||||||
|
|
||||||
@ -108,10 +105,10 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor
|
|||||||
{
|
{
|
||||||
if (!cursorExpand) return;
|
if (!cursorExpand) return;
|
||||||
|
|
||||||
expandTarget.ScaleTo(released_scale).ScaleTo(pressed_scale, 400, Easing.OutElasticHalf);
|
skinnableCursor.Expand();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Contract() => expandTarget.ScaleTo(released_scale, 400, Easing.OutQuad);
|
public void Contract() => skinnableCursor.Contract();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get the scale applicable to the ActiveCursor based on a beatmap's circle size.
|
/// Get the scale applicable to the ActiveCursor based on a beatmap's circle size.
|
||||||
@ -119,7 +116,7 @@ namespace osu.Game.Rulesets.Osu.UI.Cursor
|
|||||||
public static float GetScaleForCircleSize(float circleSize) =>
|
public static float GetScaleForCircleSize(float circleSize) =>
|
||||||
1f - 0.7f * (1f + circleSize - BeatmapDifficulty.DEFAULT_DIFFICULTY) / BeatmapDifficulty.DEFAULT_DIFFICULTY;
|
1f - 0.7f * (1f + circleSize - BeatmapDifficulty.DEFAULT_DIFFICULTY) / BeatmapDifficulty.DEFAULT_DIFFICULTY;
|
||||||
|
|
||||||
private partial class DefaultCursor : OsuCursorSprite
|
private partial class DefaultCursor : SkinnableCursor
|
||||||
{
|
{
|
||||||
public DefaultCursor()
|
public DefaultCursor()
|
||||||
{
|
{
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
// 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.
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Containers;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.UI.Cursor
|
|
||||||
{
|
|
||||||
public abstract partial class OsuCursorSprite : CompositeDrawable
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The an optional piece of the cursor to expand when in a clicked state.
|
|
||||||
/// If null, the whole cursor will be affected by expansion.
|
|
||||||
/// </summary>
|
|
||||||
public Drawable ExpandTarget { get; protected set; }
|
|
||||||
}
|
|
||||||
}
|
|
31
osu.Game.Rulesets.Osu/UI/Cursor/SkinnableCursor.cs
Normal file
31
osu.Game.Rulesets.Osu/UI/Cursor/SkinnableCursor.cs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// 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.
|
||||||
|
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
|
||||||
|
namespace osu.Game.Rulesets.Osu.UI.Cursor
|
||||||
|
{
|
||||||
|
public abstract partial class SkinnableCursor : CompositeDrawable
|
||||||
|
{
|
||||||
|
private const float pressed_scale = 1.2f;
|
||||||
|
private const float released_scale = 1f;
|
||||||
|
|
||||||
|
public virtual void Expand()
|
||||||
|
{
|
||||||
|
ExpandTarget?.ScaleTo(released_scale)
|
||||||
|
.ScaleTo(pressed_scale, 400, Easing.OutElasticHalf);
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void Contract()
|
||||||
|
{
|
||||||
|
ExpandTarget?.ScaleTo(released_scale, 400, Easing.OutQuad);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The an optional piece of the cursor to expand when in a clicked state.
|
||||||
|
/// If null, the whole cursor will be affected by expansion.
|
||||||
|
/// </summary>
|
||||||
|
public Drawable? ExpandTarget { get; protected set; }
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
<Import Project="..\osu.TestProject.props" />
|
<Import Project="..\osu.TestProject.props" />
|
||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Project">
|
<PropertyGroup Label="Project">
|
||||||
|
@ -40,7 +40,7 @@ namespace osu.Game.Tests.Visual.Background
|
|||||||
|
|
||||||
AddSliderStep("Triangle scale", 0f, 10f, 1f, s => triangles.TriangleScale = s);
|
AddSliderStep("Triangle scale", 0f, 10f, 1f, s => triangles.TriangleScale = s);
|
||||||
AddSliderStep("Seed", 0, 1000, 0, s => triangles.Reset(s));
|
AddSliderStep("Seed", 0, 1000, 0, s => triangles.Reset(s));
|
||||||
AddToggleStep("Masking", m => triangles.Masking = m);
|
AddToggleStep("ClampToDrawable", c => triangles.ClampToDrawable = c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ namespace osu.Game.Tests.Visual.Background
|
|||||||
AddStep("White colour", () => box.Colour = triangles.Colour = maskedTriangles.Colour = Color4.White);
|
AddStep("White colour", () => box.Colour = triangles.Colour = maskedTriangles.Colour = Color4.White);
|
||||||
AddStep("Vertical gradient", () => box.Colour = triangles.Colour = maskedTriangles.Colour = ColourInfo.GradientVertical(Color4.White, Color4.Red));
|
AddStep("Vertical gradient", () => box.Colour = triangles.Colour = maskedTriangles.Colour = ColourInfo.GradientVertical(Color4.White, Color4.Red));
|
||||||
AddStep("Horizontal gradient", () => box.Colour = triangles.Colour = maskedTriangles.Colour = ColourInfo.GradientHorizontal(Color4.White, Color4.Red));
|
AddStep("Horizontal gradient", () => box.Colour = triangles.Colour = maskedTriangles.Colour = ColourInfo.GradientHorizontal(Color4.White, Color4.Red));
|
||||||
AddToggleStep("Masking", m => maskedTriangles.Masking = m);
|
AddToggleStep("ClampToDrawable", c => maskedTriangles.ClampToDrawable = c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ namespace osu.Game.Tests.Visual.Navigation
|
|||||||
});
|
});
|
||||||
AddStep("create IPC sender channels", () =>
|
AddStep("create IPC sender channels", () =>
|
||||||
{
|
{
|
||||||
ipcSenderHost = new HeadlessGameHost(gameHost.Name, new HostOptions { BindIPC = true });
|
ipcSenderHost = new HeadlessGameHost(gameHost.Name, new HostOptions { IPCPort = OsuGame.IPC_PORT });
|
||||||
osuSchemeLinkIPCSender = new OsuSchemeLinkIPCChannel(ipcSenderHost);
|
osuSchemeLinkIPCSender = new OsuSchemeLinkIPCChannel(ipcSenderHost);
|
||||||
archiveImportIPCSender = new ArchiveImportIPCChannel(ipcSenderHost);
|
archiveImportIPCSender = new ArchiveImportIPCChannel(ipcSenderHost);
|
||||||
});
|
});
|
||||||
|
@ -40,8 +40,15 @@ namespace osu.Game.Tests.Visual.Settings
|
|||||||
AddStep("change value from default", () => textBox.Current.Value = "non-default");
|
AddStep("change value from default", () => textBox.Current.Value = "non-default");
|
||||||
AddUntilStep("restore button shown", () => revertToDefaultButton.Alpha > 0);
|
AddUntilStep("restore button shown", () => revertToDefaultButton.Alpha > 0);
|
||||||
|
|
||||||
|
AddStep("disable setting", () => textBox.Current.Disabled = true);
|
||||||
|
AddUntilStep("restore button still shown", () => revertToDefaultButton.Alpha > 0);
|
||||||
|
|
||||||
|
AddStep("enable setting", () => textBox.Current.Disabled = false);
|
||||||
AddStep("restore default", () => textBox.Current.SetDefault());
|
AddStep("restore default", () => textBox.Current.SetDefault());
|
||||||
AddUntilStep("restore button hidden", () => revertToDefaultButton.Alpha == 0);
|
AddUntilStep("restore button hidden", () => revertToDefaultButton.Alpha == 0);
|
||||||
|
|
||||||
|
AddStep("disable setting", () => textBox.Current.Disabled = true);
|
||||||
|
AddUntilStep("restore button still hidden", () => revertToDefaultButton.Alpha == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<PackageReference Include="DeepEqual" Version="4.2.1" />
|
<PackageReference Include="DeepEqual" Version="4.2.1" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||||
<PackageReference Include="Nito.AsyncEx" Version="5.1.2" />
|
<PackageReference Include="Nito.AsyncEx" Version="5.1.2" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
<PackageReference Include="Moq" Version="4.18.4" />
|
<PackageReference Include="Moq" Version="4.18.4" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -12,7 +12,7 @@ namespace osu.Game.Tournament.Tests
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
public static int Main(string[] args)
|
public static int Main(string[] args)
|
||||||
{
|
{
|
||||||
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu-development", new HostOptions { BindIPC = true }))
|
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu-development"))
|
||||||
{
|
{
|
||||||
host.Run(new TournamentTestBrowser());
|
host.Run(new TournamentTestBrowser());
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Project">
|
<PropertyGroup Label="Project">
|
||||||
|
@ -12,6 +12,7 @@ using osu.Game.Beatmaps;
|
|||||||
using osu.Game.Beatmaps.Legacy;
|
using osu.Game.Beatmaps.Legacy;
|
||||||
using osu.Game.Extensions;
|
using osu.Game.Extensions;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
|
using osu.Game.Models;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Screens.Menu;
|
using osu.Game.Screens.Menu;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
@ -101,11 +102,25 @@ namespace osu.Game.Tournament.Components
|
|||||||
|
|
||||||
private void refreshContent()
|
private void refreshContent()
|
||||||
{
|
{
|
||||||
if (beatmap == null)
|
beatmap ??= new BeatmapInfo
|
||||||
{
|
{
|
||||||
flow.Clear();
|
Metadata = new BeatmapMetadata
|
||||||
return;
|
{
|
||||||
}
|
Artist = "unknown",
|
||||||
|
Title = "no beatmap selected",
|
||||||
|
Author = new RealmUser { Username = "unknown" },
|
||||||
|
},
|
||||||
|
DifficultyName = "unknown",
|
||||||
|
BeatmapSet = new BeatmapSetInfo(),
|
||||||
|
StarRating = 0,
|
||||||
|
Difficulty = new BeatmapDifficulty
|
||||||
|
{
|
||||||
|
CircleSize = 0,
|
||||||
|
DrainRate = 0,
|
||||||
|
OverallDifficulty = 0,
|
||||||
|
ApproachRate = 0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
double bpm = beatmap.BPM;
|
double bpm = beatmap.BPM;
|
||||||
double length = beatmap.Length;
|
double length = beatmap.Length;
|
||||||
|
@ -194,7 +194,7 @@ namespace osu.Game.Tournament.Components
|
|||||||
|
|
||||||
// Use DelayedLoadWrapper to avoid content unloading when switching away to another screen.
|
// Use DelayedLoadWrapper to avoid content unloading when switching away to another screen.
|
||||||
protected override DelayedLoadWrapper CreateDelayedLoadWrapper(Func<Drawable> createContentFunc, double timeBeforeLoad)
|
protected override DelayedLoadWrapper CreateDelayedLoadWrapper(Func<Drawable> createContentFunc, double timeBeforeLoad)
|
||||||
=> new DelayedLoadWrapper(createContentFunc, timeBeforeLoad);
|
=> new DelayedLoadWrapper(createContentFunc(), timeBeforeLoad);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,6 @@ using osu.Framework.Graphics.Primitives;
|
|||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Framework.Graphics.Rendering;
|
using osu.Framework.Graphics.Rendering;
|
||||||
using osu.Framework.Graphics.Rendering.Vertices;
|
|
||||||
using osu.Framework.Lists;
|
using osu.Framework.Lists;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
|
|
||||||
@ -79,9 +78,9 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If enabled, only the portion of triangles that falls within this <see cref="Drawable"/>'s
|
/// If enabled, only the portion of triangles that falls within this <see cref="Drawable"/>'s
|
||||||
/// shape is drawn to the screen.
|
/// shape is drawn to the screen. Default is true.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool Masking { get; set; }
|
public bool ClampToDrawable { get; set; } = true;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether we should drop-off alpha values of triangles more quickly to improve
|
/// Whether we should drop-off alpha values of triangles more quickly to improve
|
||||||
@ -258,13 +257,12 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
|
|
||||||
private IShader shader;
|
private IShader shader;
|
||||||
private Texture texture;
|
private Texture texture;
|
||||||
private bool masking;
|
private bool clamp;
|
||||||
|
|
||||||
private readonly List<TriangleParticle> parts = new List<TriangleParticle>();
|
private readonly List<TriangleParticle> parts = new List<TriangleParticle>();
|
||||||
private readonly Vector2 triangleSize = new Vector2(1f, equilateral_triangle_ratio) * triangle_size;
|
private readonly Vector2 triangleSize = new Vector2(1f, equilateral_triangle_ratio) * triangle_size;
|
||||||
|
|
||||||
private Vector2 size;
|
private Vector2 size;
|
||||||
private IVertexBatch<TexturedVertex2D> vertexBatch;
|
|
||||||
|
|
||||||
public TrianglesDrawNode(Triangles source)
|
public TrianglesDrawNode(Triangles source)
|
||||||
: base(source)
|
: base(source)
|
||||||
@ -278,7 +276,7 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
shader = Source.shader;
|
shader = Source.shader;
|
||||||
texture = Source.texture;
|
texture = Source.texture;
|
||||||
size = Source.DrawSize;
|
size = Source.DrawSize;
|
||||||
masking = Source.Masking;
|
clamp = Source.ClampToDrawable;
|
||||||
|
|
||||||
parts.Clear();
|
parts.Clear();
|
||||||
parts.AddRange(Source.parts);
|
parts.AddRange(Source.parts);
|
||||||
@ -290,12 +288,6 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
{
|
{
|
||||||
base.Draw(renderer);
|
base.Draw(renderer);
|
||||||
|
|
||||||
if (Source.AimCount > 0 && (vertexBatch == null || vertexBatch.Size != Source.AimCount))
|
|
||||||
{
|
|
||||||
vertexBatch?.Dispose();
|
|
||||||
vertexBatch = renderer.CreateQuadBatch<TexturedVertex2D>(Source.AimCount, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
borderDataBuffer ??= renderer.CreateUniformBuffer<TriangleBorderData>();
|
borderDataBuffer ??= renderer.CreateUniformBuffer<TriangleBorderData>();
|
||||||
borderDataBuffer.Data = borderDataBuffer.Data with
|
borderDataBuffer.Data = borderDataBuffer.Data with
|
||||||
{
|
{
|
||||||
@ -314,7 +306,7 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
|
|
||||||
Vector2 topLeft = particle.Position - new Vector2(relativeSize.X * 0.5f, 0f);
|
Vector2 topLeft = particle.Position - new Vector2(relativeSize.X * 0.5f, 0f);
|
||||||
|
|
||||||
Quad triangleQuad = masking ? clampToDrawable(topLeft, relativeSize) : new Quad(topLeft.X, topLeft.Y, relativeSize.X, relativeSize.Y);
|
Quad triangleQuad = clamp ? clampToDrawable(topLeft, relativeSize) : new Quad(topLeft.X, topLeft.Y, relativeSize.X, relativeSize.Y);
|
||||||
|
|
||||||
var drawQuad = new Quad(
|
var drawQuad = new Quad(
|
||||||
Vector2Extensions.Transform(triangleQuad.TopLeft * size, DrawInfo.Matrix),
|
Vector2Extensions.Transform(triangleQuad.TopLeft * size, DrawInfo.Matrix),
|
||||||
@ -333,7 +325,7 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
triangleQuad.Height
|
triangleQuad.Height
|
||||||
) / relativeSize;
|
) / relativeSize;
|
||||||
|
|
||||||
renderer.DrawQuad(texture, drawQuad, colourInfo, new RectangleF(0, 0, 1, 1), vertexBatch.AddAction, textureCoords: textureCoords);
|
renderer.DrawQuad(texture, drawQuad, colourInfo, new RectangleF(0, 0, 1, 1), textureCoords: textureCoords);
|
||||||
}
|
}
|
||||||
|
|
||||||
shader.Unbind();
|
shader.Unbind();
|
||||||
@ -356,7 +348,6 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
{
|
{
|
||||||
base.Dispose(isDisposing);
|
base.Dispose(isDisposing);
|
||||||
|
|
||||||
vertexBatch?.Dispose();
|
|
||||||
borderDataBuffer?.Dispose();
|
borderDataBuffer?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,6 @@ using osu.Framework.Graphics.Primitives;
|
|||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Framework.Graphics.Rendering;
|
using osu.Framework.Graphics.Rendering;
|
||||||
using osu.Framework.Graphics.Rendering.Vertices;
|
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
|
|
||||||
@ -35,9 +34,9 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If enabled, only the portion of triangles that falls within this <see cref="Drawable"/>'s
|
/// If enabled, only the portion of triangles that falls within this <see cref="Drawable"/>'s
|
||||||
/// shape is drawn to the screen.
|
/// shape is drawn to the screen. Default is true.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool Masking { get; set; }
|
public bool ClampToDrawable { get; set; } = true;
|
||||||
|
|
||||||
private readonly BindableFloat spawnRatio = new BindableFloat(1f);
|
private readonly BindableFloat spawnRatio = new BindableFloat(1f);
|
||||||
|
|
||||||
@ -194,9 +193,7 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
private Vector2 size;
|
private Vector2 size;
|
||||||
private float thickness;
|
private float thickness;
|
||||||
private float texelSize;
|
private float texelSize;
|
||||||
private bool masking;
|
private bool clamp;
|
||||||
|
|
||||||
private IVertexBatch<TexturedVertex2D>? vertexBatch;
|
|
||||||
|
|
||||||
public TrianglesDrawNode(TrianglesV2 source)
|
public TrianglesDrawNode(TrianglesV2 source)
|
||||||
: base(source)
|
: base(source)
|
||||||
@ -211,7 +208,7 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
texture = Source.texture;
|
texture = Source.texture;
|
||||||
size = Source.DrawSize;
|
size = Source.DrawSize;
|
||||||
thickness = Source.Thickness;
|
thickness = Source.Thickness;
|
||||||
masking = Source.Masking;
|
clamp = Source.ClampToDrawable;
|
||||||
|
|
||||||
Quad triangleQuad = new Quad(
|
Quad triangleQuad = new Quad(
|
||||||
Vector2Extensions.Transform(Vector2.Zero, DrawInfo.Matrix),
|
Vector2Extensions.Transform(Vector2.Zero, DrawInfo.Matrix),
|
||||||
@ -235,12 +232,6 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
if (Source.AimCount == 0 || thickness == 0)
|
if (Source.AimCount == 0 || thickness == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (vertexBatch == null || vertexBatch.Size != Source.AimCount)
|
|
||||||
{
|
|
||||||
vertexBatch?.Dispose();
|
|
||||||
vertexBatch = renderer.CreateQuadBatch<TexturedVertex2D>(Source.AimCount, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
borderDataBuffer ??= renderer.CreateUniformBuffer<TriangleBorderData>();
|
borderDataBuffer ??= renderer.CreateUniformBuffer<TriangleBorderData>();
|
||||||
borderDataBuffer.Data = borderDataBuffer.Data with
|
borderDataBuffer.Data = borderDataBuffer.Data with
|
||||||
{
|
{
|
||||||
@ -257,7 +248,7 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
{
|
{
|
||||||
Vector2 topLeft = particle.Position - new Vector2(relativeSize.X * 0.5f, 0f);
|
Vector2 topLeft = particle.Position - new Vector2(relativeSize.X * 0.5f, 0f);
|
||||||
|
|
||||||
Quad triangleQuad = masking ? clampToDrawable(topLeft, relativeSize) : new Quad(topLeft.X, topLeft.Y, relativeSize.X, relativeSize.Y);
|
Quad triangleQuad = clamp ? clampToDrawable(topLeft, relativeSize) : new Quad(topLeft.X, topLeft.Y, relativeSize.X, relativeSize.Y);
|
||||||
|
|
||||||
var drawQuad = new Quad(
|
var drawQuad = new Quad(
|
||||||
Vector2Extensions.Transform(triangleQuad.TopLeft * size, DrawInfo.Matrix),
|
Vector2Extensions.Transform(triangleQuad.TopLeft * size, DrawInfo.Matrix),
|
||||||
@ -273,7 +264,7 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
triangleQuad.Height
|
triangleQuad.Height
|
||||||
) / relativeSize;
|
) / relativeSize;
|
||||||
|
|
||||||
renderer.DrawQuad(texture, drawQuad, DrawColourInfo.Colour.Interpolate(triangleQuad), new RectangleF(0, 0, 1, 1), vertexBatch.AddAction, textureCoords: textureCoords);
|
renderer.DrawQuad(texture, drawQuad, DrawColourInfo.Colour.Interpolate(triangleQuad), new RectangleF(0, 0, 1, 1), textureCoords: textureCoords);
|
||||||
}
|
}
|
||||||
|
|
||||||
shader.Unbind();
|
shader.Unbind();
|
||||||
@ -296,7 +287,6 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
{
|
{
|
||||||
base.Dispose(isDisposing);
|
base.Dispose(isDisposing);
|
||||||
|
|
||||||
vertexBatch?.Dispose();
|
|
||||||
borderDataBuffer?.Dispose();
|
borderDataBuffer?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -150,6 +150,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
TriangleScale = 4,
|
TriangleScale = 4,
|
||||||
ColourDark = OsuColour.Gray(0.88f),
|
ColourDark = OsuColour.Gray(0.88f),
|
||||||
Shear = new Vector2(-0.2f, 0),
|
Shear = new Vector2(-0.2f, 0),
|
||||||
|
ClampToDrawable = false
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -28,6 +28,9 @@ namespace osu.Game.Online.API.Requests.Responses
|
|||||||
[JsonProperty("latest_build")]
|
[JsonProperty("latest_build")]
|
||||||
public APIChangelogBuild LatestBuild { get; set; }
|
public APIChangelogBuild LatestBuild { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("user_count")]
|
||||||
|
public int UserCount { get; set; }
|
||||||
|
|
||||||
public bool Equals(APIUpdateStream other) => Id == other?.Id;
|
public bool Equals(APIUpdateStream other) => Id == other?.Id;
|
||||||
|
|
||||||
internal static readonly Dictionary<string, Color4> KNOWN_STREAMS = new Dictionary<string, Color4>
|
internal static readonly Dictionary<string, Color4> KNOWN_STREAMS = new Dictionary<string, Color4>
|
||||||
|
@ -80,6 +80,13 @@ namespace osu.Game
|
|||||||
[Cached(typeof(OsuGame))]
|
[Cached(typeof(OsuGame))]
|
||||||
public partial class OsuGame : OsuGameBase, IKeyBindingHandler<GlobalAction>, ILocalUserPlayInfo, IPerformFromScreenRunner, IOverlayManager, ILinkHandler
|
public partial class OsuGame : OsuGameBase, IKeyBindingHandler<GlobalAction>, ILocalUserPlayInfo, IPerformFromScreenRunner, IOverlayManager, ILinkHandler
|
||||||
{
|
{
|
||||||
|
#if DEBUG
|
||||||
|
// Different port allows runnning release and debug builds alongside each other.
|
||||||
|
public const int IPC_PORT = 44824;
|
||||||
|
#else
|
||||||
|
public const int IPC_PORT = 44823;
|
||||||
|
#endif
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The amount of global offset to apply when a left/right anchored overlay is displayed (ie. settings or notifications).
|
/// The amount of global offset to apply when a left/right anchored overlay is displayed (ie. settings or notifications).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -24,7 +24,7 @@ namespace osu.Game.Overlays.Changelog
|
|||||||
|
|
||||||
protected override LocalisableString AdditionalText => Value.LatestBuild.DisplayVersion;
|
protected override LocalisableString AdditionalText => Value.LatestBuild.DisplayVersion;
|
||||||
|
|
||||||
protected override LocalisableString InfoText => Value.LatestBuild.Users > 0 ? $"{"user".ToQuantity(Value.LatestBuild.Users, "N0")} online" : null;
|
protected override LocalisableString InfoText => Value.UserCount > 0 ? $"{"user".ToQuantity(Value.UserCount, "N0")} online" : null;
|
||||||
|
|
||||||
protected override Color4 GetBarColour(OsuColour colours) => Value.Colour;
|
protected override Color4 GetBarColour(OsuColour colours) => Value.Colour;
|
||||||
}
|
}
|
||||||
|
@ -95,6 +95,7 @@ namespace osu.Game.Overlays.Mods
|
|||||||
Height = header_height,
|
Height = header_height,
|
||||||
Shear = new Vector2(-ShearedOverlayContainer.SHEAR, 0),
|
Shear = new Vector2(-ShearedOverlayContainer.SHEAR, 0),
|
||||||
Velocity = 0.7f,
|
Velocity = 0.7f,
|
||||||
|
ClampToDrawable = false
|
||||||
},
|
},
|
||||||
headerText = new OsuTextFlowContainer(t =>
|
headerText = new OsuTextFlowContainer(t =>
|
||||||
{
|
{
|
||||||
|
@ -115,7 +115,12 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
Enabled.Value = !current.Disabled;
|
Enabled.Value = !current.Disabled;
|
||||||
|
|
||||||
this.FadeTo(current.Disabled ? 0.2f : (current.IsDefault ? 0 : 1), fade_duration, Easing.OutQuint);
|
if (current.IsDefault)
|
||||||
|
this.FadeTo(0, fade_duration, Easing.OutQuint);
|
||||||
|
else if (current.Disabled)
|
||||||
|
this.FadeTo(0.2f, fade_duration, Easing.OutQuint);
|
||||||
|
else
|
||||||
|
this.FadeTo(1, fade_duration, Easing.OutQuint);
|
||||||
|
|
||||||
if (IsHovered && Enabled.Value)
|
if (IsHovered && Enabled.Value)
|
||||||
{
|
{
|
||||||
|
@ -114,7 +114,7 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
protected override bool OnMouseDown(MouseDownEvent e)
|
protected override bool OnMouseDown(MouseDownEvent e)
|
||||||
{
|
{
|
||||||
bool selectionPerformed = performMouseDownActions(e);
|
bool selectionPerformed = performMouseDownActions(e);
|
||||||
bool movementPossible = prepareSelectionMovement();
|
bool movementPossible = prepareSelectionMovement(e);
|
||||||
|
|
||||||
// check if selection has occurred
|
// check if selection has occurred
|
||||||
if (selectionPerformed)
|
if (selectionPerformed)
|
||||||
@ -536,9 +536,13 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Attempts to begin the movement of any selected blueprints.
|
/// Attempts to begin the movement of any selected blueprints.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="e">The <see cref="MouseDownEvent"/> defining the beginning of a movement.</param>
|
||||||
/// <returns>Whether a movement is possible.</returns>
|
/// <returns>Whether a movement is possible.</returns>
|
||||||
private bool prepareSelectionMovement()
|
private bool prepareSelectionMovement(MouseDownEvent e)
|
||||||
{
|
{
|
||||||
|
if (e.Button == MouseButton.Right)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (!SelectionHandler.SelectedBlueprints.Any())
|
if (!SelectionHandler.SelectedBlueprints.Any())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ using osu.Framework.Input.Bindings;
|
|||||||
using osu.Framework.Input.Events;
|
using osu.Framework.Input.Events;
|
||||||
using osu.Framework.Threading;
|
using osu.Framework.Threading;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
|
using osu.Game.Configuration;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
@ -44,6 +45,8 @@ namespace osu.Game.Screens.Play.HUD
|
|||||||
Direction = FillDirection.Horizontal;
|
Direction = FillDirection.Horizontal;
|
||||||
Spacing = new Vector2(20, 0);
|
Spacing = new Vector2(20, 0);
|
||||||
Margin = new MarginPadding(10);
|
Margin = new MarginPadding(10);
|
||||||
|
|
||||||
|
AlwaysPresent = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader(true)]
|
[BackgroundDependencyLoader(true)]
|
||||||
@ -66,9 +69,15 @@ namespace osu.Game.Screens.Play.HUD
|
|||||||
Action = () => Action(),
|
Action = () => Action(),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
AutoSizeAxes = Axes.Both;
|
AutoSizeAxes = Axes.Both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Resolved]
|
||||||
|
private SessionStatics sessionStatics { get; set; }
|
||||||
|
|
||||||
|
private Bindable<bool> touchActive;
|
||||||
|
|
||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
{
|
{
|
||||||
button.HoldActivationDelay.BindValueChanged(v =>
|
button.HoldActivationDelay.BindValueChanged(v =>
|
||||||
@ -78,7 +87,20 @@ namespace osu.Game.Screens.Play.HUD
|
|||||||
: "press for menu";
|
: "press for menu";
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
text.FadeInFromZero(500, Easing.OutQuint).Delay(1500).FadeOut(500, Easing.OutQuint);
|
touchActive = sessionStatics.GetBindable<bool>(Static.TouchInputActive);
|
||||||
|
|
||||||
|
if (touchActive.Value)
|
||||||
|
{
|
||||||
|
Alpha = 1f;
|
||||||
|
text.FadeInFromZero(500, Easing.OutQuint)
|
||||||
|
.Delay(1500)
|
||||||
|
.FadeOut(500, Easing.OutQuint);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Alpha = 0;
|
||||||
|
text.Alpha = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
}
|
}
|
||||||
@ -99,9 +121,11 @@ namespace osu.Game.Screens.Play.HUD
|
|||||||
Alpha = 1;
|
Alpha = 1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
float minAlpha = touchActive.Value ? .08f : 0;
|
||||||
|
|
||||||
Alpha = Interpolation.ValueAt(
|
Alpha = Interpolation.ValueAt(
|
||||||
Math.Clamp(Clock.ElapsedFrameTime, 0, 200),
|
Math.Clamp(Clock.ElapsedFrameTime, 0, 200),
|
||||||
Alpha, Math.Clamp(1 - positionalAdjust, 0.04f, 1), 0, 200, Easing.OutQuint);
|
Alpha, Math.Clamp(1 - positionalAdjust, minAlpha, 1), 0, 200, Easing.OutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -868,7 +868,7 @@ namespace osu.Game.Screens.Select
|
|||||||
{
|
{
|
||||||
var toDisplay = visibleItems.GetRange(displayedRange.first, displayedRange.last - displayedRange.first + 1);
|
var toDisplay = visibleItems.GetRange(displayedRange.first, displayedRange.last - displayedRange.first + 1);
|
||||||
|
|
||||||
foreach (var panel in Scroll.Children)
|
foreach (var panel in Scroll)
|
||||||
{
|
{
|
||||||
Debug.Assert(panel.Item != null);
|
Debug.Assert(panel.Item != null);
|
||||||
|
|
||||||
@ -899,7 +899,7 @@ namespace osu.Game.Screens.Select
|
|||||||
|
|
||||||
// Update externally controlled state of currently visible items (e.g. x-offset and opacity).
|
// Update externally controlled state of currently visible items (e.g. x-offset and opacity).
|
||||||
// This is a per-frame update on all drawable panels.
|
// This is a per-frame update on all drawable panels.
|
||||||
foreach (DrawableCarouselItem item in Scroll.Children)
|
foreach (DrawableCarouselItem item in Scroll)
|
||||||
{
|
{
|
||||||
updateItem(item);
|
updateItem(item);
|
||||||
|
|
||||||
@ -1094,7 +1094,7 @@ namespace osu.Game.Screens.Select
|
|||||||
// to enter clamp-special-case mode where it animates completely differently to normal.
|
// to enter clamp-special-case mode where it animates completely differently to normal.
|
||||||
float scrollChange = scrollTarget.Value - Scroll.Current;
|
float scrollChange = scrollTarget.Value - Scroll.Current;
|
||||||
Scroll.ScrollTo(scrollTarget.Value, false);
|
Scroll.ScrollTo(scrollTarget.Value, false);
|
||||||
foreach (var i in Scroll.Children)
|
foreach (var i in Scroll)
|
||||||
i.Y += scrollChange;
|
i.Y += scrollChange;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ namespace osu.Game.Tests
|
|||||||
[CallerMemberName] string callingMethodName = @"")
|
[CallerMemberName] string callingMethodName = @"")
|
||||||
: base($"{callingMethodName}-{Guid.NewGuid()}", new HostOptions
|
: base($"{callingMethodName}-{Guid.NewGuid()}", new HostOptions
|
||||||
{
|
{
|
||||||
BindIPC = bindIPC,
|
IPCPort = bindIPC ? OsuGame.IPC_PORT : null,
|
||||||
}, bypassCleanup: bypassCleanupOnDispose, realtime: realtime)
|
}, bypassCleanup: bypassCleanupOnDispose, realtime: realtime)
|
||||||
{
|
{
|
||||||
this.bypassCleanupOnSetup = bypassCleanupOnSetup;
|
this.bypassCleanupOnSetup = bypassCleanupOnSetup;
|
||||||
|
@ -12,7 +12,7 @@ namespace osu.Game.Tests
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
public static int Main(string[] args)
|
public static int Main(string[] args)
|
||||||
{
|
{
|
||||||
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu-development", new HostOptions { BindIPC = true, }))
|
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu-development"))
|
||||||
{
|
{
|
||||||
host.Run(new OsuTestBrowser());
|
host.Run(new OsuTestBrowser());
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -21,12 +21,12 @@
|
|||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="AutoMapper" Version="12.0.1" />
|
<PackageReference Include="AutoMapper" Version="12.0.1" />
|
||||||
<PackageReference Include="DiffPlex" Version="1.7.1" />
|
<PackageReference Include="DiffPlex" Version="1.7.1" />
|
||||||
<PackageReference Include="HtmlAgilityPack" Version="1.11.54" />
|
<PackageReference Include="HtmlAgilityPack" Version="1.11.57" />
|
||||||
<PackageReference Include="Humanizer" Version="2.14.1" />
|
<PackageReference Include="Humanizer" Version="2.14.1" />
|
||||||
<PackageReference Include="MessagePack" Version="2.5.129" />
|
<PackageReference Include="MessagePack" Version="2.5.140" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="7.0.12" />
|
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="7.0.15" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="7.0.12" />
|
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="7.0.15" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="7.0.12" />
|
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="7.0.15" />
|
||||||
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="7.0.12" />
|
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="7.0.12" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" />
|
||||||
<PackageReference Include="Microsoft.Toolkit.HighPerformance" Version="7.1.2" />
|
<PackageReference Include="Microsoft.Toolkit.HighPerformance" Version="7.1.2" />
|
||||||
@ -36,13 +36,13 @@
|
|||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Realm" Version="11.5.0" />
|
<PackageReference Include="Realm" Version="11.5.0" />
|
||||||
<PackageReference Include="ppy.osu.Framework" Version="2024.114.0" />
|
<PackageReference Include="ppy.osu.Framework" Version="2024.121.1" />
|
||||||
<PackageReference Include="ppy.osu.Game.Resources" Version="2024.116.0" />
|
<PackageReference Include="ppy.osu.Game.Resources" Version="2024.116.0" />
|
||||||
<PackageReference Include="Sentry" Version="3.40.0" />
|
<PackageReference Include="Sentry" Version="3.41.3" />
|
||||||
<!-- Held back due to 0.34.0 failing AOT compilation on ZstdSharp.dll dependency. -->
|
<!-- Held back due to 0.34.0 failing AOT compilation on ZstdSharp.dll dependency. -->
|
||||||
<PackageReference Include="SharpCompress" Version="0.33.0" />
|
<PackageReference Include="SharpCompress" Version="0.36.0" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||||
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.6" />
|
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.7" />
|
||||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
||||||
<PackageReference Include="TagLibSharp" Version="2.3.0" />
|
<PackageReference Include="TagLibSharp" Version="2.3.0" />
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user