1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-21 17:23:05 +08:00
Commit Graph

634 Commits

Author SHA1 Message Date
Dean Herbert
56abe54fe6 Redirect graceful exiting to standard exit flow
Rather than doing a completely forced exit as we were, this will now
follow a more standard flow with the ability for the user to abort along
the way. This is more in line with how I wanted this to work.

Note that this means a confirmation is now shown. It has been discussed
in the past that this confirmation should only show when there's an
ongoing action implies the user may want to cancel the exit. For now I
think this is fine.

Addresses
https://github.com/ppy/osu/discussions/18399#discussioncomment-2811311
2022-06-18 23:43:46 +09:00
Dan Balasescu
f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
Bartłomiej Dach
651862fee0
Merge branch 'master' into database-migration-reliability 2022-06-16 17:19:58 +02:00
Dean Herbert
8ea3042435 Move file extensions specification to common class 2022-06-16 18:00:27 +09:00
Dean Herbert
4526f8c07d Move database backup creation to async thread where possible 2022-06-16 17:01:17 +09:00
Dean Herbert
17dbb599d1 Don't backup collection database
This is no longer required due to recent changes which mean the
collection database will retain beatmap references even if they aren't
loaded locally (see https://github.com/ppy/osu/pull/18619).
2022-06-16 16:48:53 +09:00
Bartłomiej Dach
1acbb87aa6
Ensure AvailableMods.Value is never null 2022-06-15 17:40:16 +02:00
Bartłomiej Dach
30382b0445
Fill out GetModsFor() xmldoc and annotate items as non-null 2022-06-15 17:40:15 +02:00
Bartłomiej Dach
e74b563b91
Add protection against arbitrary exceptions from GetModsFor() 2022-06-15 17:31:46 +02:00
Bartłomiej Dach
6e5e506fb4
Add protection against rulesets returning null mods 2022-06-15 17:31:46 +02:00
Dean Herbert
54a32bde44 Don't report sentry errors from builds targetting a different server 2022-06-03 16:29:55 +09:00
Dan Balasescu
f111d33b25
Merge pull request #18339 from peppy/editor-timing
Add first pieces of editor timing UI
2022-05-23 11:12:22 +09:00
Dean Herbert
007582afb9 Remove unused usings resulting from namespace move 2022-05-22 23:55:33 +09:00
Dean Herbert
eabf578282 Use interface to convey beat sync information 2022-05-22 22:44:54 +09:00
Dean Herbert
218642c300 Update unsafe file write usages 2022-05-16 18:05:27 +09:00
Dean Herbert
9dce329e99 Remove build suffix from version when reporting to sentry 2022-05-11 10:38:35 +09:00
Dean Herbert
b2a57c34bb Move implementation to base 2022-05-10 19:10:34 +09:00
Dean Herbert
4d22f26266 Rename property and improve xmldoc 2022-05-10 19:07:07 +09:00
Dean Herbert
cac6d5569c Fix incorrect variable reference in log output 2022-05-10 19:07:00 +09:00
Salman Ahmed
bcd91ac743 Move exception soft-handling logic to OsuGameBase 2022-05-10 10:02:32 +03:00
Dean Herbert
975883da5c Move all usages of client.realm filename to a single const 2022-03-30 13:34:48 +09:00
Dean Herbert
b04ca111c6 Allow realm subscriptions to be initiated from a non-update thread 2022-03-24 23:41:07 +09:00
Dan Balasescu
21beb8774d Change to lambda method 2022-03-14 13:54:54 +09:00
Dan Balasescu
4ae6cba080 Expose UseDevelopmentServer as virtual 2022-03-14 13:49:38 +09:00
Dan Balasescu
3a03833912
Merge pull request #16890 from peppy/beatmap-decoder-ruleset-store
Fix `LegacyBeatmapDecoder` not populating correct rulesets
2022-02-25 19:03:43 +09:00
Dean Herbert
98aaf83177 Add a centralised constant for the osu URL schema protocol 2022-02-18 15:57:37 +09:00
Dean Herbert
7a69de0060 Split out realm portion of RulesetStore 2022-02-16 17:13:31 +09:00
Susko3
214b2724de Merge branch 'master' into input-settings
# Conflicts:
#	osu.Game/OsuGameBase.cs
#	osu.iOS/OsuGameIOS.cs
2022-02-12 11:48:46 +01:00
Dean Herbert
44f2d8a448 Allow game folder migration to fail gracefully when cleanup cannot completely succeed 2022-02-10 19:30:26 +09:00
Salman Ahmed
5e47ce333c Change SafeAreaOverrideEdges to be get-only and protected 2022-02-04 16:10:49 +03:00
Dean Herbert
915d63f6de Limit safe area bottom override to iOS only 2022-02-04 18:58:29 +09:00
Dean Herbert
8fc4d0c6f5 Add override edge rule to overflow above home indicator on iOS 2022-02-04 18:20:17 +09:00
Dean Herbert
52fdf0349f Add safe area support via ScalingContainer 2022-02-04 16:37:05 +09:00
Bartłomiej Dach
16e0cc6a2b
Remove IIpcHost param from ScoreManager
No longer used since 3e3b9bc963.
2022-02-01 21:35:40 +01:00
Dean Herbert
08948f60f3 Move backups to "backups" subfolder to make them easier to find 2022-01-27 14:39:13 +09:00
Dean Herbert
fc58b202b1 Fix crash when trying to migrate collection database that doesn't exist 2022-01-25 15:45:23 +09:00
Dean Herbert
6eb2c28e41 Rename RealmContextFactory to RealmAccess 2022-01-24 20:38:07 +09:00
Dean Herbert
855ef3fa92 Create backup before any realm contexts are used 2022-01-22 11:52:46 +09:00
Dean Herbert
5be41a189b Expose EF context factory for use in external migration logic 2022-01-21 14:56:28 +09:00
Dean Herbert
5df46d0a54 Remove all calls to Realm.Refresh to fix blocking overhead from subscriptions
Turns out this is not required if realm is aware of a
`SynchronizationContext`. See
https://github.com/realm/realm-dotnet/discussions/2775#discussioncomment-2005412
for further reading.
2022-01-20 20:23:18 +09:00
Dean Herbert
fad66d7682 Backup collections alongside main databases when migrating to realm 2022-01-19 16:31:36 +09:00
Dan Balasescu
8c120c6bfb
Merge pull request #16491 from peppy/realm-integration/safer-migration
Improve safety and logging of realm migration process
2022-01-19 12:23:48 +09:00
Dean Herbert
02baad30d7 Merge branch 'master' into global-bindable-thread-safety 2022-01-18 18:12:00 +09:00
Dean Herbert
8b8940439e Fix starting game with non-default ruleset failing 2022-01-18 16:22:15 +09:00
Dean Herbert
b1a75ce480 Permanently delete client.db after migration completes 2022-01-18 14:17:43 +09:00
Dean Herbert
b9ec860cf2 Ensure global beatmap/ruleset are always mutated from the update thread
This came up while testing the new realm thread, where `MusicController`
would fall over when `OsuTestScene` changes the global beatmap from an
async load thread (causing a cross-thread realm access).

We don't want to have to schedule every usage of these bindables, so
this seems like a good constraint to put in place.
2022-01-18 13:29:24 +09:00
Susko3
f3eaa95041 Move input handler settings creation to OsuGameBase 2022-01-15 14:53:41 +01:00
Dean Herbert
ded1d87739 Move RulesetStore construction earlier in process so rulesets are available for EF migration 2022-01-13 18:23:18 +09:00
Dean Herbert
e0c59f4b3c Localise EF context factory usage to migration only 2022-01-12 17:49:11 +09:00
Dean Herbert
47390d7ec3 Update handling of ruleset nullability when handling a game-wide change 2022-01-12 17:49:10 +09:00
Dean Herbert
3ecd535f6e Add back missing IRulesetStore cache 2022-01-12 17:00:16 +09:00
Dean Herbert
53792811b2 more fixes (almost compiles, except ruleset and manager) 2022-01-12 16:57:27 +09:00
Dean Herbert
b8cd3cdbbc Various updates to ruleset and primary key usages to move closer to realm support 2022-01-12 16:57:13 +09:00
Dean Herbert
116f35c52a Remove EF FileStore 2022-01-12 16:39:36 +09:00
Dean Herbert
3ecd889fef Replace EF RulesetStore with realm version
Pass full EF context factory to `RealmContextFactory` for migration purposes
2022-01-12 16:39:36 +09:00
Bartłomiej Dach
5cbaa028eb
Use extracted ruleset config cache implementation in DI 2021-12-23 19:02:10 +01:00
Dean Herbert
452fa93444 Merge branch 'master' into realm-integration/skins-rebase 2021-12-06 15:21:02 +09:00
Dean Herbert
e75e209053 Cache and consume IRulesetStore where feasible 2021-12-03 18:16:01 +09:00
Dean Herbert
65f0a80c97 Merge branch 'master' into realm-integration/skins-rebase 2021-12-02 13:37:20 +09:00
Dean Herbert
87883f1fe4 Add BeatmapLookupCache 2021-11-30 19:28:45 +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
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
29d074bdb8 Implement missing behaviours required for skin file operations via RealmArchiveModelManager 2021-11-29 18:28:25 +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
Dan Balasescu
c4b5a07f4b
Merge branch 'master' into realm-move-data-migration-to-context-factory 2021-11-24 14:40:26 +09:00
Dean Herbert
729f681938 Update cases where equality can be used instead of primary key equality 2021-11-24 12:49:57 +09:00
Dean Herbert
4149d458f0 Move realm data migrations inside the RealmContextFactory 2021-11-23 18:14:15 +09:00
Dean Herbert
505fede44d Pass the full EF context rather than a legacy RulesetStore 2021-11-23 17:40:20 +09:00
Dean Herbert
1f321e2910 Run EF migrations earlier to ensure it is complete before usage 2021-11-23 11:48:58 +09:00
Dean Herbert
329bae50b0 Switch realm ruleset configuration to use ruleset's ShortName as key 2021-11-22 18:52:00 +09:00
Dean Herbert
ca26b6c540 Provide RealmContextFactory with the EF RulesetStore for migration purposes 2021-11-22 18:51:44 +09:00
Dean Herbert
3b485b5f37 Rewrite PreviewTrackManager to avoid constructing TrackBass locally
This paves the way for the framework code quality change
(https://github.com/ppy/osu-framework/pull/4873) which stops exposing
the constructor.

Most of the restructuring here is required to give `PreviewTrackManager`
an adjustable target to apply the global mute.
2021-11-09 17:38:12 +09:00
Dean Herbert
f5842e7587 Shorten variable names 2021-11-08 18:24:37 +09:00
Dean Herbert
3183b20e2f Merge branch 'master' into use-ReadableKeyCombinationProvider 2021-11-08 18:15:49 +09:00
Dean Herbert
ea0715cce4 Add missing dispose call 2021-11-08 16:35:05 +09:00
Dean Herbert
dbdae4b033 Merge branch 'master' into realm-ruleset-store-thread-correctness 2021-11-08 15:21:30 +09:00
Dean Herbert
413f98999a Start initialising RealmRulesetStore on startup 2021-11-08 15:10:19 +09:00
Susko3
c3069ad002 Change to use ReadableKeyCombinationProvider
Changes all usages of `KeyCombination.ReadableString()` to
`ReadableKeyCombinationProvider.GetReadableString()`.

Subscribing to `KeymapChanged` is only required in `KeyButton`.
All other places query `GetReadableString()` every time.
2021-11-08 06:55:26 +01:00
Dean Herbert
54f72d68ca Revert weird event flow in model manager/importers 2021-11-05 19:12:49 +09:00
Dean Herbert
818fac6ac8 Make realm a non-drawable component to better order disposal
Until now, the `RealmContextFactory` would be disposed as part of the
drawable hierarchy. This is too early, as it may be being used by higher
level components (like `ConfigManager`s, see #15115) that perform final
operations after the drawables have been disposed.

Seems to make sense moving this out of the drawable hierarchy and in
line with how we were doing things with EF.
2021-10-15 13:58:16 +09:00
Dean Herbert
0df9ab3eec Fix migration blocking code running on the wrong thread 2021-10-12 16:04:09 +09:00
Dean Herbert
57c5be39d3 Merge branch 'master' into remove-local-realm-thread-switch-handling 2021-10-04 20:52:44 +09:00
Dean Herbert
853cf6feaa Rename last remaining BeatmapInfo Beatmap usage 2021-10-04 17:35:53 +09:00
Dean Herbert
ae5d1e8ac0 Merge branch 'master' into remove-local-realm-thread-switch-handling 2021-10-04 17:17:10 +09:00
Bartłomiej Dach
86240cc8ec
Add alternate Torus font 2021-10-03 23:36:39 +02:00
Dan Balasescu
d24f89fead
Merge pull request #14906 from peppy/update-realm-context-factory
Refine `RealmContext` implementation
2021-10-01 22:57:03 +09:00
Dean Herbert
3ddb348252 Merge branch 'online-lookup-cache-separation' into beatmap-manager-split 2021-10-01 01:49:31 +09:00
Dean Herbert
2ed28f625a Pass whole queue in rather than function 2021-10-01 01:46:37 +09:00
Dean Herbert
27c4f2b06e Add missing disposal 2021-10-01 01:38:50 +09:00
Dean Herbert
38cd383aaf Remove local handling of realm when switching thread modes 2021-10-01 00:27:54 +09:00
Dean Herbert
9fa901f6aa Refine RealmContext implementation API 2021-09-30 23:56:38 +09:00
Dean Herbert
7a72747d88 Add back optional online lookups 2021-09-30 17:18:39 +09:00
Dean Herbert
90225f2082 Hook up all required interfaces to new BeatmapManager 2021-09-30 17:18:39 +09:00
Dean Herbert
6ffd9fdcfa Split out BeatmapOnlineLookupQueue from BeatmapManager 2021-09-30 14:46:01 +09:00
Dean Herbert
edb1230111 Fix potential nullref throw on failed startup 2021-09-16 22:48:09 +09:00
Dean Herbert
a1d325cb22 Mark key and value non-nullable (at realm end) and simplify Value logic 2021-09-15 17:16:05 +09:00
Dean Herbert
a150fb2996 Add nullability directive and make variant non-nullable 2021-09-15 17:16:05 +09:00
Dean Herbert
dcfe9c67e3 Make ruleset id non-nullable 2021-09-15 17:12:04 +09:00
Dean Herbert
80ecf81be3 Rename all databased setting classes to be specific to rulesets for now 2021-09-15 17:12:04 +09:00
Dean Herbert
5bb741b4e8 Remove migration of key bindings 2021-09-15 17:04:38 +09:00
Dean Herbert
2bcb3fd304 Add migration of existing settings 2021-09-15 16:31:13 +09:00
Dean Herbert
a2f1752344 Make settings works with current caching structure
Will likely pull out that `RulesetConfigCache` next, but this is an
"everything works" state.
2021-09-15 16:31:13 +09:00
Dean Herbert
187c557ea8 Begin migrating settings implementation across to realm 2021-09-15 16:22:14 +09:00
Dean Herbert
1aa95de530 Merge branch 'master' into score-ordering 2021-09-07 17:45:38 +09:00
Dan Balasescu
79fd2d46f6
Merge branch 'master' into test-efficiency 2021-09-07 16:14:12 +09:00
Dean Herbert
5b13b566b5 Reduce startup overhead during default key binding handling 2021-09-07 15:19:23 +09:00
Dean Herbert
2a5b857f10 Avoid loading unnecessary fonts in headless testing 2021-09-07 00:45:53 +09:00
Dean Herbert
ab1c64591f Move sample playback debounce time to central const 2021-09-05 13:25:10 +09:00
smoogipoo
f14d66aafc Commit missed line 2021-09-02 10:35:00 +09:00
Bartłomiej Dach
d9db1ecee9
Remove game-global popover container 2021-08-28 20:05:59 +02:00
Dean Herbert
46c72334fb Fix stack overflow in ruleset change rejection logic 2021-07-30 01:54:30 +09:00
Dean Herbert
046f30a268 Reject invalid global ruleset values 2021-07-26 16:34:38 +09:00
Dean Herbert
481e4dedb0 Move PopoverContainer to OsuGameBase 2021-07-13 16:51:31 +09:00
Dean Herbert
ec71deec51 Remove some mentions of "lazer"
I am aware there are more throughout the codebase but intentionally left
the remaining mentioned for one reason or another. The intention here is
to mainly change user-facing versioning to change the positioning of the
"lazer" term (to be where we would expect "cuttingedge" or "beta" to
be).
2021-07-04 12:41:27 +09:00
Dean Herbert
9acc5e38bb Add basic logging for osu! storage migration
When looking into the test failure at https://github.com/ppy/osu/runs/2940065457, it became apparent that we are not showing the migration process anywhere in logs. It's the cause of many issues, and we would want to see this in CI and user logs when occurring.
2021-06-29 20:23:25 +09:00
Dean Herbert
7dd566dc46
Add null check for safety
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2021-06-28 15:08:49 +09:00
Dean Herbert
57ae87956a Update execution state change blocking logic in line with framework changes 2021-06-25 15:27:40 +09:00
Dean Herbert
6922de12c6 Add extra null safety in dispose call 2021-06-24 17:17:12 +09:00
smoogipoo
c85edd2b55 Merge branch 'master' into fix-realm-state-change-crashes 2021-06-23 21:20:53 +09:00
Dean Herbert
d148656108 Update in line with framework event structural changes (and add unbind) 2021-06-23 18:08:34 +09:00
Dean Herbert
28f4c56cd6 Fix minor typo in comment 2021-06-23 16:30:28 +09:00
Dean Herbert
f03c2bab48 Update event name in line with framework changes 2021-06-22 22:45:13 +09:00
Dean Herbert
a4b66bec2e Ensure realm contexts are flushed when update thread changes native thread 2021-06-22 18:18:25 +09:00
Dean Herbert
3f336d88ec
Merge pull request #11461 from peppy/realm-key-binding-store
Add initial realm database implementation with KeyBindingStore migration
2021-06-19 02:49:41 +09:00
smoogipoo
5cf2ac78fc Adjust font namespaces 2021-06-18 15:40:35 +09:00
Gagah Pangeran Rosfatiputra
4b926791b5
add inter font 2021-06-16 21:13:01 +07:00
Dean Herbert
9044a20120 Merge branch 'master' into realm-key-binding-store 2021-06-10 13:58:08 +09:00
Dean Herbert
071c07586a Increase music volume back to 80% for the time being 2021-06-04 15:00:53 +09:00
Dean Herbert
b16d10bd95 Provide game-wide resources via IStorageResourceProvider 2021-05-31 18:57:47 +09:00
smoogipoo
a4dca6f839 Reorder methods around load() 2021-05-31 13:39:18 +09:00
Dean Herbert
ce96c58230 Move public members up 2021-05-28 02:46:26 +09:00
Dean Herbert
fe6b1936cb Move OsuUserInputManager out from nested class 2021-05-28 02:46:03 +09:00
Dean Herbert
b4c13d837d Move import logic out to partial class 2021-05-28 02:44:44 +09:00
Dean Herbert
b8edca59eb General function reorganisation 2021-05-28 02:37:14 +09:00
Dean Herbert
4e49fbf7fb Switch protected properties to private where feasible 2021-05-28 02:30:31 +09:00
Dean Herbert
d24a712dd4 Move protected properties to one location and mark setters private where feasible 2021-05-28 02:27:06 +09:00
Dean Herbert
df703b68ec Merge branch 'master' into realm-key-binding-store 2021-05-25 13:41:48 +09:00
smoogipoo
a74405d0ed Merge branch 'master' into restructure-spectator-client 2021-05-20 18:53:42 +09:00
smoogipoo
df80531a0a Split online connectivity into OnlineSpectatorClient 2021-05-20 16:30:56 +09:00
smoogipoo
6beeb7f7c4 Rename SpectatorStreamingClient -> SpectatorClient 2021-05-20 15:55:07 +09:00
smoogipoo
d197a7f6f5 Rename multiplayer client classes 2021-05-20 15:39:45 +09:00
Dean Herbert
9770c316e2 Add back the construction of the KeyBindingStore
This reverts commit 21b6adbf79.
2021-04-26 18:26:57 +09:00
Dean Herbert
21b6adbf79 Remove DI caching of RealmKeyBindingStore 2021-04-26 17:52:17 +09:00
Dean Herbert
8961203f08 Move guid initialisation to database model itself 2021-04-26 17:06:03 +09:00
Dean Herbert
78f274d51a Merge branch 'master' into realm-key-binding-store 2021-04-22 12:13:23 +09:00
Dean Herbert
dbb8f7f4a9 Tidy up initialisation code and avoid using DI on inherited class 2021-04-19 11:30:55 +09:00