Skip to content

aa - #131

Merged
winnerspiros merged 8 commits into
winnerspiros:masterfrom
ppy:master
Mar 31, 2026
Merged

aa#131
winnerspiros merged 8 commits into
winnerspiros:masterfrom
ppy:master

Conversation

@winnerspiros

@winnerspiros winnerspiros commented Mar 31, 2026

Copy link
Copy Markdown
Owner

Summary by Gitar

  • Bug fix:
    • Fixed editor not displaying beatmap background in certain scenarios

This will update automatically on new commits.

Summary by CodeRabbit

  • New Features

    • Added in-game chat display for ranked multiplayer matches
    • Added storyboard visibility toggle control
  • Improvements

    • Enhanced keybind display in editor toolbox
    • Improved accuracy challenge setting formatting
    • Customizable avatar loading behavior
  • Bug Fixes

    • Fixed scroll speed adjustments in Mania ruleset

evilldev and others added 8 commits March 31, 2026 03:34
In discussions, we've come to the conclusion to attempt to use a
chat-bubble system to minimise the effective area of the chat. In
particular, the results screen doesn't give us enough space to display
the full chat box without overlapping the main screen content.

This PR both adds the chat to the results screen, and reworks it to use
such a bubble system (not sure what to call it, IM style?).


https://github.com/user-attachments/assets/a8a88c51-8a9d-4a03-92b6-621112a15a41

- New messages are previewed for 3 seconds.
- When focusing and unfocusing the textbox, the history moves into
expanded state (show the most recent 10 messages) or collapsed state
(fade messages out ASAP).

This is a bit of an initial implementation to get a feel of how it
behaves, and there's more that can be done such as adding colours,
improving the transforms, perhaps adding it to the intro screen
(post-animation) but the structure's a bit weird atm.

---------

Co-authored-by: Dean Herbert <pe@ppy.sh>
- Closes #37055

In the editor, keybinds and the tooltip for the hitsounding section are
hardcoded. Since the keybind contains "Alt", this is inconsistent on
MacOS where "Opt" is used instead.

Before:
<img width="191" height="244" alt="image"
src="https://github.com/user-attachments/assets/749f9dd1-f037-4061-848e-44161913190d"
/>


After (MacOS only):
<img width="193" height="244" alt="image"
src="https://github.com/user-attachments/assets/c807a23d-225e-41ab-993a-df9230be58bc"
/>

---------

Co-authored-by: Dean Herbert <pe@ppy.sh>
The fix is just disabling the animation. It works I guess.

---

- Closes #37042

Currently in Mania, you can change the scroll speed for a brief period
during the beginning of a song. However this scroll speed change occurs
over a short period of time, which causes a bunch of extra hit object
updates, causing major fps and latency drops.

This fix simply replaces the dampening with an immediate scroll speed
update. Since the scroll speed can only be updated for a short time at
the beginning of the song, providing immediate visual feedback on the
scroll speed makes sense to me. However another potential solution would
be to filter the TimeRange Value updates to keep the gradual scroll
speed visual change, while greatly reducing the number of updates to the
hit objects currently on screen.

If there is any feedback I would greatly appreciate it as this is my
first issue here. I had ran both inspectCode.ps1 and the code formatter
before creating the merge request. Thank you.

Before fix:

https://github.com/user-attachments/assets/55e30894-7341-414a-af2e-2ec051c3a252

After fix:

https://github.com/user-attachments/assets/c085d33f-c0ae-45dd-8131-e79a5682b9ca

---------

Co-authored-by: Dean Herbert <pe@ppy.sh>
@winnerspiros
winnerspiros merged commit f8a86c7 into winnerspiros:master Mar 31, 2026
1 of 9 checks passed
@coderabbitai

coderabbitai Bot commented Mar 31, 2026

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7ebf526f-17df-40aa-9b85-b71a16b490e5

📥 Commits

Reviewing files that changed from the base of the PR and between fdfdb69 and 5c20254.

📒 Files selected for processing (16)
  • osu.Game.Rulesets.Mania/Edit/DrawableManiaEditorRuleset.cs
  • osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs
  • osu.Game.Tests/Visual/Navigation/TestSceneScreenNavigation.cs
  • osu.Game.Tests/Visual/RankedPlay/TestSceneBubbleChatHistory.cs
  • osu.Game.Tests/Visual/RankedPlay/TestSceneRankedPlayChat.cs
  • osu.Game/Graphics/Backgrounds/BeatmapBackgroundWithStoryboard.cs
  • osu.Game/Overlays/AfToggleSection.cs
  • osu.Game/Overlays/SettingsOverlay.cs
  • osu.Game/Rulesets/Edit/HitObjectComposer.cs
  • osu.Game/Rulesets/Mods/ModAccuracyChallenge.cs
  • osu.Game/Screens/Backgrounds/EditorBackgroundScreen.cs
  • osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/Components/RankedPlayChatDisplay.cs
  • osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/RankedPlayScreen.cs
  • osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs
  • osu.Game/Users/Drawables/UpdateableAvatar.cs
  • osu.Game/osu.Game.csproj

📝 Walkthrough

Walkthrough

This pull request introduces new ranked play chat functionality, refactors scroll time range management in Mania ruleset editors, adds storyboard visibility controls, updates background handling in editor screens, implements an April Fools' settings section with interactive toggle UI, and adds corresponding visual test scenes.

Changes

Cohort / File(s) Summary
Mania Scroll Time Updates
osu.Game.Rulesets.Mania/Edit/DrawableManiaEditorRuleset.cs, osu.Game.Rulesets.Mania/UI/DrawableManiaRuleset.cs
Removed smooth interpolation-based damping of scroll time range; now computes TimeRange.Value directly from TargetTimeRange multiplied by tempo/frequency factors instead of using Interpolation.DampContinuously(). Eliminated dependency on GameHost and currentTimeRange state.
Chat Test Scenes
osu.Game.Tests/Visual/RankedPlay/TestSceneBubbleChatHistory.cs, osu.Game.Tests/Visual/RankedPlay/TestSceneRankedPlayChat.cs
Added two new visual test scenes for ranked play chat: TestSceneBubbleChatHistory tests message posting and collapse/expand transitions; TestSceneRankedPlayChat tests chat at different ranked play stages (CardDiscard, Results) with damage/life state setup.
Ranked Play Chat Display
osu.Game.Screens/OnlinePlay/Matchmaking/RankedPlay/Components/RankedPlayChatDisplay.cs, osu.Game.Screens/OnlinePlay/Matchmaking/RankedPlay/RankedPlayScreen.cs
Introduced new RankedPlayChatDisplay component with bottom-right chat input, message history, slash command support, and focus/keyboard handling. Updated RankedPlayScreen to use new chat display with stage-based visibility lifecycle management.
Background & Storyboard Visibility
osu.Game/Graphics/Backgrounds/BeatmapBackgroundWithStoryboard.cs, osu.Game/Screens/Backgrounds/EditorBackgroundScreen.cs
Added public ShowStoryboard bindable to control storyboard visibility. Refactored EditorBackgroundScreen from imperative updateState() method to declarative binding, removing null-conditional operations and simplifying storyboard/background fade logic.
April Fools' Section
osu.Game/Overlays/AfToggleSection.cs, osu.Game/Overlays/SettingsOverlay.cs
Added new AfToggleSection with interactive toggle UI featuring randomized checkboxes that trigger visual effects (color fades, scaling, rotation, audio effects, bouncing sprites). Conditionally inserted into settings overlay on April 1st only.
Test Infrastructure & Avatars
osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs, osu.Game/Tests/Visual/Navigation/TestSceneScreenNavigation.cs, osu.Game/Users/Drawables/UpdateableAvatar.cs
Updated multiplayer test client to populate ChannelID in room initialization; updated scroll speed test assertion to read from TimeRange.Value instead of TargetTimeRange; added DelayedLoad field to control avatar load delay timing.
Minor Updates
osu.Game/Rulesets/Edit/HitObjectComposer.cs, osu.Game/Rulesets/Mods/ModAccuracyChallenge.cs, osu.Game/osu.Game.csproj
Dynamically format Shift/Alt key display in composer toolbox; use localisable string formatting for accuracy challenge setting; bump ppy.osu.Game.Resources dependency to 2026.331.0.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant RankedPlayScreen
    participant RankedPlayChatDisplay
    participant BubbleChatHistory
    participant ChatTextBox
    participant MultiplayerChannel

    User->>ChatTextBox: Focus / Click
    ChatTextBox->>RankedPlayChatDisplay: OnFocus()
    RankedPlayChatDisplay->>BubbleChatHistory: Expand()
    BubbleChatHistory-->>RankedPlayChatDisplay: History visible

    User->>ChatTextBox: Type & Enter message
    ChatTextBox->>RankedPlayChatDisplay: OnCommit()
    RankedPlayChatDisplay->>MultiplayerChannel: Send message
    MultiplayerChannel-->>RankedPlayChatDisplay: NewMessagesArrived
    RankedPlayChatDisplay->>BubbleChatHistory: PostMessage(user, content)
    BubbleChatHistory->>BubbleChatHistory: Animate message bubble
    BubbleChatHistory-->>User: Display bubble with avatar

    User->>ChatTextBox: Unfocus / Press Back
    ChatTextBox->>RankedPlayChatDisplay: OnUnfocus()
    RankedPlayChatDisplay->>BubbleChatHistory: Collapse()
    BubbleChatHistory-->>RankedPlayChatDisplay: History collapsed/hidden
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~65 minutes

Possibly related PRs

  • aa #107: Both PRs modify EditorBackgroundScreen's storyboard and background visibility control via binding-based declarative patterns rather than imperative state updates.

Poem

🐰 Whisker-twitch with April jest,
Chat bubbles dance at screen's behest,
Storyboards fade with bindings clear,
No damping tricks, just scrolls sincere,
A toggle spree when spring is near!

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot mentioned this pull request Apr 2, 2026
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants