mirror of
https://github.com/ppy/osu.git
synced 2024-09-22 12:47:25 +08:00
ee33f62809
If the skin is changed before gameplay has started (at the loading screen) it is possible for a sequence of events to occur which results in the animation not being played: - `SkinReloadableDrawable` runs its BDL load (and calls `OnSkinChanged` once) - User changes skin, triggering `DrawableJudgement`'s skin change handling (binding directly on the `SkinSource` locally) - This will call `PrepareDrawables` and reinitialise the `SkinnableDrawable` child hierarchy, then immediately apply the animations to it. - The new `SkinnableDrawable` will then get the `SkinChanged` event and schedule a handler for it, which will run on its first Update call. - Any added animations will be lost as a result. Fixed by binding directly to the `SkinnableDrawable`'s `OnSkinChanged`. This has the added bonus of not needing to reinitialise the child hierarchy on skin change (which felt a bit weird in the first place). |
||
---|---|---|
.. | ||
DefaultJudgementPiece.cs | ||
DrawableJudgement.cs | ||
IAnimatableJudgement.cs | ||
IgnoreJudgement.cs | ||
Judgement.cs | ||
JudgementResult.cs |