Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apply combo offsets "colour hax" only on beatmap skins #12683

Merged
merged 21 commits into from
Jul 23, 2021

Conversation

frenzibyte
Copy link
Member

@frenzibyte frenzibyte commented May 5, 2021

frenzibyte added 3 commits May 5, 2021 14:23
Better suited there, I intiailly wanted the whole legacy interface to reside in `osu.Game.Rulesets.Osu` but it's required in `ConvertHitObjectParser` and that's in the main game project, so had to leave the interface as-is for now.
I literally noticed it after I pushed, god damn it.
@smoogipoo
Copy link
Contributor

I really don't like this addition of a completely separate "legacy" pathway for not just a combo offset but the combo index in its entirety. I say "legacy" because this doesn't look legacy at all, but the standard for osu! hitobjects. This is the first time we've added legacy things to non-convert hitobjects too.

Furthermore, there's no linking between the "real" combo index and the "legacy" combo index. What happens when the editor changes the combo index? Does it save correctly? Is the editor still going to allow setting a combo offset?

This needs more encapsulation, because it's going to be very prone to failures as it is. I have no suggestions yet because this is a very complex interaction.

@frenzibyte
Copy link
Member Author

I really don't like this addition of a completely separate "legacy" pathway for not just a combo offset but the combo index in its entirety. I say "legacy" because this doesn't look legacy at all, but the standard for osu! hitobjects. This is the first time we've added legacy things to non-convert hitobjects too.

Alternatively, I could add the offset back along with an index to follow for it if you think it's fine, it's just that I'm not sure it should return as their usual names, and what the special index would be named.

I could add another interface IHasBeatmapSkinComboInformation if that'll make more sense.

Furthermore, there's no linking between the "real" combo index and the "legacy" combo index. What happens when the editor changes the combo index? Does it save correctly? Is the editor still going to allow setting a combo offset?

The "real" combo index and "legacy" combo index are kept pretty internal away from the editor or anything else, the editor should only have access to changing the combo offset, if the edited beatmap is a legacy beatmap in the current case.

This needs more encapsulation, because it's going to be very prone to failures as it is. I have no suggestions yet because this is a very complex interaction.

From which side do you think it's going to be prone to failures? I've encapsulated this as much as keeping it away from anything, just an interface that objects can have it assigned to them for the LegacyBeatmapSkin to internally use combo colours on the special offset combo indices instead.

@frenzibyte
Copy link
Member Author

@smoogipoo since you don't like the direction this PR is currently heading, shall I instead close it and leave the underlying issue for you to resolve when you have the time for it? or do you see this potentially being mergeable with some changes and I should leave it open?

@smoogipoo
Copy link
Contributor

I've been waiting for @peppy to take a look into this PR and see if he has any better suggestions. Fine to keep open until then.

@peppy
Copy link
Member

peppy commented Jul 19, 2021

@frenzibyte want to bring this up-to-date if that's not too much trouble? i'll review it tomorrow.

@frenzibyte
Copy link
Member Author

Conflicts were straightforward, all bumped to latest master now.

@frenzibyte frenzibyte changed the title Apply combo offsets "colour hax" only on legacy beatmap skins Apply combo offsets "colour hax" only on beatmap skins Jul 20, 2021
@peppy
Copy link
Member

peppy commented Jul 21, 2021

I've made some minor refactors and renames to this, and I think it's in a state I'm happy to move forward with.

@smoogipoo the point you made about this potentially falling apart when support is added to the editor still stands, but I think this may be able to be resolved using a simple bindable flow. I don't think it's important for the time being. Can you take a 5 minute read through this PR's current state and make sure you're willing to turn a blind eye for the time being?

peppy
peppy previously approved these changes Jul 21, 2021
@smoogipoo
Copy link
Contributor

It looks fine.

@peppy
Copy link
Member

peppy commented Jul 21, 2021

I don't believe this is working as expected, checking with the original issue's beatmap:

20210721 174205 (dotnet)

This looks wrong, right?

https://dev.ppy.sh/beatmapsets/235093#osu/544994

@peppy peppy dismissed their stale review July 21, 2021 08:44

Is actually broken?

@frenzibyte
Copy link
Member Author

frenzibyte commented Jul 21, 2021

Turns out there was this hidden logic in HitObject that binds the ComboIndexBindable of the nested objects to itself, while one doesn't exist for ComboIndexWithOffsets and therefore the nested objects of the slider have the wrong colours.

Will fix and bundle that case with the existing test cases.

@peppy peppy merged commit 50a2abb into ppy:master Jul 23, 2021
@frenzibyte frenzibyte deleted the legacy-beatmap-combo-offset branch July 23, 2021 05:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Disabling beatmap skins option does not fully disable beatmap's combo colors
4 participants