Bartłomiej Dach
ab01fa6d45
Add xmldoc to APIAccess.APIVersion
2024-05-29 14:10:07 +02:00
Bartłomiej Dach
cc13655617
Derive API response version from game version
...
(Or local date, in the case of non-deployed builds).
Came up when I was looking at https://github.com/ppy/osu-web/pull/11240
and found that we were still hardcoding this.
Thankfully, this *should not* cause issues, since there don't seem to be
any (documented or undocumented) API response version checks for
versions newer than 20220705 in osu-web master.
For clarity and possible debugging needs, the API response version is
also logged.
2024-05-29 14:10:01 +02:00
Bartłomiej Dach
a6c776dac8
Use hopefully safer implementation of anchoring judgements to objects
2024-05-29 11:11:43 +02:00
Bartłomiej Dach
7b7e439d03
Merge branch 'master' into scale-tool
2024-05-29 10:15:48 +02:00
Bartłomiej Dach
9477e3b67d
Change editor scale hotkey to Ctrl-E
...
Forgot that Ctrl-T was taken by the game-global toolbar already, so it
wasn't working.
2024-05-29 10:14:47 +02:00
Bartłomiej Dach
4c881b5633
Use better name if we're renaming
2024-05-29 09:40:29 +02:00
Aurelian
542809a748
Reduced subpoints limit to be a more practical value
2024-05-29 09:39:46 +02:00
Dan Balasescu
655b0f5343
Merge branch 'master' into negative-frame-handling
2024-05-29 13:14:59 +09:00
OliBomby
d143a697d2
refactor CanScaleFromPlayfieldOrigin and GetClampedScale to derived class
2024-05-28 17:12:16 +02:00
OliBomby
8eb23f8a60
remove redundant CanScaleFromSelectionOrigin
2024-05-28 16:19:57 +02:00
OliBomby
a89ba33b47
rename CanScaleSelectionOrigin/PlayfieldOrigin to make clear its not the origin being scaled
2024-05-28 16:14:16 +02:00
OliBomby
36453f6215
Change scale hotkey to Ctrl+T
2024-05-28 15:56:59 +02:00
Dean Herbert
c2e7cdfdcc
Update framework
2024-05-28 21:29:29 +09:00
Dean Herbert
8c4931eeec
Merge branch 'master' into footer-v2-transitions
2024-05-28 18:49:39 +09:00
Dean Herbert
4408039b3e
Merge branch 'master' into footer-v2-back-button
2024-05-28 15:50:34 +09:00
Dan Balasescu
e2b4e25ffa
Merge pull request #28277 from bdach/total-score-without-mods-once-more
...
Compute total score without mods during standardised score conversion
2024-05-28 07:49:27 +09:00
Aurelian
6c4def1c09
Added check for infinite subpoints for PerfectCurve
2024-05-27 20:32:18 +02:00
Bartłomiej Dach
daee363743
Merge branch 'master' into total-score-without-mods-once-more
2024-05-27 15:16:58 +02:00
Bartłomiej Dach
405c72c0d6
Fix mod display not being aligned with mapper text
2024-05-27 13:36:44 +02:00
Dean Herbert
aad0982e26
Adjust size of play button / progress to match BeatmapCardThumbnail
usage
2024-05-27 20:33:24 +09:00
Dean Herbert
75d961e6f2
Pass the same thing in twice for better maybe
2024-05-27 20:30:01 +09:00
Dean Herbert
d976224912
Standardise padding on both sides of difficulty icon
2024-05-27 19:59:25 +09:00
Bartłomiej Dach
1e2cac3e92
Remove unused using directive
2024-05-27 11:44:55 +02:00
Dean Herbert
740a3377fa
Merge branch 'master' into LeaderBoardScore_clean
2024-05-27 17:18:41 +09:00
Dean Herbert
b6471f0b9c
Allow previewing audio of playlist items
2024-05-27 17:09:37 +09:00
Bartłomiej Dach
bdfce4b9da
Fix xmldoc reference
2024-05-27 08:26:00 +02:00
Dean Herbert
11c3d11db9
Fix cinema mod not hiding playfield skin layer
2024-05-27 14:52:28 +09:00
Joseph Madamba
8e14c24ee3
Follow slanted flow logic precedent in test
...
See `ModSelectOverlay` components.
2024-05-26 00:24:03 -07:00
OliBomby
37530eebcc
Enable scale buttons at the correct times
2024-05-25 20:35:06 +02:00
OliBomby
4eeebdf60c
calculate max scale bounds for scale slider
2024-05-25 20:17:27 +02:00
OliBomby
88314dc584
select all input text on popup for an easy typing experience
2024-05-25 18:41:31 +02:00
OliBomby
6aa92bcc45
Add simple scale tool
2024-05-25 18:31:19 +02:00
Salman Ahmed
2c18c10ac8
Move to SelectV2
namespace
2024-05-25 17:20:10 +03:00
Salman Ahmed
d395c85418
Adjust right content width based on scoring mode
2024-05-25 17:16:41 +03:00
Salman Ahmed
5955378004
Replace "X mods" text with a pill indicator
2024-05-25 16:11:24 +03:00
Andrei Zavatski
1e90e5e38e
Use sb element path as a name
2024-05-25 13:24:25 +03:00
Salman Ahmed
35af518fdb
Remove expanded/contracted states and limit to 5 mods
...
Also adjusts right content width to contain those 5 mods. Not sure how to handle the extra space in the score though...to be dealt with later.
2024-05-25 12:52:48 +03:00
OliBomby
497701950d
fix nitpick
2024-05-24 18:11:28 +02:00
Dean Herbert
2134ff7a1b
Merge pull request #28071 from Fabiano1337/lazer-speedkeys
...
Make ctrl-up/down change speed modifier of mods
2024-05-24 23:20:04 +09:00
Bartłomiej Dach
9f19ab092d
Merge branch 'master' into grids-1
2024-05-24 14:39:55 +02:00
Aurelian
b2c4e0e951
Reworked linear line check, and optimized scaled flat slider test
2024-05-24 14:05:56 +02:00
Bartłomiej Dach
c800bb5339
Merge branch 'master' into lazer-speedkeys
2024-05-24 13:19:26 +02:00
Bartłomiej Dach
cab8cf7410
Move mod speed hotkey handler to user mod select overlay
...
The very base class is the wrong place for it because
`FreeModSelectOverlay` inherits from it, and that one has different
assumptions and rules than "user" selection. In particular, in non-user
selection, more than one rate adjust mod may be active, which breaks the
mod speed hotkey's basic assumptions.
2024-05-24 13:14:06 +02:00
Bartłomiej Dach
b1b207960a
Actually use return value
2024-05-24 13:09:44 +02:00
Bartłomiej Dach
8cac87e496
Fix speed controls in mod select overlay not handling repeat
2024-05-24 13:09:07 +02:00
Bartłomiej Dach
345fb60679
Fix toast strings
2024-05-24 13:08:17 +02:00
Bartłomiej Dach
63406b6feb
Rewrite implementation
2024-05-24 13:03:42 +02:00
Bartłomiej Dach
7255cc3344
Fix tests dying on a nullref
2024-05-24 11:25:29 +02:00
Bartłomiej Dach
807d982a72
Move workaround to subscreen
2024-05-24 10:35:33 +02:00
Bartłomiej Dach
a80dbba9d0
Update to not use obsoleted method
2024-05-24 10:35:31 +02:00
Bartłomiej Dach
4089071299
Merge branch 'master' into fix-editor-didnt-save
2024-05-24 10:16:46 +02:00
Aurelian
fff52be59a
Addressed code quality issues
2024-05-24 09:30:24 +02:00
Aurelian
d948e0fc5c
Nearly straight sliders are treated as linear
2024-05-24 08:26:17 +02:00
Bartłomiej Dach
8a2dd4d816
Merge branch 'master' into scaling
2024-05-23 15:10:40 +02:00
Bartłomiej Dach
128029e2af
Fix aspect ratio lock applying when shift pressed on a non-corner anchor
...
It doesn't make sense and it wasn't doing the right thing.
2024-05-23 15:08:43 +02:00
Bartłomiej Dach
ac5c031a3a
Simplify original state management in skin selection scale handler
2024-05-23 15:01:28 +02:00
Bartłomiej Dach
9e86a08405
Simplify scale origin computation
2024-05-23 14:07:43 +02:00
Bartłomiej Dach
070668c96f
Use ShiftPressed
instead of explicitly checking both physical keys
...
Not only is this simpler, but it also is more correct (for explanation
why, try holding both shift keys while dragging, and just releasing one
of them - the previous code would briefly turn aspect ratio off).
2024-05-23 13:57:34 +02:00
Bartłomiej Dach
bfa23ec7a4
Fix main menu button animation not playing on initial show
2024-05-23 11:46:48 +02:00
Dean Herbert
357e55ae1f
Make gradient layer a bit more dynamic
2024-05-23 17:39:59 +08:00
Dean Herbert
a3639e0ce3
Remove unused field
2024-05-23 17:19:11 +08:00
Dean Herbert
88a2f74326
Adjust animation
2024-05-23 16:00:23 +08:00
Dean Herbert
f85a1339d9
Unload daily challenge background less aggressively
2024-05-23 14:23:02 +08:00
Dean Herbert
6c37560842
Merge branch 'master' into daily-challenge-mvp
2024-05-23 10:57:05 +08:00
Dean Herbert
ae27fc6944
Merge pull request #28200 from Hecatia-Lapislazuli/max-cs-scaling
...
Enforce difficulty setting limits during decode
2024-05-23 09:30:15 +08:00
Dean Herbert
fd9f8bd3e0
Update framework
2024-05-23 01:21:12 +08:00
Dean Herbert
73cb363eba
Make some more methods static
2024-05-22 23:26:23 +08:00
Bartłomiej Dach
f7ca18b52e
Menial cleanups
2024-05-22 15:52:57 +02:00
Dean Herbert
66ceda1d67
Update focus specifications in line with framework changes
2024-05-22 21:32:49 +08:00
Dean Herbert
8d02ac5e21
Update framework
2024-05-22 21:20:34 +08:00
Fabian van Oeffelt
0df634574f
Improve readability
2024-05-22 13:59:33 +02:00
Fabian van Oeffelt
57da4229ff
Add speed value to Toast
2024-05-22 13:58:59 +02:00
Aurelian
b25987ffe7
Changed allowed mania keys, and reverted 0af32c5
2024-05-22 11:37:55 +02:00
Dean Herbert
d0b1ebff5a
Revert "Temporary rollback of framework / SDL3"
...
This reverts commit d7d569cf4e
.
2024-05-22 16:29:39 +08:00
Dean Herbert
3a608aa815
Merge pull request #28194 from bdach/daily-challenge-models
...
Add client/server models & operations for "daily challenge" feature
2024-05-22 15:48:23 +08:00
Dean Herbert
f979200712
Use null conditional rather than implicit not-null
2024-05-22 12:06:51 +08:00
Dean Herbert
1fdebe94ac
Merge branch 'master' into lazer-speedkeys
2024-05-22 12:05:04 +08:00
Dean Herbert
02a388cba6
Fix enum not being at end (and adjust naming)
2024-05-22 12:03:48 +08:00
Dean Herbert
99d99cede0
Basic cleanup
...
Before I gave up on attempting to fix the method.
2024-05-22 11:59:34 +08:00
Fabian van Oeffelt
3403789c6f
Toast now only shows when speed is actually changed
2024-05-21 16:11:20 +02:00
Fabian van Oeffelt
148afd1201
Change Speedchange behaviour to keep changing while holding key, Add Toast to nofity user what just happend
2024-05-21 14:47:34 +02:00
Bartłomiej Dach
45fcbea182
Compute total score without mods during standardised score conversion
...
This is going to be used by server-side flows. Note that the server-side
overload of `UpdateFromLegacy()` was not calling
`LegacyScoreDecoder.PopulateTotalScoreWithoutMods()`.
Computing the score without mods inline reduces reflection overheads
from constructing mod instances, which feels pretty important for
server-side flows.
There is one weird kink in the treatment of stable scores with score V2
active - they get the *legacy* multipliers unapplied for them because
that made the most sense. For all intents and purposes this matters
mostly for client-side replays with score V2. I'm not sure whether
scores with SV2 ever make it to submission in stable.
There may be minute differences in converted score due to rounding
shenanigans but I don't think it's worth doing a reverify for this.
2024-05-21 13:11:08 +02:00
Aurelian
1127a69359
Moved DIfficulty Clamping to occur after the file has been parsed
...
This is to handle potential issues with the ruleset being parsed after circle size has been parsed.
2024-05-21 10:15:53 +02:00
Dean Herbert
20a539bc4b
Merge pull request #28262 from bdach/fix-present-confusion-on-empty-hash
...
Do not attempt to match score by equality of empty hash when presenting it
2024-05-21 14:44:10 +08:00
Dean Herbert
d7d569cf4e
Temporary rollback of framework / SDL3
2024-05-21 14:36:16 +08:00
Dean Herbert
e740b8bcc3
Fix single frame glitching in skin editor
...
https://github.com/ppy/osu/pull/28257#discussion_r1606999574
2024-05-21 14:36:11 +08:00
Dean Herbert
3b86da443b
Merge pull request #28257 from bdach/fix-skin-editor-spaz
...
Fix closest anchor selection spazzing out in multiple scenarios
2024-05-21 14:35:29 +08:00
Aurelian
db8b72eb37
Clamped Difficulty Ranges to [0,10]
2024-05-20 16:23:16 +02:00
Bartłomiej Dach
ed498f6eed
Do not attempt to match score by equality of hash if it's empty
...
Closes https://github.com/ppy/osu/issues/28216 .
The affected user's database contained six sentakki scores with an empty
hash. When an online score is being imported, an online model (which
does not have a hash) will be transmogrified into a `ScoreInfo` with
an empty hash, which would end up accidentally matching those scores
and basically breaking everything at that point.
To fix, avoid attempting to match anything on empty hash. This does not
break online score matching because for those cases the actual online ID
of the score will be used.
2024-05-20 15:05:41 +02:00
Bartłomiej Dach
3da3b91be5
Improve closest origin selection to include effects of rotation/flip
...
Closes https://github.com/ppy/osu/issues/28237 .
Solution as proposed here:
https://github.com/ppy/osu/pull/28089#issuecomment-2095372157
For flips and rotations by 90 degrees this does what you would expect it
to. For arbitrary rotations it *sort of kind of* attempts to do this but
the results are a bit wonky - probably still better than what was there
before, though?
2024-05-20 10:23:12 +02:00
Bartłomiej Dach
c03f68413a
Fix skin editor closest origin selection spazzing out on scaled sprites
...
Closes https://github.com/ppy/osu/issues/28215 .
`drawable.Position` is a location in the parent's coordinate space, and
`drawable.OriginPosition` is in the drawable's local space and
additionally does not take scale into account.
2024-05-20 10:23:07 +02:00
Susko3
04acc58b74
Don't show warning on android
...
Unsure about iOS.
2024-05-19 14:12:21 +02:00
Susko3
e4858a975d
Show mouse and joystick settings on mobile
2024-05-19 14:07:40 +02:00
Bartłomiej Dach
be642c8c42
Fix total score without mods migration failing on custom ruleset scores when custom ruleset cannot be loaded
...
Closes https://github.com/ppy/osu/issues/28209 .
Yes this means that such scores will have a zero total score without
mods in DB and thus might up getting their total recalculated to zero
when we try a mod multiplier rebalance (unless we skip scores with zero
completely I suppose). I also don't really care about that right now.
2024-05-19 09:43:33 +02:00
Dean Herbert
9fcd3b562a
Merge pull request #28201 from frenzibyte/fix-settings-padding
...
Fix checkboxes looking misaligned when placed next to a slider bar
2024-05-19 10:36:54 +08:00
Fabian van Oeffelt
3fdbd735ce
change to single Function,
...
Nightcore now switches into Daycore, keep Adjustpitch after change
2024-05-18 18:40:51 +02:00
Fabian van Oeffelt
80064c4b98
Speedchange now also works in Modselect
2024-05-18 18:38:23 +02:00
Fabian van Oeffelt
a12a20e8b5
Change Inputkeys to Ctrl+Up/Ctrl+Down
2024-05-18 18:37:44 +02:00
Dean Herbert
37fdfbfaa0
Merge branch 'master' into footer-v2-back-button
2024-05-18 22:15:32 +08:00
Dean Herbert
7b847ad815
Merge pull request #28182 from frenzibyte/footer-v2-renamings
...
Rename and move new footer classes to appropriate places
2024-05-18 22:14:45 +08:00
Salman Ahmed
a912e56ca9
Fix checkboxes applying extra padding
2024-05-18 11:06:29 +03:00
Aurelian
0af32c5d4b
Added a minimum value for the scale calculated by the CS value.
2024-05-18 07:45:01 +02:00
Salman Ahmed
0a391d5c4e
Remove duplicate back button class
2024-05-18 08:39:45 +03:00
Bartłomiej Dach
a4142937e7
Update resources
2024-05-17 12:53:25 +02:00
Bartłomiej Dach
c9b7aaf442
Fix formatting
2024-05-17 11:50:23 +02:00
Bartłomiej Dach
a4f8ed2a0e
Add button to access daily challenge playlist from main menu
2024-05-17 11:15:52 +02:00
Bartłomiej Dach
61a415fed2
Add client/server models & operations for "daily challenge" feature
2024-05-17 10:58:08 +02:00
Bartłomiej Dach
e604a99053
Merge branch 'master' into fix-mismatching-localisation-xmldoc
2024-05-17 08:47:14 +02:00
Dan Balasescu
2f9d74286d
Bump once more
2024-05-17 11:15:17 +09:00
Bartłomiej Dach
f2f03f08cb
Fix xmldoc mismatches in localisation files
...
This is enforced by the localisation analyser after
https://github.com/ppy/osu-localisation-analyser/pull/62 , but it appears
the analyser was never actually bumped game-side after that change and
I'm not super sure why, as there does not appear to be a reason to _not_
do that. So this commit does it.
2024-05-16 17:39:27 +02:00
Bartłomiej Dach
5dd64a7c86
Fix duplicated localisation key in DeleteConfiormationContentStrings
...
Noticed via `osu-resources` build warnings.
There are also a few other warnings about
https://github.com/ppy/osu/pull/27472 . Seems something in crowdin
innards may still be exporting those strings even though they have been
fixed already. Not sure how to address that.
Probably need these to be detected via static analysis at this point
since it's happened again. Might look into the feasibility of making
that happen.
2024-05-16 14:49:56 +02:00
Salman Ahmed
8b285f5b1e
Add dummy SongSelectV2
screen to house new footer buttons (and new components going forward)
2024-05-16 07:48:58 +03:00
Salman Ahmed
2b5818a4d7
Fix DI crash in beatmap options popover
2024-05-16 07:48:58 +03:00
Salman Ahmed
03220598b8
Move screen footer to OsuGame
2024-05-16 07:48:58 +03:00
Salman Ahmed
921be3ca01
Add back receptor, logo tracking, and own colour provider to screen footer
2024-05-16 07:48:58 +03:00
Salman Ahmed
d0e8632fbf
Refactor ScreenFooter
to prepare for global usage and add transitions
2024-05-16 07:48:10 +03:00
Salman Ahmed
a2794922d5
Add TopLevelContent
layer for applying external transforms on footer buttons
2024-05-16 07:48:10 +03:00
Salman Ahmed
820cfbcb00
Remove unused using directives
2024-05-16 07:47:57 +03:00
Salman Ahmed
310b4d90cc
Move SHEAR
constant to OsuGame
and revert back to 0.2x (i.e. master)
...
Discussed in [discord](https://discord.com/channels/188630481301012481/188630652340404224/1240490608934653984 ).
2024-05-16 07:28:02 +03:00
Salman Ahmed
9265290acf
Change shear factor everywhere to 0.15x
2024-05-16 05:33:01 +03:00
Salman Ahmed
7fce4cc494
Make ScreenFooterButtonMods
share shear factor with base class
2024-05-16 05:30:28 +03:00
Salman Ahmed
9446f45acf
Fix shear factor of ScreenFooterButton
s not matching anything else
...
When shear factors differ between components that are close to each other (`BackButtonV2` and `ScreenFooterButton` in this case), they look completely ugly.
2024-05-16 05:30:28 +03:00
Salman Ahmed
7e8d5a5b0a
Add new footer back button
2024-05-16 05:30:28 +03:00
Salman Ahmed
266f080362
Allow customising content of ShearedButton
s
2024-05-16 05:02:56 +03:00
Salman Ahmed
e3afd89dc8
Allow specifying height of ShearedButton
s
...
Also includes a test case in `TestSceneShearedButton`s to ensure the buttons' shear factors don't change on different heights (I've encountered issues with that previously).
2024-05-16 05:02:56 +03:00
Salman Ahmed
21f5d891bb
Rename and move footer classes to appropriate places
2024-05-16 04:41:16 +03:00
OliBomby
c4ac6d20a0
fix code quality
2024-05-15 23:40:51 +02:00
OliBomby
8df5f22b4e
Merge remote-tracking branch 'upstream/master' into scaling
2024-05-15 23:05:19 +02:00
Dean Herbert
a3960bf715
Add inline comment explaining LifetimeEnd
set for future visitors
2024-05-15 14:17:28 +08:00
Bartłomiej Dach
7c1640e124
Merge pull request #28170 from peppy/fix-catch-dho-performance
...
Set a rudimentary lifetime end to improve seek performance in scrolling rulesets
2024-05-14 19:27:40 +02:00
Dean Herbert
cff865b556
Continue loading even when osu! logo is being dragged at loading screen
...
Closes https://github.com/ppy/osu/issues/28130 .
2024-05-14 23:54:07 +08:00
Dean Herbert
c31b503f2a
Merge pull request #28171 from bdach/present-score-different-hashes
...
Use hash rather than online ID as primary lookup key when presenting score
2024-05-14 23:39:54 +08:00
Bartłomiej Dach
ee9144c3bd
Apply NRT to results statistics displays
2024-05-14 15:21:12 +02:00
Bartłomiej Dach
414f023817
Apply NRT to RankText
2024-05-14 15:21:05 +02:00
Bartłomiej Dach
b937b94bd2
Apply NRT to RankBadge
2024-05-14 15:20:56 +02:00
Bartłomiej Dach
ced1c79490
Apply NRT to AccuracyCircle
2024-05-14 15:20:47 +02:00
Bartłomiej Dach
e7721b073c
Apply NRT to ContractedPanelTopContent
2024-05-14 15:20:36 +02:00
Bartłomiej Dach
8e16b57d09
Apply NRT to SimpleStatisticTable
2024-05-14 15:20:26 +02:00
Bartłomiej Dach
237ae8b46a
Apply NRT to SimpleStatisticsItem
2024-05-14 15:20:17 +02:00
Bartłomiej Dach
2f2257f6ce
Apply NRT to PerformanceBreakdownChart
2024-05-14 15:20:07 +02:00
Bartłomiej Dach
77a7f475ee
Apply NRT to ScorePanel
2024-05-14 15:19:58 +02:00
Bartłomiej Dach
10a8e84046
Apply NRT to StatisticsPanel
2024-05-14 15:19:46 +02:00
Bartłomiej Dach
cb49147d1e
Apply NRT to ScorePanelList
2024-05-14 15:19:43 +02:00
Bartłomiej Dach
03a279a48d
Use hash rather than online ID as primary lookup key when presenting score
...
Something I ran into when investigating
https://github.com/ppy/osu/issues/28169 .
If there are two scores with the same online ID available in the
database - for instance, one being recorded locally, and one recorded by
spectator server, of one single play - the lookup code would use online
ID first to find the score and pick any first one that matched. This
could lead to the wrong replay being refetched and presented / exported.
(In the case of the aforementioned issue, I was confused as to whether
after restarting spectator server midway through a play and importing
the replay saved by spectator server after the restart, I was seeing a
complete replay with no dropped frames, even though there was nothing in
the code that prevented the frame drop. It turns out that I was getting
presented the locally recorded replay instead all along.)
Instead, jiggle the fallback preference to use hash first.
2024-05-14 11:16:50 +02:00
Dean Herbert
cfb2c8272b
Set a rudimentary lifetime end to improve seek performance in scrolling rulesets
2024-05-14 05:02:08 +08:00
Bartłomiej Dach
87f2a23263
Merge pull request #28144 from peppy/hide-country-flags
...
Add setting to allow hiding all country flags
2024-05-13 10:10:38 +02:00
Joseph Madamba
9b84d8ac2f
Apply missed changes from old leaderboard score
...
See:
- d11e56b8bb
- 7d74d84e6c
- 07f9f5c6d8
2024-05-12 22:39:22 -07:00
Joseph Madamba
736e15ab26
Improve fluidity states
2024-05-12 22:21:50 -07:00
Dean Herbert
5a362be190
Merge branch 'master' into glow
2024-05-12 12:58:57 +08:00
Dean Herbert
147ebb6bc7
Merge pull request #28142 from frenzibyte/footer-v2-button-animation
...
Improve animation of new song select footer buttons
2024-05-12 11:07:30 +08:00