You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The combo colours will correctly not change in the composer, but will incorrectly reverse in the timeline (but will fix themselves on deselect)
See video below.
This is happening because combo colour lookup is broken. TimelineHitObjectBlueprint is attempting to subscribe to changes of everything that can change in IHasComboInformation:
/// The index to use for deciding the combo colour.
/// </summary>
publicreadonlyintColourIndex;
/// <summary>
/// The combo information requesting the colour.
/// </summary>
publicreadonlyIHasComboInformationCombo;
@frenzibyte your name appears to be on a lot of this in blame so maybe you can look at it. Just please hold your horses with complexity. I'd even advocate for nuking that colour thing and putting that IndexInBeatmap in IHasComboInformation.
Screenshots or videos
2024-03-28.11-41-15.remuxed.mp4
Version
latest master
Logs
n/a
The text was updated successfully, but these errors were encountered:
Incorporating IndexInBeatmap in IHasComboInformation feels meh, especially since the logic would have be moved from CatchBeatmapProcessor to UpdateComboInformation and process it as if it's actually "combo information" while it's not. It's possible to implement, but feels quite awkward.
I was curious to check how stable behaves on catch with regards to colours, and so far it appears that stable in practice always assigns a different combo colour for each hit object regardless of any factor, unlike lazer which...incorrectly uses ComboIndexWithOffsets if beatmap skin/colours are enabled. That is a separate issue, however.
Point is, it's probably much saner to define a separate path for fruit hit objects to be assigned colours and reflect that on the timeline. I'm imagining something like this:
// implemented by osu! hit objects solelypublicinterfaceIHasColourByComboIndex:IHasComboInformation{// combo index with offsets will exist here because it's purely cosmetic and doesn't make sense to exist in CatchHitObjects.Bindable<int> ComboIndexWithOffsetsBindable {get;}intComboIndexWithOffsets{get;set;}
Color4 GetColour(ISkinskin)=> skin.GetHitObjectColour(ComboIndex, ComboIndexWithOffsets);}// implemented by catch hit objects solelypublicinterfaceIHasColourByIndexInBeatmap{Bindable<int> IndexInBeatmapBindable {get;}intIndexInBeatmap{get;set;}// assuming colour hax applies to osu!catch, and that index in beatmap is incremented by the legacy "ConvertHitObject.ComboOffset" field.Bindable<int> IndexInBeatmapWithOffsetsBindable {get;}intIndexInBeatmapWithOffsets{get;set;}
Color4 GetColour(ISkinskin)=> skin.GetHitObjectColour(IndexInBeatmap, IndexInBeatmapWithOffsets);}// skin.GetHitObjectColour would be an extension method(?) that takes in two indices, one with colour hax and one without, and performs the lookup with those indices.
I will see where this structure takes me and report back about it, but I'm fine with stepping back at any point and go on with moving IndexInBeatmap to IHasComboInformation to keep everything simple, but I would need confirmation from others that it's a fine step to take for the sake of less complexity.
I was interested to see how stable has the "IndexInBeatmap" part working, but I could not easily find it.
Type
Cosmetic
Bug description
Reproduction steps:
See video below.
This is happening because combo colour lookup is broken.
TimelineHitObjectBlueprint
is attempting to subscribe to changes of everything that can change inIHasComboInformation
:osu/osu.Game/Screens/Edit/Compose/Components/Timeline/TimelineHitObjectBlueprint.cs
Lines 143 to 156 in 21201e6
but catch has this thing:
osu/osu.Game.Rulesets.Catch/Objects/CatchHitObject.cs
Lines 80 to 84 in 21201e6
which
TimelineHitObjectBlueprint
physically cannot be aware of because it's a ruleset-only property.I find it really weird that this sort of flow was allowed to exist in the first place:
osu/osu.Game/Skinning/SkinComboColourLookup.cs
Lines 10 to 18 in 21201e6
@frenzibyte your name appears to be on a lot of this in blame so maybe you can look at it. Just please hold your horses with complexity. I'd even advocate for nuking that colour thing and putting that
IndexInBeatmap
inIHasComboInformation
.Screenshots or videos
2024-03-28.11-41-15.remuxed.mp4
Version
latest master
Logs
n/a
The text was updated successfully, but these errors were encountered: