diff --git a/osu.Android.props b/osu.Android.props
index 743508baf8..90d1854c39 100644
--- a/osu.Android.props
+++ b/osu.Android.props
@@ -60,7 +60,7 @@
-
+
diff --git a/osu.Game.Rulesets.Catch/CatchSkinComponent.cs b/osu.Game.Rulesets.Catch/CatchSkinComponent.cs
index 0a3e43dcfc..8bf53e53e3 100644
--- a/osu.Game.Rulesets.Catch/CatchSkinComponent.cs
+++ b/osu.Game.Rulesets.Catch/CatchSkinComponent.cs
@@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Catch
{
}
- protected override string RulesetPrefix => CatchRuleset.SHORT_NAME;
+ protected override string RulesetPrefix => "catch"; // todo: use CatchRuleset.SHORT_NAME;
protected override string ComponentName => Component.ToString().ToLower();
}
diff --git a/osu.Game.Rulesets.Catch/CatchSkinComponents.cs b/osu.Game.Rulesets.Catch/CatchSkinComponents.cs
index c03fe42af7..7e482d4045 100644
--- a/osu.Game.Rulesets.Catch/CatchSkinComponents.cs
+++ b/osu.Game.Rulesets.Catch/CatchSkinComponents.cs
@@ -5,6 +5,5 @@ namespace osu.Game.Rulesets.Catch
{
public enum CatchSkinComponents
{
- Catcher
}
}
diff --git a/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs b/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs
index 1c2fe3517a..e3c6c93d01 100644
--- a/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs
+++ b/osu.Game.Rulesets.Catch/UI/CatcherSprite.cs
@@ -22,7 +22,7 @@ namespace osu.Game.Rulesets.Catch.UI
[BackgroundDependencyLoader]
private void load()
{
- InternalChild = new SkinnableSprite(new CatchSkinComponent(CatchSkinComponents.Catcher))
+ InternalChild = new SkinnableSprite("Gameplay/catch/fruit-catcher-idle")
{
RelativeSizeAxes = Axes.Both,
Anchor = Anchor.TopCentre,
diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ApproachCircle.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ApproachCircle.cs
index c17c276205..1b474f265c 100644
--- a/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ApproachCircle.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ApproachCircle.cs
@@ -31,7 +31,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
private class SkinnableApproachCircle : SkinnableSprite
{
public SkinnableApproachCircle()
- : base(new OsuSkinComponent(OsuSkinComponents.ApproachCircle))
+ : base("Gameplay/osu/approachcircle")
{
}
diff --git a/osu.Game.Rulesets.Osu/Objects/RepeatPoint.cs b/osu.Game.Rulesets.Osu/Objects/RepeatPoint.cs
index 63713541b4..5bd480c0ff 100644
--- a/osu.Game.Rulesets.Osu/Objects/RepeatPoint.cs
+++ b/osu.Game.Rulesets.Osu/Objects/RepeatPoint.cs
@@ -5,6 +5,7 @@ using System;
using osu.Game.Beatmaps;
using osu.Game.Beatmaps.ControlPoints;
using osu.Game.Rulesets.Judgements;
+using osu.Game.Rulesets.Objects;
using osu.Game.Rulesets.Osu.Judgements;
namespace osu.Game.Rulesets.Osu.Objects
@@ -28,5 +29,7 @@ namespace osu.Game.Rulesets.Osu.Objects
}
public override Judgement CreateJudgement() => new OsuJudgement();
+
+ protected override HitWindows CreateHitWindows() => null;
}
}
diff --git a/osu.Game.Rulesets.Osu/Objects/SliderTailCircle.cs b/osu.Game.Rulesets.Osu/Objects/SliderTailCircle.cs
index 4f2af64161..c53a88337e 100644
--- a/osu.Game.Rulesets.Osu/Objects/SliderTailCircle.cs
+++ b/osu.Game.Rulesets.Osu/Objects/SliderTailCircle.cs
@@ -23,5 +23,7 @@ namespace osu.Game.Rulesets.Osu.Objects
}
public override Judgement CreateJudgement() => new OsuSliderTailJudgement();
+
+ protected override HitWindows CreateHitWindows() => null;
}
}
diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayMenuOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayMenuOverlay.cs
index 4727140d99..cc275009ba 100644
--- a/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayMenuOverlay.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestSceneGameplayMenuOverlay.cs
@@ -3,12 +3,13 @@
using System;
using System.Collections.Generic;
-using System.ComponentModel;
using System.Linq;
+using NUnit.Framework;
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Logging;
+using osu.Game.Graphics.UserInterface;
using osu.Game.Input.Bindings;
using osu.Game.Screens.Play;
using osuTK;
@@ -16,7 +17,7 @@ using osuTK.Input;
namespace osu.Game.Tests.Visual.Gameplay
{
- [Description("player pause/fail screens")]
+ [System.ComponentModel.Description("player pause/fail screens")]
public class TestSceneGameplayMenuOverlay : ManualInputManagerTestScene
{
public override IReadOnlyList RequiredTypes => new[] { typeof(FailOverlay), typeof(PauseOverlay) };
@@ -29,57 +30,118 @@ namespace osu.Game.Tests.Visual.Gameplay
[BackgroundDependencyLoader]
private void load(OsuGameBase game)
{
- Child = globalActionContainer = new GlobalActionContainer(game)
- {
- Children = new Drawable[]
- {
- pauseOverlay = new PauseOverlay
- {
- OnResume = () => Logger.Log(@"Resume"),
- OnRetry = () => Logger.Log(@"Retry"),
- OnQuit = () => Logger.Log(@"Quit"),
- },
- failOverlay = new FailOverlay
+ Child = globalActionContainer = new GlobalActionContainer(game);
+ }
- {
- OnRetry = () => Logger.Log(@"Retry"),
- OnQuit = () => Logger.Log(@"Quit"),
- }
+ [SetUp]
+ public void SetUp() => Schedule(() =>
+ {
+ globalActionContainer.Children = new Drawable[]
+ {
+ pauseOverlay = new PauseOverlay
+ {
+ OnResume = () => Logger.Log(@"Resume"),
+ OnRetry = () => Logger.Log(@"Retry"),
+ OnQuit = () => Logger.Log(@"Quit"),
+ },
+ failOverlay = new FailOverlay
+
+ {
+ OnRetry = () => Logger.Log(@"Retry"),
+ OnQuit = () => Logger.Log(@"Quit"),
}
};
+ InputManager.MoveMouseTo(Vector2.Zero);
+ });
+
+ [Test]
+ public void TestAdjustRetryCount()
+ {
+ showOverlay();
+
var retryCount = 0;
- AddStep("Add retry", () =>
+ AddRepeatStep("Add retry", () =>
{
retryCount++;
pauseOverlay.Retries = failOverlay.Retries = retryCount;
- });
+ }, 10);
+ }
- AddToggleStep("Toggle pause overlay", t => pauseOverlay.ToggleVisibility());
- AddToggleStep("Toggle fail overlay", t => failOverlay.ToggleVisibility());
+ ///
+ /// Tests that pressing enter after an overlay shows doesn't trigger an event because a selection hasn't occurred.
+ ///
+ [Test]
+ public void TestEnterWithoutSelection()
+ {
+ showOverlay();
- testHideResets();
+ AddStep("Press select", () => press(GlobalAction.Select));
+ AddAssert("Overlay still open", () => pauseOverlay.State.Value == Visibility.Visible);
+ }
- testEnterWithoutSelection();
- testKeyUpFromInitial();
- testKeyDownFromInitial();
- testKeyUpWrapping();
- testKeyDownWrapping();
+ ///
+ /// Tests that pressing the up arrow from the initial state selects the last button.
+ ///
+ [Test]
+ public void TestKeyUpFromInitial()
+ {
+ showOverlay();
- testMouseSelectionAfterKeySelection();
- testKeySelectionAfterMouseSelection();
+ AddStep("Up arrow", () => press(Key.Up));
+ AddAssert("Last button selected", () => pauseOverlay.Buttons.Last().Selected.Value);
+ }
- testMouseDeselectionResets();
+ ///
+ /// Tests that pressing the down arrow from the initial state selects the first button.
+ ///
+ [Test]
+ public void TestKeyDownFromInitial()
+ {
+ showOverlay();
- testClickSelection();
- testEnterKeySelection();
+ AddStep("Down arrow", () => press(Key.Down));
+ AddAssert("First button selected", () => getButton(0).Selected.Value);
+ }
+
+ ///
+ /// Tests that pressing the up arrow repeatedly causes the selected button to wrap correctly.
+ ///
+ [Test]
+ public void TestKeyUpWrapping()
+ {
+ AddStep("Show overlay", () => failOverlay.Show());
+
+ AddStep("Up arrow", () => press(Key.Up));
+ AddAssert("Last button selected", () => failOverlay.Buttons.Last().Selected.Value);
+ AddStep("Up arrow", () => press(Key.Up));
+ AddAssert("First button selected", () => failOverlay.Buttons.First().Selected.Value);
+ AddStep("Up arrow", () => press(Key.Up));
+ AddAssert("Last button selected", () => failOverlay.Buttons.Last().Selected.Value);
+ }
+
+ ///
+ /// Tests that pressing the down arrow repeatedly causes the selected button to wrap correctly.
+ ///
+ [Test]
+ public void TestKeyDownWrapping()
+ {
+ AddStep("Show overlay", () => failOverlay.Show());
+
+ AddStep("Down arrow", () => press(Key.Down));
+ AddAssert("First button selected", () => failOverlay.Buttons.First().Selected.Value);
+ AddStep("Down arrow", () => press(Key.Down));
+ AddAssert("Last button selected", () => failOverlay.Buttons.Last().Selected.Value);
+ AddStep("Down arrow", () => press(Key.Down));
+ AddAssert("First button selected", () => failOverlay.Buttons.First().Selected.Value);
}
///
/// Test that hiding the overlay after hovering a button will reset the overlay to the initial state with no buttons selected.
///
- private void testHideResets()
+ [Test]
+ public void TestHideResets()
{
AddStep("Show overlay", () => failOverlay.Show());
@@ -90,141 +152,73 @@ namespace osu.Game.Tests.Visual.Gameplay
}
///
- /// Tests that pressing enter after an overlay shows doesn't trigger an event because a selection hasn't occurred.
+ /// Tests that entering menu with cursor initially on button selects it.
///
- private void testEnterWithoutSelection()
+ [Test]
+ public void TestInitialButtonHover()
{
- AddStep("Show overlay", () => pauseOverlay.Show());
+ showOverlay();
- AddStep("Press select", () => press(GlobalAction.Select));
- AddAssert("Overlay still open", () => pauseOverlay.State.Value == Visibility.Visible);
+ AddStep("Hover first button", () => InputManager.MoveMouseTo(getButton(0)));
AddStep("Hide overlay", () => pauseOverlay.Hide());
- }
+ showOverlay();
- ///
- /// Tests that pressing the up arrow from the initial state selects the last button.
- ///
- private void testKeyUpFromInitial()
- {
- AddStep("Show overlay", () => pauseOverlay.Show());
-
- AddStep("Up arrow", () => press(Key.Up));
- AddAssert("Last button selected", () => pauseOverlay.Buttons.Last().Selected.Value);
-
- AddStep("Hide overlay", () => pauseOverlay.Hide());
- }
-
- ///
- /// Tests that pressing the down arrow from the initial state selects the first button.
- ///
- private void testKeyDownFromInitial()
- {
- AddStep("Show overlay", () => pauseOverlay.Show());
-
- AddStep("Down arrow", () => press(Key.Down));
- AddAssert("First button selected", () => pauseOverlay.Buttons.First().Selected.Value);
-
- AddStep("Hide overlay", () => pauseOverlay.Hide());
- }
-
- ///
- /// Tests that pressing the up arrow repeatedly causes the selected button to wrap correctly.
- ///
- private void testKeyUpWrapping()
- {
- AddStep("Show overlay", () => failOverlay.Show());
-
- AddStep("Up arrow", () => press(Key.Up));
- AddAssert("Last button selected", () => failOverlay.Buttons.Last().Selected.Value);
- AddStep("Up arrow", () => press(Key.Up));
- AddAssert("First button selected", () => failOverlay.Buttons.First().Selected.Value);
- AddStep("Up arrow", () => press(Key.Up));
- AddAssert("Last button selected", () => failOverlay.Buttons.Last().Selected.Value);
-
- AddStep("Hide overlay", () => failOverlay.Hide());
- }
-
- ///
- /// Tests that pressing the down arrow repeatedly causes the selected button to wrap correctly.
- ///
- private void testKeyDownWrapping()
- {
- AddStep("Show overlay", () => failOverlay.Show());
-
- AddStep("Down arrow", () => press(Key.Down));
- AddAssert("First button selected", () => failOverlay.Buttons.First().Selected.Value);
- AddStep("Down arrow", () => press(Key.Down));
- AddAssert("Last button selected", () => failOverlay.Buttons.Last().Selected.Value);
- AddStep("Down arrow", () => press(Key.Down));
- AddAssert("First button selected", () => failOverlay.Buttons.First().Selected.Value);
-
- AddStep("Hide overlay", () => failOverlay.Hide());
+ AddAssert("First button selected", () => getButton(0).Selected.Value);
}
///
/// Tests that hovering a button that was previously selected with the keyboard correctly selects the new button and deselects the previous button.
///
- private void testMouseSelectionAfterKeySelection()
+ [Test]
+ public void TestMouseSelectionAfterKeySelection()
{
- AddStep("Show overlay", () => pauseOverlay.Show());
-
- var secondButton = pauseOverlay.Buttons.Skip(1).First();
+ showOverlay();
AddStep("Down arrow", () => press(Key.Down));
- AddStep("Hover second button", () => InputManager.MoveMouseTo(secondButton));
- AddAssert("First button not selected", () => !pauseOverlay.Buttons.First().Selected.Value);
- AddAssert("Second button selected", () => secondButton.Selected.Value);
-
- AddStep("Hide overlay", () => pauseOverlay.Hide());
+ AddStep("Hover second button", () => InputManager.MoveMouseTo(getButton(1)));
+ AddAssert("First button not selected", () => !getButton(0).Selected.Value);
+ AddAssert("Second button selected", () => getButton(1).Selected.Value);
}
///
/// Tests that pressing a key after selecting a button with a hover event correctly selects a new button and deselects the previous button.
///
- private void testKeySelectionAfterMouseSelection()
+ [Test]
+ public void TestKeySelectionAfterMouseSelection()
{
AddStep("Show overlay", () =>
{
pauseOverlay.Show();
- InputManager.MoveMouseTo(Vector2.Zero);
});
- var secondButton = pauseOverlay.Buttons.Skip(1).First();
-
- AddStep("Hover second button", () => InputManager.MoveMouseTo(secondButton));
+ AddStep("Hover second button", () => InputManager.MoveMouseTo(getButton(1)));
AddStep("Up arrow", () => press(Key.Up));
- AddAssert("Second button not selected", () => !secondButton.Selected.Value);
- AddAssert("First button selected", () => pauseOverlay.Buttons.First().Selected.Value);
-
- AddStep("Hide overlay", () => pauseOverlay.Hide());
+ AddAssert("Second button not selected", () => !getButton(1).Selected.Value);
+ AddAssert("First button selected", () => getButton(0).Selected.Value);
}
///
/// Tests that deselecting with the mouse by losing hover will reset the overlay to the initial state.
///
- private void testMouseDeselectionResets()
+ [Test]
+ public void TestMouseDeselectionResets()
{
- AddStep("Show overlay", () => pauseOverlay.Show());
+ showOverlay();
- var secondButton = pauseOverlay.Buttons.Skip(1).First();
-
- AddStep("Hover second button", () => InputManager.MoveMouseTo(secondButton));
+ AddStep("Hover second button", () => InputManager.MoveMouseTo(getButton(1)));
AddStep("Unhover second button", () => InputManager.MoveMouseTo(Vector2.Zero));
AddStep("Down arrow", () => press(Key.Down));
- AddAssert("First button selected", () => pauseOverlay.Buttons.First().Selected.Value); // Initial state condition
-
- AddStep("Hide overlay", () => pauseOverlay.Hide());
+ AddAssert("First button selected", () => getButton(0).Selected.Value); // Initial state condition
}
///
/// Tests that clicking on a button correctly causes a click event for that button.
///
- private void testClickSelection()
+ [Test]
+ public void TestClickSelection()
{
- AddStep("Show overlay", () => pauseOverlay.Show());
-
- var retryButton = pauseOverlay.Buttons.Skip(1).First();
+ showOverlay();
bool triggered = false;
AddStep("Click retry button", () =>
@@ -232,7 +226,7 @@ namespace osu.Game.Tests.Visual.Gameplay
var lastAction = pauseOverlay.OnRetry;
pauseOverlay.OnRetry = () => triggered = true;
- retryButton.Click();
+ getButton(1).Click();
pauseOverlay.OnRetry = lastAction;
});
@@ -243,9 +237,10 @@ namespace osu.Game.Tests.Visual.Gameplay
///
/// Tests that pressing the enter key with a button selected correctly causes a click event for that button.
///
- private void testEnterKeySelection()
+ [Test]
+ public void TestEnterKeySelection()
{
- AddStep("Show overlay", () => pauseOverlay.Show());
+ showOverlay();
AddStep("Select second button", () =>
{
@@ -275,6 +270,10 @@ namespace osu.Game.Tests.Visual.Gameplay
AddAssert("Overlay is closed", () => pauseOverlay.State.Value == Visibility.Hidden);
}
+ private void showOverlay() => AddStep("Show overlay", () => pauseOverlay.Show());
+
+ private DialogButton getButton(int index) => pauseOverlay.Buttons.Skip(index).First();
+
private void press(Key key)
{
InputManager.PressKey(key);
diff --git a/osu.Game/Graphics/UserInterface/HoverClickSounds.cs b/osu.Game/Graphics/UserInterface/HoverClickSounds.cs
index 70d988f60e..4f678b7218 100644
--- a/osu.Game/Graphics/UserInterface/HoverClickSounds.cs
+++ b/osu.Game/Graphics/UserInterface/HoverClickSounds.cs
@@ -1,11 +1,13 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
+using System.Linq;
using osu.Framework.Allocation;
using osu.Framework.Audio;
using osu.Framework.Audio.Sample;
using osu.Framework.Extensions;
using osu.Framework.Input.Events;
+using osuTK.Input;
namespace osu.Game.Graphics.UserInterface
{
@@ -16,15 +18,27 @@ namespace osu.Game.Graphics.UserInterface
public class HoverClickSounds : HoverSounds
{
private SampleChannel sampleClick;
+ private readonly MouseButton[] buttons;
- public HoverClickSounds(HoverSampleSet sampleSet = HoverSampleSet.Normal)
+ ///
+ /// a container which plays sounds on hover and click for any specified s.
+ ///
+ /// Set of click samples to play.
+ ///
+ /// Array of button codes which should trigger the click sound.
+ /// If this optional parameter is omitted or set to null
, the click sound will only be played on left click.
+ ///
+ public HoverClickSounds(HoverSampleSet sampleSet = HoverSampleSet.Normal, MouseButton[] buttons = null)
: base(sampleSet)
{
+ this.buttons = buttons ?? new[] { MouseButton.Left };
}
protected override bool OnClick(ClickEvent e)
{
- sampleClick?.Play();
+ if (buttons.Contains(e.Button) && Contains(e.ScreenSpaceMousePosition))
+ sampleClick?.Play();
+
return base.OnClick(e);
}
diff --git a/osu.Game/Overlays/Direct/DirectGridPanel.cs b/osu.Game/Overlays/Direct/DirectGridPanel.cs
index 7bf94c1483..2528ccec41 100644
--- a/osu.Game/Overlays/Direct/DirectGridPanel.cs
+++ b/osu.Game/Overlays/Direct/DirectGridPanel.cs
@@ -151,6 +151,7 @@ namespace osu.Game.Overlays.Direct
AutoSizeAxes = Axes.X,
Height = 20,
Margin = new MarginPadding { Top = vertical_padding, Bottom = vertical_padding },
+ Spacing = new Vector2(3),
Children = GetDifficultyIcons(colours),
},
},
diff --git a/osu.Game/Overlays/Direct/DirectListPanel.cs b/osu.Game/Overlays/Direct/DirectListPanel.cs
index 158ff648dd..b64142dfe7 100644
--- a/osu.Game/Overlays/Direct/DirectListPanel.cs
+++ b/osu.Game/Overlays/Direct/DirectListPanel.cs
@@ -129,6 +129,7 @@ namespace osu.Game.Overlays.Direct
AutoSizeAxes = Axes.X,
Height = 20,
Margin = new MarginPadding { Top = vertical_padding, Bottom = vertical_padding },
+ Spacing = new Vector2(3),
Children = GetDifficultyIcons(colours),
},
},
diff --git a/osu.Game/Overlays/Direct/DirectPanel.cs b/osu.Game/Overlays/Direct/DirectPanel.cs
index 6074aa16a5..3ffc3f332b 100644
--- a/osu.Game/Overlays/Direct/DirectPanel.cs
+++ b/osu.Game/Overlays/Direct/DirectPanel.cs
@@ -28,7 +28,7 @@ namespace osu.Game.Overlays.Direct
public readonly BeatmapSetInfo SetInfo;
private const double hover_transition_time = 400;
- private const int maximum_difficulty_icons = 15;
+ private const int maximum_difficulty_icons = 10;
private Container content;
diff --git a/osu.Game/Overlays/Mods/ModButton.cs b/osu.Game/Overlays/Mods/ModButton.cs
index 7b8745cf42..58892cd0dd 100644
--- a/osu.Game/Overlays/Mods/ModButton.cs
+++ b/osu.Game/Overlays/Mods/ModButton.cs
@@ -283,7 +283,7 @@ namespace osu.Game.Overlays.Mods
Anchor = Anchor.TopCentre,
Font = OsuFont.GetFont(size: 18)
},
- new HoverClickSounds()
+ new HoverClickSounds(buttons: new[] { MouseButton.Left, MouseButton.Right })
};
Mod = mod;
diff --git a/osu.Game/Screens/Play/GameplayMenuOverlay.cs b/osu.Game/Screens/Play/GameplayMenuOverlay.cs
index c7e762714c..f93d5d8b02 100644
--- a/osu.Game/Screens/Play/GameplayMenuOverlay.cs
+++ b/osu.Game/Screens/Play/GameplayMenuOverlay.cs
@@ -304,8 +304,6 @@ namespace osu.Game.Screens.Play
private class Button : DialogButton
{
- protected override bool OnHover(HoverEvent e) => true;
-
protected override bool OnMouseMove(MouseMoveEvent e)
{
Selected.Value = true;
diff --git a/osu.Game/Skinning/SkinnableSprite.cs b/osu.Game/Skinning/SkinnableSprite.cs
index 0081aef520..4b78493e97 100644
--- a/osu.Game/Skinning/SkinnableSprite.cs
+++ b/osu.Game/Skinning/SkinnableSprite.cs
@@ -19,11 +19,23 @@ namespace osu.Game.Skinning
[Resolved]
private TextureStore textures { get; set; }
- public SkinnableSprite(ISkinComponent component, Func allowFallback = null, ConfineMode confineMode = ConfineMode.ScaleDownToFit)
- : base(component, allowFallback, confineMode)
+ public SkinnableSprite(string textureName, Func allowFallback = null, ConfineMode confineMode = ConfineMode.ScaleDownToFit)
+ : base(new SpriteComponent(textureName), allowFallback, confineMode)
{
}
protected override Drawable CreateDefault(ISkinComponent component) => new Sprite { Texture = textures.Get(component.LookupName) };
+
+ private class SpriteComponent : ISkinComponent
+ {
+ private readonly string textureName;
+
+ public SpriteComponent(string textureName)
+ {
+ this.textureName = textureName;
+ }
+
+ public string LookupName => textureName;
+ }
}
}
diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj
index 03207dfdf7..7d106f0484 100644
--- a/osu.Game/osu.Game.csproj
+++ b/osu.Game/osu.Game.csproj
@@ -14,7 +14,7 @@
-
+
diff --git a/osu.iOS.props b/osu.iOS.props
index ec76ceaf95..8390a2229b 100644
--- a/osu.iOS.props
+++ b/osu.iOS.props
@@ -117,7 +117,7 @@
-
+