diff --git a/.vscode/launch.json b/.vscode/launch.json
index 64b3ff21..40b5c9e7 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -7,7 +7,7 @@
"request": "launch",
"program": "dotnet",
"args": [
- "${workspaceRoot}/osu.Game.Rulesets.Rush.Tests/bin/Debug/net6.0/osu.Game.Rulesets.Rush.Tests.dll"
+ "${workspaceRoot}/osu.Game.Rulesets.Rush.Tests/bin/Debug/net8.0/osu.Game.Rulesets.Rush.Tests.dll"
],
"cwd": "${workspaceRoot}",
"preLaunchTask": "Build tests (Debug)",
@@ -19,7 +19,7 @@
"request": "launch",
"program": "dotnet",
"args": [
- "${workspaceRoot}/osu.Game.Rulesets.Rush.Tests/bin/Release/net6.0/osu.Game.Rulesets.Rush.Tests.dll"
+ "${workspaceRoot}/osu.Game.Rulesets.Rush.Tests/bin/Release/net8.0/osu.Game.Rulesets.Rush.Tests.dll"
],
"cwd": "${workspaceRoot}",
"preLaunchTask": "Build tests (Release)",
@@ -31,7 +31,7 @@
"request": "launch",
"program": "dotnet",
"args": [
- "${workspaceRoot}/osu.Game.Rulesets.Rush.Tests/bin/Development/net6.0/osu.Game.Rulesets.Rush.Tests.dll"
+ "${workspaceRoot}/osu.Game.Rulesets.Rush.Tests/bin/Development/net8.0/osu.Game.Rulesets.Rush.Tests.dll"
],
"cwd": "${workspaceRoot}",
"preLaunchTask": "Build tests (Development)",
diff --git a/osu.Game.Rulesets.Rush.Tests/osu.Game.Rulesets.Rush.Tests.csproj b/osu.Game.Rulesets.Rush.Tests/osu.Game.Rulesets.Rush.Tests.csproj
index a0dee943..fa40f2c6 100644
--- a/osu.Game.Rulesets.Rush.Tests/osu.Game.Rulesets.Rush.Tests.csproj
+++ b/osu.Game.Rulesets.Rush.Tests/osu.Game.Rulesets.Rush.Tests.csproj
@@ -17,7 +17,7 @@
WinExe
- net6.0
+ net8.0
true
diff --git a/osu.Game.Rulesets.Rush/Input/RushInputManager.cs b/osu.Game.Rulesets.Rush/Input/RushInputManager.cs
index a6a2020f..f4d92a6a 100644
--- a/osu.Game.Rulesets.Rush/Input/RushInputManager.cs
+++ b/osu.Game.Rulesets.Rush/Input/RushInputManager.cs
@@ -22,7 +22,7 @@ public partial class RushInputManager : RulesetInputManager
///
/// Retrieves all actions in a currenty pressed states.
///
- public SlimReadOnlyListWrapper PressedActions => ((List)KeyBindingContainer.PressedActions).AsSlimReadOnly();
+ public SlimReadOnlyListWrapper PressedActions => KeyBindingContainer.PressedActions;
public RushInputManager(RulesetInfo ruleset)
: base(ruleset, 0, SimultaneousBindingMode.Unique)
diff --git a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableDualHit.cs b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableDualHit.cs
index a9a2d7d3..e0434458 100644
--- a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableDualHit.cs
+++ b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableDualHit.cs
@@ -87,7 +87,7 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
// We can judge this object the instant the nested objects are judged
if (Air.AllJudged && Ground.AllJudged)
- ApplyResult(r => r.Type = (Air.IsHit && Ground.IsHit) ? r.Judgement.MaxResult : r.Judgement.MinResult);
+ ApplyResult((Air.IsHit && Ground.IsHit) ? Result.Judgement.MaxResult : Result.Judgement.MinResult);
}
protected override void UpdateHitStateTransforms(ArmedState state)
diff --git a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableFeverBonus.cs b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableFeverBonus.cs
index 76aa38c5..5838fc1a 100644
--- a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableFeverBonus.cs
+++ b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableFeverBonus.cs
@@ -3,6 +3,7 @@
using System;
using osu.Game.Rulesets.Judgements;
+using osu.Game.Rulesets.Scoring;
namespace osu.Game.Rulesets.Rush.Objects.Drawables
{
@@ -21,10 +22,10 @@ public DrawableFeverBonus(FeverBonus hitObject)
{
}
- public new void ApplyResult(Action application)
+ public new void ApplyResult(HitResult result)
{
if (!Result.HasResult)
- base.ApplyResult(application);
+ base.ApplyResult(result);
}
protected override void CheckForResult(bool userTriggered, double timeOffset)
diff --git a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableHeart.cs b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableHeart.cs
index 0568eb05..91b01106 100644
--- a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableHeart.cs
+++ b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableHeart.cs
@@ -54,7 +54,7 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
if (userTriggered)
{
if (result != HitResult.None)
- ApplyResult(r => r.Type = r.Judgement.MaxResult);
+ ApplyResult(Result.Judgement.MaxResult);
return;
}
@@ -65,11 +65,11 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
// if we've passed the object and can longer hit it, miss
if (result == HitResult.None)
- ApplyResult(r => r.Type = r.Judgement.MinResult);
+ ApplyResult(Result.Judgement.MinResult);
// else if we're still able to hit it, check if the player is in the correct lane
else if (playfield.PlayerSprite.CollidesWith(HitObject))
- ApplyResult(r => r.Type = r.Judgement.MaxResult);
+ ApplyResult(Result.Judgement.MaxResult);
}
}
}
diff --git a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableLanedHit.cs b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableLanedHit.cs
index 0cf1bad2..d7a70011 100644
--- a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableLanedHit.cs
+++ b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableLanedHit.cs
@@ -78,7 +78,7 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
if (!userTriggered)
{
if (!HitObject.HitWindows.CanBeHit(timeOffset))
- ApplyResult(r => r.Type = r.Judgement.MinResult);
+ ApplyResult(Result.Judgement.MinResult);
return;
}
@@ -86,7 +86,7 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
if (result == HitResult.None)
return;
- ApplyResult(r => r.Type = result);
+ ApplyResult(result);
}
protected override void UpdateHitStateTransforms(ArmedState state)
diff --git a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableMiniBoss.cs b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableMiniBoss.cs
index 430f0e5b..80740217 100644
--- a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableMiniBoss.cs
+++ b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableMiniBoss.cs
@@ -131,7 +131,7 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
? HitResult.Good
: HitResult.Miss;
- ApplyResult(r => r.Type = hitResult);
+ ApplyResult(hitResult);
}
}
diff --git a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableMiniBossTick.cs b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableMiniBossTick.cs
index ce1fc24a..901c144d 100644
--- a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableMiniBossTick.cs
+++ b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableMiniBossTick.cs
@@ -27,7 +27,7 @@ public DrawableMiniBossTick(MiniBossTick hitObject)
public void TriggerResult(HitResult type)
{
HitObject.StartTime = Time.Current;
- ApplyResult(r => r.Type = type);
+ ApplyResult(type);
}
protected override void CheckForResult(bool userTriggered, double timeOffset)
diff --git a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableRushHitObject.cs b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableRushHitObject.cs
index 48ae8ece..539ecc9b 100644
--- a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableRushHitObject.cs
+++ b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableRushHitObject.cs
@@ -17,6 +17,7 @@
using osu.Game.Rulesets.Rush.Judgements;
using osu.Game.Rulesets.Rush.UI;
using osu.Game.Rulesets.Rush.UI.Fever;
+using osu.Game.Rulesets.Scoring;
using osu.Game.Rulesets.UI.Scrolling;
using osuTK.Graphics;
@@ -75,7 +76,7 @@ protected virtual void OnDirectionChanged(ValueChangedEvent
protected override void CheckForResult(bool userTriggered, double timeOffset)
{
if (timeOffset >= 0)
- ApplyResult(r => r.Type = r.Judgement.MaxResult);
+ ApplyResult(Result.Judgement.MaxResult);
}
public virtual bool OnPressed(KeyBindingPressEvent e) => false;
@@ -106,24 +107,19 @@ protected override void UpdateHitStateTransforms(ArmedState state)
protected override JudgementResult CreateResult(Judgement judgement) => new RushJudgementResult(HitObject, (RushJudgement)judgement);
- protected new void ApplyResult(Action application)
+ protected new void ApplyResult(HitResult result)
{
// This is the only point to correctly apply values to the judgement
// result in correct time, check whether the player collided now.
- void rushApplication(JudgementResult br)
- {
- var r = (RushJudgementResult)br;
-
- application?.Invoke(r);
- r.PlayerCollided = drawableRuleset.PlayerCollidesWith(r.HitObject);
- };
+ var r = (RushJudgementResult)Result;
+ r.PlayerCollided = drawableRuleset.PlayerCollidesWith(r.HitObject);
- base.ApplyResult(rushApplication);
+ base.ApplyResult(result);
foreach (var bonus in feverBonusContainer)
{
bool eligible = IsHit && feverProcessor.InFeverMode.Value;
- bonus.ApplyResult(result => result.Type = eligible ? result.Judgement.MaxResult : result.Judgement.MinResult);
+ bonus.ApplyResult(eligible ? bonus.Result.Judgement.MaxResult : bonus.Result.Judgement.MinResult);
}
}
diff --git a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableSawblade.cs b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableSawblade.cs
index 20db4ebe..93c94fe8 100644
--- a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableSawblade.cs
+++ b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableSawblade.cs
@@ -77,13 +77,13 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
{
case HitResult.None:
// if we've reached the trailing "none", we successfully dodged the sawblade
- ApplyResult(r => r.Type = r.Judgement.MaxResult);
+ ApplyResult(Result.Judgement.MaxResult);
break;
case HitResult.Miss:
// sawblades only hurt the player if they collide within the trailing "miss" hit window
if (playfield.PlayerSprite.CollidesWith(HitObject))
- ApplyResult(r => r.Type = r.Judgement.MinResult);
+ ApplyResult(Result.Judgement.MinResult);
break;
}
diff --git a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheet.cs b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheet.cs
index ac5d2135..8a8748aa 100644
--- a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheet.cs
+++ b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheet.cs
@@ -144,7 +144,7 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
// Head missed, judge as overall missed.
if (Head.Result.Type == Head.Result.Judgement.MinResult)
{
- ApplyResult(r => r.Type = r.Judgement.MinResult);
+ ApplyResult(Result.Judgement.MinResult);
return;
}
@@ -157,7 +157,7 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
// Released before required progress for completion, judge as overall missed.
if (userTriggered && Progress < REQUIRED_COMPLETION)
{
- ApplyResult(r => r.Type = r.Judgement.MinResult);
+ ApplyResult(Result.Judgement.MinResult);
return;
}
@@ -169,7 +169,7 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
if (!Tail.Judged)
return;
- ApplyResult(r => r.Type = r.Judgement.MaxResult);
+ ApplyResult(Result.Judgement.MaxResult);
}
private bool iHandledPressed = false;
diff --git a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheetHead.cs b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheetHead.cs
index c77c4430..8bcf1ef5 100644
--- a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheetHead.cs
+++ b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheetHead.cs
@@ -32,11 +32,11 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
if (result == HitResult.None)
return;
- ApplyResult(r => r.Type = result);
+ ApplyResult(result);
}
else if (!HitObject.HitWindows.CanBeHit(timeOffset))
{
- ApplyResult(r => r.Type = r.Judgement.MinResult);
+ ApplyResult(Result.Judgement.MinResult);
}
}
}
diff --git a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheetTail.cs b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheetTail.cs
index 7c2fa4a0..ba38b92c 100644
--- a/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheetTail.cs
+++ b/osu.Game.Rulesets.Rush/Objects/Drawables/DrawableStarSheetTail.cs
@@ -30,7 +30,7 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
// Apply tail miss at its time when the entire star sheet has already been judged as missed.
if (overallMissed && timeOffset >= 0)
{
- ApplyResult(r => r.Type = r.Judgement.MinResult);
+ ApplyResult(Result.Judgement.MinResult);
return;
}
@@ -38,7 +38,7 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
if (!userTriggered)
{
if (timeOffset >= 0)
- ApplyResult(r => r.Type = r.Judgement.MaxResult);
+ ApplyResult(Result.Judgement.MaxResult);
return;
}
@@ -47,7 +47,7 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
return;
// ...and an automatic perfect if they release within any "hit" judged period
- ApplyResult(r => r.Type = r.Judgement.MaxResult);
+ ApplyResult(Result.Judgement.MaxResult);
}
}
}
diff --git a/osu.Game.Rulesets.Rush/osu.Game.Rulesets.Rush.csproj b/osu.Game.Rulesets.Rush/osu.Game.Rulesets.Rush.csproj
index 2c1c7b1c..b7564e7a 100644
--- a/osu.Game.Rulesets.Rush/osu.Game.Rulesets.Rush.csproj
+++ b/osu.Game.Rulesets.Rush/osu.Game.Rulesets.Rush.csproj
@@ -1,7 +1,7 @@
Debug;Release;Development
- net6.0
+ net8.0
Library
AnyCPU
osu.Game.Rulesets.Rush
@@ -33,6 +33,6 @@
-
+