Seems a lot more reliable, and allows falling back to the "main" video
in cases which didn't support this previously.
A next step may be to allow every screen to support a video based on its
screen name, rather than specifying the local `TourneyVideo` every time.
Rather than continuing with `ID` or `Id`, this should follow the new
standards and use `OnlineID` instead. Only updating this since it's a
newly introduced class.
The old flags used a size of 150x100, while the new assets based on
twemoji use a size of 150x108. Update existing usages to match this new
aspect ratio better.
Due to equality being based on `ShortName`, it was feasible that the
re-fetch exited early (in bindable shortcutting logic) causing the
ruleset's `OnlineID` to remain `-1` or something equally wrong.
Resolves issue pointed out at
https://github.com/ppy/osu/discussions/17538#discussioncomment-2471746.
Historically, tournament client may have written incorrect `OnlineID`
values. We wanted to use `ShortName` to re-fetch the ruleset. This test
ensures this flow is working correctly.
Caused by a `LoadComponentsAsync()` call being fired from a worker
thread, which will throw exceptions since the recent addition of safety
checks around that method.
It has transpired that on filename-case-sensitive filesystems, the
tournament client does not consistently handle custom asset paths.
Videos and mods could only be looked up from `videos` and `mods`
directories (lowercase), while flags could only be looked up from the
`Flags` directory (uppercase).
A complicating circumstance is that default country flags, coming from
osu-resources, also depend on the flag lookup being uppercased.
To attempt to clean up the handling as much as it appears to be
possible, automatically move user-supplied lowercase directories to
uppercase.