diff --git a/build/Build.csproj b/build/Build.csproj index 6bd8993..8e4472f 100644 --- a/build/Build.csproj +++ b/build/Build.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp5.0 + netcoreapp6.0 true diff --git a/osu.Game.Rulesets.Gamebosu.Tests/Screens/Selection/TestSceneRomSelector.cs b/osu.Game.Rulesets.Gamebosu.Tests/Screens/Selection/TestSceneRomSelector.cs index 29ceed1..c1284f5 100644 --- a/osu.Game.Rulesets.Gamebosu.Tests/Screens/Selection/TestSceneRomSelector.cs +++ b/osu.Game.Rulesets.Gamebosu.Tests/Screens/Selection/TestSceneRomSelector.cs @@ -3,6 +3,7 @@ using NUnit.Framework; using osu.Framework.Input.Events; +using osu.Game.Rulesets.Gamebosu.UI.Input; using osu.Game.Rulesets.Gamebosu.UI.Screens.Selection; using osu.Game.Tests.Visual; using System.Linq; diff --git a/osu.Game.Rulesets.Gamebosu/GamebosuRuleset.cs b/osu.Game.Rulesets.Gamebosu/GamebosuRuleset.cs index 692d165..3f125e8 100644 --- a/osu.Game.Rulesets.Gamebosu/GamebosuRuleset.cs +++ b/osu.Game.Rulesets.Gamebosu/GamebosuRuleset.cs @@ -13,6 +13,7 @@ using osu.Game.Rulesets.Gamebosu.Graphics; using osu.Game.Rulesets.Gamebosu.UI; using osu.Game.Rulesets.Gamebosu.UI.Configuration; +using osu.Game.Rulesets.Gamebosu.UI.Input; using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.UI; diff --git a/osu.Game.Rulesets.Gamebosu/Replays/GamebosuReplayFrame.cs b/osu.Game.Rulesets.Gamebosu/Replays/GamebosuReplayFrame.cs index 9304d79..1ec0ab2 100644 --- a/osu.Game.Rulesets.Gamebosu/Replays/GamebosuReplayFrame.cs +++ b/osu.Game.Rulesets.Gamebosu/Replays/GamebosuReplayFrame.cs @@ -1,6 +1,7 @@ // gamebosu! ruleset. Copyright Lucas ARRIESSE aka Game4all. Licensed under GPLv3. // See LICENSE at root of repo for more information on licensing. +using osu.Game.Rulesets.Gamebosu.UI.Input; using osu.Game.Rulesets.Replays; using System.Collections.Generic; diff --git a/osu.Game.Rulesets.Gamebosu/UI/DrawableGamebosuRuleset.cs b/osu.Game.Rulesets.Gamebosu/UI/DrawableGamebosuRuleset.cs index 14d727f..eb3bdad 100644 --- a/osu.Game.Rulesets.Gamebosu/UI/DrawableGamebosuRuleset.cs +++ b/osu.Game.Rulesets.Gamebosu/UI/DrawableGamebosuRuleset.cs @@ -32,7 +32,7 @@ public DrawableGamebosuRuleset(GamebosuRuleset ruleset, IBeatmap beatmap, IReadO public override DrawableHitObject CreateDrawableRepresentation(GamebosuHitObject h) => new DrawableGamebosuHitObject(h); - protected override PassThroughInputManager CreateInputManager() => new GamebosuInputManager(Ruleset?.RulesetInfo); + protected override PassThroughInputManager CreateInputManager() => new PassThroughInputManager(); public override bool AllowGameplayOverlays => false; } diff --git a/osu.Game.Rulesets.Gamebosu/UI/Gameboy/DrawableGameboy.cs b/osu.Game.Rulesets.Gamebosu/UI/Gameboy/DrawableGameboy.cs index 5edec94..62b144f 100644 --- a/osu.Game.Rulesets.Gamebosu/UI/Gameboy/DrawableGameboy.cs +++ b/osu.Game.Rulesets.Gamebosu/UI/Gameboy/DrawableGameboy.cs @@ -15,6 +15,7 @@ using osu.Framework.Logging; using osu.Game.Rulesets.Gamebosu.Audio; using osu.Game.Rulesets.Gamebosu.Configuration; +using osu.Game.Rulesets.Gamebosu.UI.Input; using System.Collections.Generic; using System.Linq; diff --git a/osu.Game.Rulesets.Gamebosu/GamebosuInputManager.cs b/osu.Game.Rulesets.Gamebosu/UI/Input/GamebosuAction.cs similarity index 55% rename from osu.Game.Rulesets.Gamebosu/GamebosuInputManager.cs rename to osu.Game.Rulesets.Gamebosu/UI/Input/GamebosuAction.cs index c0b338f..c271449 100644 --- a/osu.Game.Rulesets.Gamebosu/GamebosuInputManager.cs +++ b/osu.Game.Rulesets.Gamebosu/UI/Input/GamebosuAction.cs @@ -1,20 +1,7 @@ -// gamebosu! ruleset. Copyright Lucas ARRIESSE aka Game4all. Licensed under GPLv3. -// See LICENSE at root of repo for more information on licensing. +using System.ComponentModel; -using osu.Framework.Input.Bindings; -using osu.Game.Rulesets.UI; -using System.ComponentModel; - -namespace osu.Game.Rulesets.Gamebosu +namespace osu.Game.Rulesets.Gamebosu.UI.Input { - public class GamebosuInputManager : RulesetInputManager - { - public GamebosuInputManager(RulesetInfo ruleset) - : base(ruleset, 0, SimultaneousBindingMode.Unique) - { - } - } - public enum GamebosuAction { [Description("DPad Right")] @@ -47,4 +34,4 @@ public enum GamebosuAction [Description("Decrement clock rate")] ButtonDecrementClockRate } -} \ No newline at end of file +} diff --git a/osu.Game.Rulesets.Gamebosu/UI/Input/GamebosuInputManager.cs b/osu.Game.Rulesets.Gamebosu/UI/Input/GamebosuInputManager.cs new file mode 100644 index 0000000..ccc102c --- /dev/null +++ b/osu.Game.Rulesets.Gamebosu/UI/Input/GamebosuInputManager.cs @@ -0,0 +1,46 @@ +// gamebosu! ruleset. Copyright Lucas ARRIESSE aka Game4all. Licensed under GPLv3. +// See LICENSE at root of repo for more information on licensing. + +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Input; +using osu.Framework.Input.Bindings; +using osu.Game.Input; +using osu.Game.Input.Bindings; +using System.Linq; + +namespace osu.Game.Rulesets.Gamebosu.UI.Input +{ + public class GamebosuInputManager : PassThroughInputManager + { + private readonly RulesetKeyBindingContainer keybindingContainer; + + protected override Container Content => content; + + private readonly Container content; + + public GamebosuInputManager(RulesetInfo ruleset) + { + InternalChild = (keybindingContainer = new RulesetKeyBindingContainer(ruleset, 0, SimultaneousBindingMode.All).WithChild(content = new Container + { + RelativeSizeAxes = Axes.Both + })); + } + + private class RulesetKeyBindingContainer : DatabasedKeyBindingContainer + { + protected override bool HandleRepeats => false; + + public RulesetKeyBindingContainer(RulesetInfo ruleset, int variant, SimultaneousBindingMode unique) + : base(ruleset, variant, unique, KeyCombinationMatchingMode.Any) + { + } + + protected override void ReloadMappings() + { + base.ReloadMappings(); + KeyBindings = KeyBindings.Where((IKeyBinding b) => RealmKeyBindingStore.CheckValidForGameplay(b.KeyCombination)).ToList(); + } + } + } +} \ No newline at end of file diff --git a/osu.Game.Rulesets.Gamebosu/UI/Screens/DisclaimerSubScreen.cs b/osu.Game.Rulesets.Gamebosu/UI/Screens/DisclaimerSubScreen.cs index 4e3a4e4..2adf476 100644 --- a/osu.Game.Rulesets.Gamebosu/UI/Screens/DisclaimerSubScreen.cs +++ b/osu.Game.Rulesets.Gamebosu/UI/Screens/DisclaimerSubScreen.cs @@ -13,6 +13,7 @@ using osu.Framework.Utils; using osu.Game.Graphics; using osu.Game.Graphics.Containers; +using osu.Game.Rulesets.Gamebosu.UI.Input; using osuTK.Graphics; using System; diff --git a/osu.Game.Rulesets.Gamebosu/UI/Screens/GamebosuMainScreen.cs b/osu.Game.Rulesets.Gamebosu/UI/Screens/GamebosuMainScreen.cs index 5f01803..0153e5a 100644 --- a/osu.Game.Rulesets.Gamebosu/UI/Screens/GamebosuMainScreen.cs +++ b/osu.Game.Rulesets.Gamebosu/UI/Screens/GamebosuMainScreen.cs @@ -10,6 +10,7 @@ using osu.Game.Audio.Effects; using osu.Game.Rulesets.Gamebosu.Configuration; using osu.Game.Rulesets.Gamebosu.IO; +using osu.Game.Rulesets.Gamebosu.UI.Input; namespace osu.Game.Rulesets.Gamebosu.UI.Screens { diff --git a/osu.Game.Rulesets.Gamebosu/UI/Screens/Gameplay/ClockRateIndicatorControlReceptor.cs b/osu.Game.Rulesets.Gamebosu/UI/Screens/Gameplay/ClockRateIndicatorControlReceptor.cs index 111846b..b2d34ce 100644 --- a/osu.Game.Rulesets.Gamebosu/UI/Screens/Gameplay/ClockRateIndicatorControlReceptor.cs +++ b/osu.Game.Rulesets.Gamebosu/UI/Screens/Gameplay/ClockRateIndicatorControlReceptor.cs @@ -1,6 +1,7 @@ using osu.Framework.Graphics; using osu.Framework.Input.Bindings; using osu.Framework.Input.Events; +using osu.Game.Rulesets.Gamebosu.UI.Input; using System; namespace osu.Game.Rulesets.Gamebosu.UI.Screens.Gameplay diff --git a/osu.Game.Rulesets.Gamebosu/UI/Screens/Selection/RomSelector.cs b/osu.Game.Rulesets.Gamebosu/UI/Screens/Selection/RomSelector.cs index 5473085..6a1cf12 100644 --- a/osu.Game.Rulesets.Gamebosu/UI/Screens/Selection/RomSelector.cs +++ b/osu.Game.Rulesets.Gamebosu/UI/Screens/Selection/RomSelector.cs @@ -10,6 +10,7 @@ using osu.Framework.Graphics.Sprites; using osu.Framework.Input.Bindings; using osu.Framework.Input.Events; +using osu.Game.Rulesets.Gamebosu.UI.Input; using System; using System.Collections.Generic; using System.Linq;