1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-19 06:53:02 +08:00
Commit Graph

30161 Commits

Author SHA1 Message Date
Dan Balasescu
65a09692da
Merge pull request #16001 from peppy/fix-own-rank-results-panel-in-multiplayer
Fix the local user's rank not showing on multiplayer/playlist results screen
2021-12-08 16:34:36 +09:00
Dean Herbert
872e0884c0 Fix the local user's rank not showing on multiplayer/playlist results screen
Applying the simple solution for now. Not sure how this will evolve over
time, but seems sane enough.
2021-12-08 15:22:10 +09:00
Dean Herbert
6ec3f41839 Fix LegacyComboCounter not handling non-default anchor/origin specifications correctly 2021-12-08 15:07:15 +09:00
Dean Herbert
0775053a18 Fix the unmute notification potentially overwriting user's volume levels unnecessarily
I've also changed the cutoffs to 5% rather than zero, as this seems like
a saner method of showing this dialog. With levels 5% or less, the game
is basically inaudible.

Arguably, the cutoff can be increased to 10%.
2021-12-08 13:38:43 +09:00
Dean Herbert
2e640ff2ad
Merge pull request #15989 from bdach/fix-editor-clipboard-test-failure
Fix editor crashing if paste is performed while composer is loading
2021-12-08 11:18:59 +09:00
Bartłomiej Dach
10dd64e07c
Fix being able to paste objects while composer is loading
Would lead to exceptions due to modification of `Beatmap.HitObjects`
during its enumeration by `DrawableRuleset`, which was happening as an
async load via `EditorScreenWithTimeline.CreateMainContent()`.
2021-12-07 21:00:25 +01:00
Susko3
0b0ff36154 Allow only number characters parseable by int.TryParse
char.IsNumber() is too broad, allowing full width and other numbers.
2021-12-07 20:06:22 +01:00
Bartłomiej Dach
8b7ed759e3
Merge branch 'master' into beatmap-card/scale-on-hover 2021-12-07 19:11:01 +01:00
Dan Balasescu
86eacfdbd8
Merge pull request #15879 from peppy/multiplayer-delayed-playlist-load-broken
Load playlist panels on demand to reduce initial load time when joining a room
2021-12-08 00:42:20 +09:00
Dean Herbert
25a0505c97 Scale card when expanding to better distinguish hovered card from other cards in listing 2021-12-07 23:48:14 +09:00
Dean Herbert
d6e68feadc
Merge pull request #15948 from bdach/beatmap-card/difficulty-dropdown
Add difficulty dropdown to beatmap card
2021-12-07 23:40:06 +09:00
Dan Balasescu
7e236c3a41 Remove unused dependency 2021-12-07 23:36:48 +09:00
Dan Balasescu
52230a6f00
Merge branch 'master' into multiplayer-delayed-playlist-load-broken 2021-12-07 22:45:05 +09:00
Dean Herbert
a8c20368c0
Merge pull request #15976 from smoogipoo/add-modes-to-room-panels
Add match type and queue mode to multiplayer room panels
2021-12-07 22:08:30 +09:00
Dan Balasescu
4683193f09 Move implementation to base class 2021-12-07 20:36:39 +09:00
Dan Balasescu
5ffe702dd6 Add match type and queue mode to multiplayer room panels 2021-12-07 18:57:13 +09:00
Dean Herbert
9978caab12 Update framework 2021-12-07 18:37:30 +09:00
Dean Herbert
dea7f2308c Fix participant panels potentially keeping a reference to an old user
If a user leave and then rejoins a multiplayer match while another user
is not at the lobby screen, there is a potential the `ParticipantPanel`
tracking the user will not correctly be recreated to reference the new
instance of the `MultiplayerUser`.

This happens because the `OnRoomUpdated` call is scheduled, which means
it is not running in the background, coupled with the local logic that
relies on `IEquatable(MultiplayerRoomUser)` (which in turn falls back to
a UserID comparison).

Changing this to a reference comparison is the easiest way to resolve
this. Whether we change the `IEquatable` implementation is up for
discussion.

Closes https://github.com/ppy/osu/issues/15970.
2021-12-07 17:24:04 +09:00
Dean Herbert
cfa712473d Use default timeout in GetPlayableBeatmap when provided CancellationToken is default 2021-12-07 13:33:41 +09:00
Dean Herbert
f3e9fb76fc Add the ability to pass a CancellationToken through DifficultyCalculator.CalculateAll
Was weirdly missing from this one method.
2021-12-07 13:32:47 +09:00
tbrose
882223b27f Using static call and verbatim symbol and optimizes regex pattern for username check 2021-12-07 02:38:10 +01:00
tbrose
b6d47a41f4 Adjusted RegEx pattern to also take special characters into account 2021-12-07 02:14:40 +01:00
Salman Ahmed
974987550f Move API request response size log to correct logging target 2021-12-07 04:01:56 +03:00
tbrose
7a0d4fca17 Fixes using Matches+Count instead of IsMatch negatively affecting performance 2021-12-07 01:41:21 +01:00
tbrose
f02e44d552 Fixes not matching coding style 2021-12-07 01:38:48 +01:00
tbrose
39594b7362 Fixes detection of mentioning of user falsely detects messages where the username is coincidentally contained in words of a message. 2021-12-06 23:32:21 +01:00
tbrose
0a6c221de4 Adds tests for checkContainsUsername function of MessageNotifier component 2021-12-06 22:07:47 +01:00
Bartłomiej Dach
999bba439f
Clarify usages of reverse child ID flow with inline comments 2021-12-06 21:02:40 +01:00
Bartłomiej Dach
82ed8eae6b
Ensure hover handling container always calls base on hover events 2021-12-06 21:02:40 +01:00
Bartłomiej Dach
ccfc361626
Apply naming suggestions 2021-12-06 21:02:38 +01:00
Bartłomiej Dach
4278a320e4
Fix skin setting resetting every launch
The reason this was happening was an unfortunate oversight in the
migration logic. The code that was attempting to parse the skin settings
as `int` was firing regardless of whether a skin migration from EF to
realm had already occurred. If it had occurred, the skin setting would
contain a GUID rather than an integer, and therefore fail to parse, and
therefore implicitly fallback to a EF skin ID of 0 which would be the
default skin.

Fix by not running the setting migrating logic at all when there are no
EF skins to migrate.
2021-12-06 20:12:02 +01:00
Dan Balasescu
d5cdb1bb87 Update test multiplayer client implementation 2021-12-07 00:01:07 +09:00
Dean Herbert
3e27859e4f Update framework 2021-12-06 22:47:07 +09:00
Dan Balasescu
7ef960839b
Merge pull request #15898 from peppy/skin-export-instntiation-info
Serialise and deserialise `SkinInfo.InstantiationInfo` to allow for more correct imports
2021-12-06 22:08:20 +09:00
Dean Herbert
9033169177
Merge pull request #15951 from peppy/fix-failing-recorder-tests-w
Fix intermittent test failures in scenes using `SpectatorClient`
2021-12-06 18:40:27 +09:00
Dean Herbert
07abcf04b4
Merge branch 'master' into realm-integration/skins-filename-lookup-performance 2021-12-06 17:13:33 +09:00
Dean Herbert
68b482fc48
Merge branch 'master' into skin-export-instntiation-info 2021-12-06 17:12:42 +09:00
Dean Herbert
cf34b3f70e
Merge pull request #15859 from peppy/realm-integration/skins-rebase
Use realm for skins
2021-12-06 17:12:23 +09:00
Dean Herbert
7a333ffdcc Add a paired schedule in SpectatorClient.BeginPlaying
Optimally, I would like to remove the `Schedule` in `EndPlaying`, but it
turns out quite a few test are relying on this at very least. Adding a
paired schedule ensure that order of operations is correct, at least.
2021-12-06 17:07:19 +09:00
Dan Balasescu
310e503b85
Merge pull request #15950 from peppy/fix-incorrect-match-current-beatmap
Ensure user is returned to the `RoomSubScreen` before gameplay is started
2021-12-06 16:34:46 +09:00
Dan Balasescu
991becdfa7
Merge branch 'master' into realm-integration/skins-rebase 2021-12-06 16:34:31 +09:00
Dean Herbert
a13067eaa4
Merge pull request #15929 from smoogipoo/update-test-multiplayer-client
Update test multiplayer client to match server implementation
2021-12-06 15:57:08 +09:00
Dean Herbert
452fa93444 Merge branch 'master' into realm-integration/skins-rebase 2021-12-06 15:21:02 +09:00
Dan Balasescu
fae41b2182 Remove one more piece of code 2021-12-06 15:17:33 +09:00
Dan Balasescu
5be74af8fe Update addItem() implementation 2021-12-06 15:09:06 +09:00
Dean Herbert
0ea7a69084 Ensure user is returned to the RoomSubScreen before gameplay is started
This covers the scenario where a user may be at the song select screen
while another user (the room host) starts the match. This was only made
possible with the new queue modes, so is quite a recent regression.
2021-12-06 14:03:52 +09:00
Dean Herbert
a76cfbea21 Add test coverage of incorrect beatmap being used in multiplayer when match started from song select 2021-12-06 14:03:33 +09:00
Dean Herbert
ca1f96d2c2 Reword xmldoc of MultiplayerPlaylistItem.PlaylistOrder to better match actual behaviour 2021-12-06 13:03:14 +09:00
Dean Herbert
5ff452cc9a Update success bool to access Exception to stop exceptions from firing outwards 2021-12-06 12:29:11 +09:00
Dean Herbert
91aa38c4f6 Change playlist lookup to fail hard when failing 2021-12-06 12:28:48 +09:00
Bartłomiej Dach
0f74389389
Add scrolling for long difficulty lists in beatmap card 2021-12-05 20:17:59 +01:00
Bartłomiej Dach
af35652b8b
Disable beatmap card expansion on solo spectator screen 2021-12-05 20:07:58 +01:00
Bartłomiej Dach
af10223ac4
Add reverse fill flows & depth specs at usage sites for correct Z-ordering 2021-12-05 20:07:46 +01:00
Bartłomiej Dach
e451e43b90
Implement input handling behaviour of beatmap card dropdown 2021-12-05 16:31:45 +01:00
Bartłomiej Dach
250e5b47b7
Move "extra info" beatmap card row to separate component 2021-12-05 15:52:19 +01:00
Bartłomiej Dach
3fea8d5e62
Implement visual behaviour of expanded card state 2021-12-05 15:48:02 +01:00
Bartłomiej Dach
a07f8c74dc
Add basic structure for composable card dropdown 2021-12-05 15:26:37 +01:00
ColdVolcano
81215b9f0e Use correct effect points when EarlyActivationMilliseconds is not zero 2021-12-04 22:31:55 -06:00
Bartłomiej Dach
504210a6cd
Merge branch 'master' into multiplayer-room-composite-event-debounce-fix 2021-12-04 17:50:32 +01:00
Dean Herbert
e1897f9998 Don't debounce MultiplayerRoomComposite events
This avoids accidental usage which could result in data being lost or
ignored (as only the last `user` in a single frame would arrive).

This was added specifically to debounce sample playback, but given that
it's only debouncing on a single frame (hardly noticeable) I'm not going
to add back support for that yet. It should be handled by sample
playback concurrency or something more local to the usage.
2021-12-05 01:38:39 +09:00
Bartłomiej Dach
f051720fa1
Fix score encoder being dependent on current culture
As it turns out, on some cultures, the "negative integer" sign is not
encoded using the U+002D HYPHEN-MINUS codepoint. For instance, Swedish
uses U+2212 MINUS SIGN instead. This was confusing the legacy decoder,
since it is correctly depending on the serialisation being
culture-independent.

To fix, ensure that the special "end replay" frame, as well as the
replay MD5 hash, are generated in a culture-invariant manner.

Thankfully the replay MD5 hash is currently being discarded in
`LegacyScoreDecoder`, so it changing in future scores should not have
any negative effect on lazer operation.
2021-12-04 17:13:43 +01:00
Bartłomiej Dach
38702beabf
Merge branch 'master' into i-ruleset-store 2021-12-04 15:05:39 +01:00
Bartłomiej Dach
53a6ef22ce
Add null check to resolve inspection 2021-12-04 14:55:35 +01:00
Dan Balasescu
85d3b70d8c Update test multiplayer client to match server-side 2021-12-04 22:34:38 +09:00
Bartłomiej Dach
b3b239c9a1
Fix test failures due to beatmap lookup logic being active even when model is populated 2021-12-04 13:59:01 +01:00
Dean Herbert
517a344bcc
Merge branch 'master' into new-multiplayer-playlist 2021-12-04 13:16:09 +09:00
Dan Balasescu
f4e07f1483 Merge branch 'master' into diffcalc-cli-arg 2021-12-03 20:34:59 +09:00
Dan Balasescu
d5803e541b Give playlist items a PlayedAt date 2021-12-03 20:25:51 +09:00
Dan Balasescu
4145a16d5b
Merge pull request #15920 from peppy/clean-up-unused-resolves
Clean up unused resolved properties
2021-12-03 20:08:48 +09:00
Dan Balasescu
e350c68b5f
Merge pull request #15918 from peppy/volume-adjust-during-gameplay-alt-exception
Fix alt-scroll not adjusting volume in gameplay when scroll wheel is disabled
2021-12-03 19:09:20 +09:00
Dean Herbert
1eed2436e6 Clean up unused resolved properties 2021-12-03 18:49:49 +09:00
Dean Herbert
2acf46154a Remove many unused resolutions of RulesetStore 2021-12-03 18:16:29 +09:00
Dean Herbert
e75e209053 Cache and consume IRulesetStore where feasible 2021-12-03 18:16:01 +09:00
Dean Herbert
15db1372aa Add missing equality implementations on IRulesetInfo 2021-12-03 18:01:45 +09:00
Dean Herbert
675ecb603f Add IRulesetStore to allow for transitional usage in upcoming manager classes 2021-12-03 17:57:40 +09:00
Dean Herbert
6b73672403 Stop Player from blocking volume adjust when Alt it held
Similar case to what we already have in `OsuScrollContainer`, so there
is precedent for handling this locally in this fashion.
2021-12-03 17:18:07 +09:00
Dean Herbert
aaa46960b3 Reword mouse wheel disable setting to better explain its purpose 2021-12-03 17:18:07 +09:00
Dan Balasescu
9d6fe558c2 Update TestMultiplayerClient with expired item ordering 2021-12-03 17:01:33 +09:00
Dan Balasescu
487a71312e Split out code so base methods aren't called 2021-12-03 16:40:20 +09:00
Dean Herbert
e4b296e16e Use OptIn serialisation on SkinInfo to avoid writing unnecessary information 2021-12-03 16:36:27 +09:00
Dean Herbert
dad5b06e84 Avoid sending empty parameters in GetBeatmapRequest 2021-12-03 16:23:39 +09:00
Dan Balasescu
0a1304b92a Remove gameplay_order, use existing playlist_order 2021-12-03 15:45:13 +09:00
Dean Herbert
9c717ce7ec
Merge branch 'master' into diffcalc-cli-arg 2021-12-03 15:10:55 +09:00
Dan Balasescu
b75a5b778e Update history list to also sort by gameplay order 2021-12-03 15:05:56 +09:00
Dan Balasescu
1d2d1bfcf3 Add UpdatedAt to MultiplayerPlaylistItem 2021-12-03 15:05:56 +09:00
Dean Herbert
9803e63e6f Update IPC usage to return null 2021-12-03 14:30:15 +09:00
Dean Herbert
6142566974 Update resources 2021-12-03 14:26:53 +09:00
Dean Herbert
abf7735b84 Update framework 2021-12-03 14:18:03 +09:00
Dan Balasescu
806ca5d4de Update TestMultiplayerClient implementation to match server 2021-12-02 22:58:12 +09:00
Dan Balasescu
933fd49cff Fix missed callbacks due to AddOnce() schedules 2021-12-02 22:33:14 +09:00
Dan Balasescu
9760a2b087 Update MultiplayerQueueList to take advantage of GameplayOrder 2021-12-02 22:33:14 +09:00
Dan Balasescu
ba8af303cc Add GameplayOrder to MultiplayerPlaylistItem 2021-12-02 22:33:14 +09:00
Dean Herbert
cdf2fa9930 Serialise and deserialise SkinInfo.InstantiationInfo to allow for more correct imports
Until now, skins were always imported using the `LegacySkin`
instantiation type. For cases where a user has edited the lazer or
classic default (via the new skin editor), which would result in
incorrect fallback paths after exporting and importing the edited skin.
2021-12-02 18:05:16 +09:00
Dean Herbert
0e82e9355b Ensure skin is saved immediately after becoming mutable
Without doing this, the JSON content is not written to the file. A user
assumption is that as soon as a skin shows up in the skin list as
exportable, it should export correctly, so it makes sense that it should
be in a sane state even if the user has not made any changes in the skin
editor yet.

Going forward, we might move more of the json serialisation logic out,
and run for consistency as part of the import process. This seems like
the simplest way to guarantee things for now, though.
2021-12-02 17:42:17 +09:00
Dean Herbert
fe99d4e984 Standardise parameter naming across all file IO methods 2021-12-02 17:19:53 +09:00
Dean Herbert
ae3038ead4 Overwrite existing files if AddFile is called with an existing filename 2021-12-02 17:18:06 +09:00
Dean Herbert
512818648f Add some more breathing room between tab control and queue content 2021-12-02 16:56:30 +09:00
Dean Herbert
5976982b12 Add missing xmldoc for MultiplayerClient events 2021-12-02 16:45:26 +09:00
Dan Balasescu
c00684a2f7
Merge branch 'master' into new-multiplayer-playlist 2021-12-02 16:19:34 +09:00
Dean Herbert
bdddaba352 Remove unnecessary test request handling 2021-12-02 14:33:56 +09:00
Dean Herbert
624ec4580a Ensure updateLocalRoomSettings is only called after full population 2021-12-02 14:32:39 +09:00
Dean Herbert
505608ab12 Merge branch 'realm-integration/skins-rebase' into realm-integration/skins-filename-lookup-performance 2021-12-02 14:01:39 +09:00
Dean Herbert
e855a49833 Add test coverage of default skin edit and export 2021-12-02 14:01:18 +09:00
Dean Herbert
0a14acfd83 Fix incorrect conditional on export/mutate feasability of skin 2021-12-02 13:41:58 +09:00
Dean Herbert
65f0a80c97 Merge branch 'master' into realm-integration/skins-rebase 2021-12-02 13:37:20 +09:00
Dean Herbert
c82195390f Update usage of SubscribeForNotifications 2021-12-02 13:24:16 +09:00
Dean Herbert
9483a3013c Merge branch 'master' into realm-integration/skins-filename-lookup-performance 2021-12-02 13:20:56 +09:00
Dean Herbert
4f826589e5 Remove subscription logic for the time being 2021-12-02 12:20:07 +09:00
Bartłomiej Dach
8bef50cbba
Revert "Refactor migration precondition to read better"
Realm cannot translate `.All()` LINQ queries.

This reverts commit 0e0e8c25e8.
2021-12-01 19:39:44 +01:00
Dean Herbert
caa88950da
Merge pull request #15889 from smoogipoo/fix-multi-test-ids
Fix testable online IDs starting at 0
2021-12-01 22:51:24 +09:00
Dean Herbert
a8e17cb3a5 Add relative size specs so partially on-screen panels still start loading
Without this, panels at the top of the list but not fully on-screen
wouldn't begin their metadata loading process.
2021-12-01 22:46:38 +09:00
Dean Herbert
d262baefad Only query for the owner user metadata in the case it is actually required 2021-12-01 22:43:32 +09:00
Dean Herbert
a0ff86f5e8 Ensure all read and write operations on APIRoom are done on the update thread 2021-12-01 22:43:03 +09:00
Dan Balasescu
e5e2ae8ab4 Fix dangling line post-rebase 2021-12-01 21:36:25 +09:00
Dan Balasescu
89c47708a1 Merge branch 'master' into new-multiplayer-playlist 2021-12-01 21:35:23 +09:00
Dan Balasescu
e87b0003fb Fix queue mode not being bound to in all cases 2021-12-01 21:35:23 +09:00
Dan Balasescu
ad35f3434b Fix queue list not considering expired items 2021-12-01 21:35:23 +09:00
Dan Balasescu
e2f289eeff Xmldocs 2021-12-01 21:35:23 +09:00
Dan Balasescu
93a7726f4a Remove now-unused parameter 2021-12-01 21:35:23 +09:00
Dan Balasescu
d70355237d Fix selected item not bound 2021-12-01 21:35:23 +09:00
Dan Balasescu
c3dfe10a8a Add new list to match subscreen 2021-12-01 21:35:22 +09:00
Dan Balasescu
1152c4e8e9 Fix tests 2021-12-01 21:35:22 +09:00
Dan Balasescu
7847ce6253 Redesign with tab control 2021-12-01 21:35:22 +09:00
Dan Balasescu
95050d6597 Extract class to file 2021-12-01 21:35:22 +09:00
Dan Balasescu
fc8c8685b8 Add playlist queue tests 2021-12-01 21:35:22 +09:00
Dan Balasescu
e0ca1af9b8 Remove ctor params 2021-12-01 21:35:22 +09:00
Dan Balasescu
bfd2dc28c8 Rename QueueList -> MultiplayerQueueList 2021-12-01 21:35:22 +09:00
Dan Balasescu
6b198ce112 Document simulation 2021-12-01 21:35:22 +09:00
Dan Balasescu
ef170471f0 Merge branch 'master' into new-multiplayer-playlist 2021-12-01 21:35:22 +09:00
Dan Balasescu
9806c75743 Implement better round robin algorithm 2021-12-01 21:35:12 +09:00
Dan Balasescu
68bb49fc1e Add QueueList tests 2021-12-01 21:33:48 +09:00
Dan Balasescu
0cb35e8b18 Separate out QueueList 2021-12-01 21:33:48 +09:00
Dan Balasescu
17bc0b51aa Merge branch 'playlist-item-add-owner' into new-multiplayer-playlist 2021-12-01 21:33:48 +09:00
Dan Balasescu
942e48ffbd Merge branch 'master' into new-multiplayer-playlist 2021-12-01 21:33:11 +09:00
Dan Balasescu
c38537a51a Initial implementation of MultiplayerPlaylist 2021-12-01 21:32:56 +09:00
Dan Balasescu
42ad726154
Merge branch 'master' into multiplayer-delayed-playlist-load-broken 2021-12-01 20:28:29 +09:00
Dan Balasescu
685bdd522e Replace 'skin' in comments with 'instance' 2021-12-01 20:17:38 +09:00
Dan Balasescu
c225f8f84c
Merge branch 'master' into realm-subscribe-helper-methods 2021-12-01 20:15:21 +09:00
Dan Balasescu
af704dfe5b
Merge pull request #15878 from peppy/beatmap-lookup-cache
Cache beatmap metadata lookups used by multiplayer
2021-12-01 20:13:21 +09:00
Dan Balasescu
7224f6bac5 Fix testable online IDs starting at 0 2021-12-01 20:00:31 +09:00
Dean Herbert
bf5a186a2b Add early abort to avoid sending empty lookup requests 2021-12-01 17:47:16 +09:00
Dean Herbert
81f82c24c3 Use new API endpoint to do batch lookups 2021-12-01 17:45:41 +09:00
Dean Herbert
09817ff161 Add missing returns additional documentation to main method call 2021-12-01 15:27:10 +09:00
Dean Herbert
4306420922 Add extension methods to add extra safety to realm subscriptions
Also adjusts the naming and documentation to make it (hopefully) easier
to understand what this method/process implies.
2021-12-01 15:09:53 +09:00
Dean Herbert
1cf1543866 Fix test failures due to attempting to subscribe to non-managed instances 2021-12-01 13:50:19 +09:00
Dean Herbert
ea66cd6c5e Add xmldoc and make realm ongoing transaction file op methods protected instead of public 2021-12-01 12:55:21 +09:00
Dean Herbert
8ce7467e97 Fix ordering of skins in dropdown being reverse of expected 2021-12-01 12:50:47 +09:00
Dean Herbert
0e0e8c25e8 Refactor migration precondition to read better 2021-12-01 12:48:49 +09:00
Dean Herbert
370135d484 Remove outdated TODO 2021-12-01 12:47:32 +09:00
Dean Herbert
fb2310f826 Specify config file default as DEFAULT_SKIN's guid 2021-12-01 12:45:47 +09:00
Dan Balasescu
7d0135063e
Merge pull request #15875 from peppy/fix-match-type-propagation
Fix match type not being propagated correctly to other users' settings
2021-12-01 11:23:28 +09:00
Dean Herbert
9411b42d0a Cache skin filename to path mapping to reduce realm lookups during gameplay skin changes 2021-12-01 02:27:41 +09:00
Dean Herbert
03e1305b3f Fix toast display potentially causing a child mutation before load complete 2021-12-01 01:55:17 +09:00
Dean Herbert
bba985e0e5 Merge branch 'beatmap-lookup-cache' into multiplayer-delayed-playlist-load-broken 2021-11-30 20:09:52 +09:00
Dean Herbert
0fae10500a Fix failing tests 2021-11-30 20:09:45 +09:00
Dean Herbert
ef3d0ee0db Merge branch 'master' into realm-integration/skins-rebase 2021-11-30 19:59:59 +09:00
Dan Balasescu
857e559f87
Merge pull request #15877 from peppy/log-response-sizes
Log output API request response sizes
2021-11-30 19:58:29 +09:00
Dean Herbert
e4ba66877d Improve transitions when loading new data into a playlist panel 2021-11-30 19:54:26 +09:00
Dean Herbert
fe119da044 Add fetching of beatmap and user data when playlist panels come on screen 2021-11-30 19:52:36 +09:00
Bartłomiej Dach
95373649a4 Skip null items in star rating range display 2021-11-30 19:44:50 +09:00
Bartłomiej Dach
695167a749 Add support for null item display in DrawableRoomPlaylistItem 2021-11-30 19:44:50 +09:00
Bartłomiej Dach
23dd21339d Delay online fetch of non-current playlist item on room join 2021-11-30 19:44:50 +09:00
Dean Herbert
01bc330d1c Rename method to match new purpose 2021-11-30 19:42:46 +09:00
Dean Herbert
f58c5cd9c0 Update MultiplayerClient to use BeatmapLookupCache 2021-11-30 19:36:25 +09:00
Dean Herbert
87883f1fe4 Add BeatmapLookupCache 2021-11-30 19:28:45 +09:00
Dean Herbert
23e297d414 Log output response sizes
Visibility is the first step towards action. Or something.
2021-11-30 19:09:13 +09:00
Dan Balasescu
8fdb9ab4e5
Merge branch 'master' into realm-integration/live-queryable-fix 2021-11-30 18:54:14 +09:00
Dan Balasescu
daa7135381
Merge branch 'master' into realm-nested-context-creation-deadlock-fix 2021-11-30 18:01:00 +09:00
Dean Herbert
25b9575de0 Fix missing transfer of match type to settings 2021-11-30 17:09:40 +09:00
Dean Herbert
e83ada40f9 Merge branch 'realm-nested-context-creation-deadlock-fix' into realm-integration/skins-rebase 2021-11-30 15:56:34 +09:00
Dean Herbert
1ff0326f8e Merge branch 'master' into realm-integration/skins-rebase 2021-11-30 15:50:10 +09:00
Dean Herbert
6f66ecd77b Move migrations to own file and add user skin choice config migration 2021-11-30 15:41:18 +09:00
Dean Herbert
0efd565c8b Remove forgotten using statement 2021-11-30 15:41:07 +09:00
Dean Herbert
a943089be2 Add support for migration of skins from EF to Realm 2021-11-30 15:17:26 +09:00
Dean Herbert
6bf9327228 Add linking property on SkinFileInfo to allow EF to understand the link post-rename 2021-11-30 15:17:16 +09:00
Dean Herbert
6e4cd91b7b Fix update thread realm context never being Refresh()ed 2021-11-30 14:12:36 +09:00
Dean Herbert
384a0664c2 Remove unused migration method 2021-11-30 14:05:44 +09:00
Dean Herbert
f921acc681 Fix chat tab dropdown not being reachable at default sizing
Would have liked to fix this in a more local way, but the structure of
the dropdowns is just a pain in the ass to work with, so this will do
for now.
2021-11-30 13:01:46 +09:00
Dean Herbert
6b0999052f Merge branch 'master' into realm-integration/live-queryable-fix 2021-11-30 12:02:37 +09:00
Dean Herbert
f3f77fa053 Update missed xmldoc/comments 2021-11-30 11:56:53 +09:00
Dean Herbert
35d68d6ab0 Remove all optimisations from RealmLive 2021-11-30 11:47:29 +09:00
Bartłomiej Dach
45656c3599
Fix difficulty spectrum display not ordering ruleset groups by ID 2021-11-29 22:06:11 +01:00
Bartłomiej Dach
0fc4d6dc2a
Implement beatmap card difficulty list 2021-11-29 22:04:09 +01:00
Dan Balasescu
823552a5e8
Merge pull request #15856 from peppy/simplify-replace-file
Remove the ability to specify a filename in `ReplaceFile`
2021-11-29 20:49:38 +09:00
Dan Balasescu
0ee524a72f
Merge pull request #15857 from peppy/realm-importer-remove-pointless-fast-hash
Remove `computeHashFast` usage in `RealmArchiveModelImporter.ComputeHash`
2021-11-29 18:58:40 +09:00
Dan Balasescu
8a188b74b1
Merge pull request #15850 from peppy/realm-integration/misc-qol
Apply a couple of realm related documentation/interface changes
2021-11-29 18:58:15 +09:00
Dean Herbert
0bcfb8e199 Fix regression in implementation of fix 2021-11-29 18:52:29 +09:00
Dean Herbert
6877867467 Make default fallback logic more robust 2021-11-29 18:28:25 +09:00
Dean Herbert
0d18c83d75 Simplify deletion by adding always present conditionals to Delete method 2021-11-29 18:28:25 +09:00
Dean Herbert
f6a3709060 Store default skins to database 2021-11-29 18:28:25 +09:00
Dean Herbert
c629a7a36f Fix random selection and avoid using legacy events for handling skin import/deletion 2021-11-29 18:28:25 +09:00
Dean Herbert
29d074bdb8 Implement missing behaviours required for skin file operations via RealmArchiveModelManager 2021-11-29 18:28:25 +09:00
Dean Herbert
e2d9a685d7 Update skin implementations to match new structures 2021-11-29 18:28:25 +09:00
Dean Herbert
744a5b33f5 Rewrite SkinSection to use realm subscriptions and databased defaults 2021-11-29 18:28:25 +09:00
Dean Herbert
6b55de2845 Use ILive for Skin.SkinInfo 2021-11-29 18:28:25 +09:00
Dean Herbert
cd0c811ab1 Add the ability to call ToString on a RealmLive to get the underlying object's implementation 2021-11-29 18:28:25 +09:00
Dean Herbert
5db7cf23d3 Add pending deletion skin cleanup 2021-11-29 18:28:25 +09:00
Dean Herbert
23146d59d1 Use ILive for current skin 2021-11-29 18:28:25 +09:00
Dean Herbert
2a9c7c00c8 Update tests and file access code 2021-11-29 18:28:25 +09:00
Dean Herbert
3db5646fa8 Create Guid constants for system skins (and store skin choice to configuration as guid) 2021-11-29 18:28:25 +09:00
Dean Herbert
e283379f0e Replace EF SkinInfo with realm implementation 2021-11-29 18:28:25 +09:00
Dean Herbert
5f067172b4 Add model class for realm skin 2021-11-29 18:28:25 +09:00
Dean Herbert
0a961fd9d8 Replace usages of IHasFiles with IHasRealmFiles 2021-11-29 18:28:25 +09:00
Dean Herbert
348d1d0be9 Don't dispose fetched realm instance when using RealmLive.Value
See https://github.com/realm/realm-dotnet/discussions/2734#discussioncomment-1705038 for reasoning.
2021-11-29 18:28:25 +09:00
Dean Herbert
1dd5e1ca89 Remove RealmLive context re-fetch optimisation for now 2021-11-29 18:28:25 +09:00
Dean Herbert
c411a755c7 Merge branch 'realm-nested-context-creation-deadlock-fix' into realm-integration/compiled 2021-11-29 18:28:07 +09:00
Dean Herbert
0f1712a272 Merge branch 'realm-importer-remove-pointless-fast-hash' into realm-integration/compiled 2021-11-29 18:28:05 +09:00
Dean Herbert
29f1ad10ba Merge branch 'realm-integration/misc-qol' into realm-integration/compiled 2021-11-29 18:28:03 +09:00
Dean Herbert
1cfcd33b07 Merge branch 'simplify-replace-file' into realm-integration/compiled 2021-11-29 18:28:02 +09:00
Dean Herbert
23fded4a3a Fix potential oversight in semaphore release logic 2021-11-29 18:26:37 +09:00
Dean Herbert
94b10492be Update legacy SkinManager to match new interface 2021-11-29 18:20:07 +09:00
Dean Herbert
6aad90674e Remove computeHashFast usage in RealmArchiveModelImporter.ComputeHash 2021-11-29 18:13:27 +09:00
Dean Herbert
a7e4e7be3a Remove the ability to specify a filename in ReplaceFile 2021-11-29 18:11:51 +09:00
Dean Herbert
f19cfcc82e Make readonly 2021-11-29 17:38:54 +09:00
Dean Herbert
673481ebc5 Use ThreadLocal to avoid potential threading issues 2021-11-29 17:38:42 +09:00
Dean Herbert
6dcc244e21 Fix RealmLive not working is data is attached to realm post-ToLive call 2021-11-29 17:34:58 +09:00
Dean Herbert
c98451a7bf Fix potential deadlock on nested context creation requests 2021-11-29 16:29:53 +09:00
Dean Herbert
2ee08b5f4c Fix undelete on existing not committing transaction 2021-11-29 14:48:31 +09:00
Dean Herbert
cb8fa80352 Don't dispose fetched realm instance when using RealmLive.Value
See https://github.com/realm/realm-dotnet/discussions/2734#discussioncomment-1705038 for reasoning.
2021-11-29 14:25:43 +09:00
Dean Herbert
e40e5096ea Remove RealmLive context re-fetch optimisation for now 2021-11-29 14:25:43 +09:00
Dean Herbert
3bd4872520 Add note about indexing support for RealmNamedFileUsage.Filename 2021-11-29 14:12:22 +09:00
Dean Herbert
21e8ab8357 Return ILive from ToLive calls instead of realm-typed instance 2021-11-29 14:12:22 +09:00
Bartłomiej Dach
93b5aec23e
Fix realm migration failures when upgrading from old versions
* `RealmRulesetSetting` was added in 2021.916.0.
* `RealmKeyBinding` was added in 2021.703.0.

Attempting to upgrade from older releases than the above would cause
migrations up to schema versions 10 and 11 to fail.
2021-11-28 15:00:40 +01:00
Dan Balasescu
0d147b4ad9 Return null IPC response for archive imports 2021-11-28 22:59:53 +09:00
Dan Balasescu
e5dcfc3113 Use console IPC 2021-11-28 14:03:21 +09:00
Dean Herbert
51a7c60eec
Merge pull request #15835 from bdach/off-thread-transforms-unbind
Fix instances of components adding off-thread transforms on unbind
2021-11-28 09:27:43 +09:00
Bartłomiej Dach
db49d99cc0
Ensure correct disabled ruleset callback scheduling in ruleset selector 2021-11-27 15:28:23 +01:00
Bartłomiej Dach
05f7ea6b6d
Remove mentions of "panel" and "direct" from names of old download buttons 2021-11-27 15:08:03 +01:00
Bartłomiej Dach
a043d1e427
Move old beatmap download button to more general namespace 2021-11-27 15:06:57 +01:00
Bartłomiej Dach
251ab183a0
Move beatmap play button nearer its only remaining usage 2021-11-27 15:04:05 +01:00
Bartłomiej Dach
7419682334
Move icon pill to beatmap card-specific namespace 2021-11-27 15:01:48 +01:00
Bartłomiej Dach
6773877a40
Remove no-longer-used beatmap panels 2021-11-27 15:00:06 +01:00
Bartłomiej Dach
f4b7db5a7b
Ensure correct disabled beatmap callback scheduling in now playing overlay 2021-11-27 14:36:34 +01:00
Dean Herbert
0a75067ee5 Update framework 2021-11-27 12:13:39 +09:00
Dean Herbert
d570054b8c
Merge pull request #15801 from smoogipoo/playlist-item-add-owner
Add owner avatar to multiplayer playlist items
2021-11-27 00:30:35 +09:00
Dan Balasescu
2cc06a6ae1
Merge pull request #15820 from peppy/fix-track-owner-log
Fix incorrect logging of preview tracks without track owner
2021-11-27 00:25:54 +09:00
Dean Herbert
b8a47755fa Don't show loading tooltip for now
Should probably be replaced with a loading spinner in the future, don't
really like "loading" tooltips.
2021-11-26 22:54:11 +09:00
Dean Herbert
d5d1a4c0b5
Merge branch 'master' into playlist-item-add-owner 2021-11-26 22:43:08 +09:00
Dean Herbert
f16ef1ee69 Reapply schedule workaround for PreviewTrack 2021-11-26 22:34:05 +09:00
Dean Herbert
7f9cc4d5ff Fix incorrect logging of preview tracks without track owner 2021-11-26 21:37:43 +09:00
Dean Herbert
89b4e5cffb Rename mass deletion confirmation dialog 2021-11-26 18:18:45 +09:00
Dan Balasescu
e1445dcb05 Only show owner in match subscreen 2021-11-26 17:40:45 +09:00
Dan Balasescu
e9a19aacd7 Fix tests by requiring host 2021-11-26 17:23:50 +09:00
Dan Balasescu
8be2defd09 Right-align avatar 2021-11-26 17:17:06 +09:00
Dan Balasescu
8541db1e85 Merge branch 'master' into playlist-item-add-owner 2021-11-26 17:13:23 +09:00
Dan Balasescu
c7f905f8da
Merge pull request #15813 from peppy/beatmap-card/download-spinner
Show a spinner instead of the download button on the new card during beatmap download
2021-11-26 16:35:58 +09:00
Dan Balasescu
5e53f51c99
Merge pull request #15812 from peppy/realm-live-unmanaged-fetch-fix
Avoid attempting to fetch a non-managed `RealmLive` instance from the realm backing
2021-11-26 15:37:58 +09:00
Dean Herbert
bf443a5a7a Switch unnecessary return to break instead 2021-11-26 15:36:16 +09:00
Dean Herbert
5de2f6211d Show a spinner instead of the download button on the new card during beatmap download 2021-11-26 15:32:33 +09:00
Dean Herbert
8e16ff7f72
Merge pull request #15807 from bdach/beatmap-card/integration
Replace existing usages of beatmap panel with new beatmap card
2021-11-26 15:31:55 +09:00
Dean Herbert
40d1b97af1 Avoid attempting to fetch a non-managed RealmLive instance from the realm backing
For compatibility reasons, we quite often convert completely unmanaged
instances to `ILive`s so they fit the required parameters of a property
or method call. This ensures such cases will not cause any issues when
trying to interact with the underlying data.

Originally I had this allowing write operations, but that seems a bit
unsafe (when performing a write one would assume that the underlying
data is being persisted, whereas in this case it is not). We can change
this if the requirements change in the future, but I think throwing is
the safest bet for now.
2021-11-26 15:06:14 +09:00
Dean Herbert
13612c0d02 Add equality support to ILive types 2021-11-26 14:56:16 +09:00
Dean Herbert
1d96542a2a Fix incorrect ConfigureAwait specification causing stalled test
This only occurs on upcoming changes I have (occurred when switching
existing skin import tests across to realm). Unsure why it was set to
`true`, seems like a weird oversight.
2021-11-26 12:47:43 +09:00
Bartłomiej Dach
a188d6662f
Use beatmap card in solo spectator screen 2021-11-25 22:31:02 +01:00
Bartłomiej Dach
ec2265d5bb
Use beatmap cards in spotlights layout 2021-11-25 22:30:47 +01:00
Bartłomiej Dach
42b09fd1ec
Use beatmap cards in user profile overlay 2021-11-25 22:30:47 +01:00
Bartłomiej Dach
0f9ebe3d5d
Use beatmap cards in beatmap listing overlay 2021-11-25 22:30:46 +01:00
Bartłomiej Dach
84a36ab4a9
Add integration with beatmap set overlay 2021-11-25 22:30:46 +01:00
Dan Balasescu
1f5d95666e Add owner avatar to multiplayer items 2021-11-25 23:15:29 +09:00
Dean Herbert
7a3c69544b
Merge pull request #15799 from smoogipoo/fix-songselect-test-failures-2
Fix SongSelect-related test failures
2021-11-25 23:01:06 +09:00
Dan Balasescu
7c91cd674e Update test classes to set owner ids 2021-11-25 22:17:18 +09:00
Dan Balasescu
8a941fa422 Add owner id to PlaylistItem 2021-11-25 21:41:03 +09:00
Dan Balasescu
09dd054283 Fix SongSelect-related test failures 2021-11-25 21:11:13 +09:00
Dan Balasescu
f712aeee01
Merge pull request #15795 from peppy/realm-integration/separate-download-flow
Split out download logic from main manager classes
2021-11-25 20:59:23 +09:00
Dan Balasescu
d7a960212f
Merge pull request #15794 from peppy/realm-integration/stable-export-flow
Split out legacy model export logic into `LegacyModelExporter` classes
2021-11-25 20:20:18 +09:00
Dan Balasescu
8baf00c023 Remove unused using 2021-11-25 19:36:06 +09:00
Dan Balasescu
2b85738384
Merge pull request #15797 from peppy/remove-pointless-i-beatmap-model-manager
Remove pointless interface class for `IBeatmapModelManager`
2021-11-25 19:07:19 +09:00
Dan Balasescu
d3a4890c31
Merge branch 'master' into realm-integration/stable-export-flow 2021-11-25 19:06:18 +09:00
Dean Herbert
e2ebcf7a26 Remove unnecessary manager parameter
Confused why I added this in the first place..
2021-11-25 18:36:03 +09:00
Dean Herbert
a6ee0eec0d Remove pointless interface class for IBeatmapModelManager
Was originally going to be used but serves no purpose any more.
2021-11-25 18:15:10 +09:00
Dean Herbert
eeccf836ec Remove unnecessary GameHost parameter 2021-11-25 17:42:41 +09:00
Dean Herbert
a2ab9f457d Move score download logic out of ScoreManager 2021-11-25 17:33:04 +09:00
Dean Herbert
716543b5b3 Move beatmap download logic out of BeatmapManager 2021-11-25 17:29:41 +09:00
Dean Herbert
79459c1aeb Fix typo in class and variable names 2021-11-25 17:12:15 +09:00
Dean Herbert
ec9a09d5a4 Add missing licence headers 2021-11-25 16:56:19 +09:00
Dean Herbert
cc1b91e4bd Split out legacy model export logic into LegacyModelExporter classes 2021-11-25 16:41:12 +09:00
Dean Herbert
7488ccd5fe Update all models to implement IHasNamedFiles 2021-11-25 16:41:12 +09:00
Dan Balasescu
6d60725b31
Merge branch 'master' into realm-integration/stable-import-flow 2021-11-25 16:36:02 +09:00
Dean Herbert
416ee2447a Move archive filename helper method to extension method 2021-11-25 16:35:54 +09:00
Dan Balasescu
d8a23aad4d
Merge pull request #15791 from peppy/realm-integration/skin-model-manager
Split out `SkinModelManager` from `SkinManager`
2021-11-25 16:35:05 +09:00
Dean Herbert
a0fa030f55 Rename base class to LegacyModelImporter 2021-11-25 16:33:04 +09:00
Dean Herbert
210dfab392
Merge pull request #15790 from peppy/realm-integration/score-manager-interface-reduction
Reduce interface exposure of `ScoreManager`
2021-11-25 15:46:38 +09:00
Dean Herbert
2df793ca22 Inline individual importers to avoid unnecessary construction for singular import types 2021-11-25 15:44:04 +09:00
Dean Herbert
9dcb20a821 Rename Stable to Legacy and add xmldoc 2021-11-25 15:39:05 +09:00
Dean Herbert
6cab7b877d Move stable import handling into its own class 2021-11-25 15:36:58 +09:00
Dean Herbert
2bfc473689 Split out SkinModelManager from SkinManager 2021-11-25 15:14:43 +09:00
Dean Herbert
60b207f20a Reduce interface exposure of ScoreManager 2021-11-25 14:34:13 +09:00
Dean Herbert
bcdb73e1e8 Clean up files last 2021-11-25 14:28:27 +09:00
Dean Herbert
315e126497 Add automatic clean-up call for RealmFileStore 2021-11-25 14:17:44 +09:00
Dean Herbert
204bd2b604 Ensure Cleanup can run from non-update thread and add basic log output 2021-11-25 14:17:44 +09:00
Dean Herbert
fd321109da Remove unnecessary virtual specification on Refresh 2021-11-25 14:06:12 +09:00
Dean Herbert
306e13fa7b Remove all usages of FileStore.QueryFiles 2021-11-25 14:06:02 +09:00
Dean Herbert
1533e245de
Merge pull request #15767 from bdach/beatmap-card/track-preview
Add preview track playback function to beatmap card
2021-11-25 12:08:03 +09:00
Bartłomiej Dach
20f71da2c4
Merge branch 'master' into fix-mp-resuming 2021-11-24 20:17:58 +01:00
Dan Balasescu
1865227e08
Merge pull request #15773 from peppy/remove-model-file-list-inits
Initialise `IHasFiles<TFile>.Files` lists at construction time
2021-11-24 21:05:36 +09:00
Dan Balasescu
016684b52d Remove unreachable code 2021-11-24 20:29:47 +09:00
Dan Balasescu
132bb59203 Update working beatmap when returning to match 2021-11-24 19:56:02 +09:00
Dan Balasescu
ce8500a732
Merge branch 'master' into remove-model-file-list-inits 2021-11-24 19:46:42 +09:00
Dean Herbert
b739b6a725
Merge branch 'master' into beatmap-card/track-preview 2021-11-24 18:54:25 +09:00
Dean Herbert
61009013cc Give a more correct default value to beatmap and set statuses 2021-11-24 18:48:12 +09:00