diff --git a/osu.Android.props b/osu.Android.props
index 219912425f..2c186a52dd 100644
--- a/osu.Android.props
+++ b/osu.Android.props
@@ -52,7 +52,7 @@
-
+
diff --git a/osu.Game.Rulesets.Catch.Tests/TestSceneCatchTouchInput.cs b/osu.Game.Rulesets.Catch.Tests/TestSceneCatchTouchInput.cs
new file mode 100644
index 0000000000..cbf6e8f202
--- /dev/null
+++ b/osu.Game.Rulesets.Catch.Tests/TestSceneCatchTouchInput.cs
@@ -0,0 +1,43 @@
+// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
+// See the LICENCE file in the repository root for full licence text.
+
+using NUnit.Framework;
+using osu.Framework.Graphics;
+using osu.Framework.Testing;
+using osu.Game.Rulesets.Catch.UI;
+using osu.Game.Tests.Visual;
+
+namespace osu.Game.Rulesets.Catch.Tests
+{
+ [TestFixture]
+ public class TestSceneCatchTouchInput : OsuTestScene
+ {
+ private CatchTouchInputMapper catchTouchInputMapper = null!;
+
+ [SetUpSteps]
+ public void SetUpSteps()
+ {
+ AddStep("create input overlay", () =>
+ {
+ Child = new CatchInputManager(new CatchRuleset().RulesetInfo)
+ {
+ RelativeSizeAxes = Axes.Both,
+ Children = new Drawable[]
+ {
+ catchTouchInputMapper = new CatchTouchInputMapper
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre
+ }
+ }
+ };
+ });
+ }
+
+ [Test]
+ public void TestBasic()
+ {
+ AddStep("show overlay", () => catchTouchInputMapper.Show());
+ }
+ }
+}
diff --git a/osu.Game.Rulesets.Catch/CatchInputManager.cs b/osu.Game.Rulesets.Catch/CatchInputManager.cs
index 86f35c8cee..5b62154a34 100644
--- a/osu.Game.Rulesets.Catch/CatchInputManager.cs
+++ b/osu.Game.Rulesets.Catch/CatchInputManager.cs
@@ -4,11 +4,13 @@
#nullable disable
using System.ComponentModel;
+using osu.Framework.Allocation;
using osu.Framework.Input.Bindings;
using osu.Game.Rulesets.UI;
namespace osu.Game.Rulesets.Catch
{
+ [Cached]
public class CatchInputManager : RulesetInputManager
{
public CatchInputManager(RulesetInfo ruleset)
diff --git a/osu.Game.Rulesets.Catch/UI/CatchTouchInputMapper.cs b/osu.Game.Rulesets.Catch/UI/CatchTouchInputMapper.cs
new file mode 100644
index 0000000000..e6736d6c93
--- /dev/null
+++ b/osu.Game.Rulesets.Catch/UI/CatchTouchInputMapper.cs
@@ -0,0 +1,277 @@
+// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
+// See the LICENCE file in the repository root for full licence text.
+
+using System.Collections.Generic;
+using System.Linq;
+using osu.Framework.Allocation;
+using osu.Framework.Graphics;
+using osu.Framework.Graphics.Containers;
+using osu.Framework.Graphics.Shapes;
+using osu.Framework.Input.Bindings;
+using osu.Framework.Input.Events;
+using osu.Game.Graphics;
+using osuTK;
+using osuTK.Input;
+
+namespace osu.Game.Rulesets.Catch.UI
+{
+ public class CatchTouchInputMapper : VisibilityContainer
+ {
+ public override bool PropagatePositionalInputSubTree => true;
+ public override bool PropagateNonPositionalInputSubTree => true;
+
+ private readonly Dictionary
-
+
@@ -84,7 +84,7 @@
-
+