-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Add skin support for sliderpoint10 and sliderpoint30 #34606
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
Conversation
Because it may display sliderpoints in classic behaviour
|
For what it's worth, is it going to be enabled only on classic mod with a very old legacy skin? (Looking at Elite Beat Osu) |
as in stable, they display only when the legacy skin version = 1 |
osu.Game.Rulesets.Osu/Skinning/Legacy/LegacySliderTickJudgementPiece.cs
Outdated
Show resolved
Hide resolved
|
|
||
| return base.GetDrawableComponent(lookup); | ||
|
|
||
| // If slider points are showing and tick misses aren't provided by this skin, don't look up tick misses from any further skins. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this seems like a very arbitrary decision, not sure what to think about it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah it's just my opinion for what looks good. before I added this part, I thought it looked awkward for old skins to be displaying their own sliderpoints on hits alongside the now-default miss texture (or at least the skins I was using clashed pretty hard there). and in this case, the lack of a sliderpoint basically is the miss indicator anyway
osu.Game.Rulesets.Osu.Tests/TestSceneDrawableJudgementSliderTicks.cs
Outdated
Show resolved
Hide resolved
| OsuHitObject hitObject = hitObjectIndex switch | ||
| { | ||
| 0 => new SliderHeadCircle { StartTime = Time.Current, ClassicSliderBehaviour = classic }, | ||
| 1 => new SliderTick { StartTime = Time.Current }, | ||
| 2 => new SliderRepeat(slider) { StartTime = Time.Current }, | ||
| 3 => new SliderTailCircle(slider) { StartTime = Time.Current, ClassicSliderBehaviour = classic }, | ||
| 4 => slider, | ||
| _ => throw new UnreachableException(), | ||
| }; | ||
|
|
||
| DrawableOsuHitObject drawableHitObject = hitObject switch | ||
| { | ||
| SliderHeadCircle head => new DrawableSliderHead(head), | ||
| SliderTick tick => new DrawableSliderTick(tick), | ||
| SliderRepeat repeat => new DrawableSliderRepeat(repeat), | ||
| SliderTailCircle tail => new DrawableSliderTail(tail), | ||
| Slider s => new DrawableSlider(s), | ||
| _ => throw new UnreachableException(), | ||
| }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we don't use this syntax in the project, please use plain switch
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed, is that just a style thing or there's some other reason?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not universally accepted by everyone so the consensus is to just not use it
osu.Game.Rulesets.Osu.Tests/TestSceneDrawableJudgementSliderTicks.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seems to work on a single random v1 skin I pulled from the forums, and the other skins don't look broken, so
was hoping this would be a super simple one but of course it didn't turn out that way π
there's two things I'm unsure of:
first, the(fixed by changing where 10/30 appear to correspond to lazer's hit results directly)IAppliesJudgementResultthing -- this was my solution to the problem ofHitResultnot containing enough information to decide betweensliderpoint10andsliderpoint30(for LargeTickHit, it could be either). it works as long asDrawableJudgement.Apply()is called again after the skinned judgement finishes loading, which is the case in normal usage of pooled judgements, but idk it just seems a bit finicky to me. it also required me to handle both textures in the same skin lookup, see my comment inOsuLegacySkinTransformerfwiw, this same problem came up in what will be my next PR for geki and katu support. at the moment I'm using the same interface with the same drawbacks there.
second, I just can't figure out what's wrong with the "slider" case of the test scene. see the "TODO" comment there. I spent too long getting nowhere with fixing that so I'm hoping it'll be easier to identify the issue for someone with more experience on the project...(fixed by bdach)