Skip to content

Add adjustable rhythm-based colouring to osu!mania - #38495

Open
prplnorangesoda wants to merge 4 commits into
ppy:masterfrom
prplnorangesoda:beatsnap-colours
Open

Add adjustable rhythm-based colouring to osu!mania#38495
prplnorangesoda wants to merge 4 commits into
ppy:masterfrom
prplnorangesoda:beatsnap-colours

Conversation

@prplnorangesoda

Copy link
Copy Markdown

As proposed in #38481. i did not use AI so if the code looks shit it's my fault

adds new items to the [Colours] section of skin.ini, SnapDefault and Snap{divisor} that affect how notes are coloured when the Timing-based note colouring option is enabled. if SnapDefault is specified, unspecified snap colours fall back to that colour, otherwise falls back to default snap colours
syntax:

[Colours]
SnapDefault: 255, 255, 255
Snap1: 255, 0, 0
Snap2: 0, 0, 255
Snap3: 0, 255, 0
image image

notably, allows support for stepmania-style colouring:

image

currently does not work with the Synesthesia mod, pending feedback.

implementation details: reinherits the osu!mania skinning scene component to ManiaSkinnableTestSceneScrolling as the snap colouring test uses the same base logic but does not scroll. adds just one new test scene that checks if the notes are coloured correctly. map editor code and Synesthesia mod code still points to BindableBeatDivisor.GetColourFor but renamed to GetDefaultColourFor to be more accurate

i'd like to know if there is a better way of implementing the snap colours in SkinConfiguration as the default list code is pretty dodgy and isn't const because the code ported from BindableBeatDivisor is reliant on an OsuColour.

Comment thread osu.Game/Skinning/LegacySkinEncoder.cs Fixed
Comment thread osu.Game/Skinning/SkinConfiguration.cs Fixed
Comment thread osu.Game/Skinning/SkinConfiguration.cs Fixed
Comment thread osu.Game/Skinning/SkinConfiguration.cs Fixed
Comment thread osu.Game/Skinning/SkinConfiguration.cs Fixed
@prplnorangesoda

Copy link
Copy Markdown
Author

sorry about the inspectcode spam, my local script isn't working for some reason 🥲

@bdach bdach added the subjective PRs with subjective changes which have not been discussed prior. Need team consensus to proceed. label Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/L subjective PRs with subjective changes which have not been discussed prior. Need team consensus to proceed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants