Commit Graph

55 Commits

Author SHA1 Message Date
Salman Ahmed c8665dc93b Update `TimeSpan` localisation to use `ToLocalisableString` 2022-04-28 11:12:50 +03:00
Dean Herbert c99397f75a Add the ability to add settings to skinnable elements 2022-03-13 17:03:25 +09:00
Dean Herbert 42e07b7308 Convert to extension method to avoid recursive calls 2022-03-03 14:15:37 +09:00
Dean Herbert 2f6e65a9a2 Gracefully handle undefined `DateTimeOffset` values
Only seems to happen in tests, but best to safeguard against this
regardless.
2022-02-21 16:35:40 +09:00
Dean Herbert fc1877b6fa Move to extension method and revert logic to match previous implementation 2022-02-21 13:42:26 +09:00
Dean Herbert 5736b7d978 Fix cursors sent to osu-web being potentially string formatted in incorrect culture
Fixed as per solution at https://github.com/JamesNK/Newtonsoft.Json/issues/874.

Note that due to the use of `JsonExtensionDataAttribute` it's not
feasible to change the actual specification to `JValue` in the
`Dictionary`.

In discussion with the osu-web team, it may be worthwhile to change the cursor
to a string format where parsing is not required at our end. We could already
do this in fact, but there are tests that rely on it being a `JToken` so the
switch to `JValue` seems like the easier path right now.
2022-01-04 17:20:46 +09:00
Dean Herbert c9f6c5c673 Add `MatchesOnlineID` implementation for `IScoreInfo` 2021-12-10 18:34:31 +09:00
Dean Herbert 416ee2447a Move archive filename helper method to extension method 2021-11-25 16:35:54 +09:00
Dean Herbert 3946a39b65 Make `BeatmapSet.Metadata` non-null 2021-11-24 15:03:34 +09:00
Dean Herbert 6fb2757739 Remove usage of `Nuget.Packaging` extension methods for `IList.AddRange` 2021-11-23 15:02:02 +09:00
Dean Herbert 59e763467f Move `StoragePath` implementation to an extension method 2021-11-19 16:08:38 +09:00
Dean Herbert 66c307e0ee Remove usage of key repeat helper method 2021-11-18 13:13:36 +09:00
Dean Herbert 2cbdac91ad Add missing `APIUser` comparison method 2021-11-16 12:44:20 +09:00
Dean Herbert fbc46941fa Add type safety to `MatchesOnlineID` extension methods 2021-11-16 12:37:47 +09:00
Dean Herbert 18f73b985b Make `ModelExtensions` nullable enabled 2021-11-15 14:38:01 +09:00
Dean Herbert a4c11e8813 Use extension method to compare online IDs 2021-11-15 14:34:50 +09:00
Dean Herbert 98dcf487da Add fallback case for `GetDisplayString` if called on a null reference 2021-11-12 16:02:51 +09:00
Bartłomiej Dach 5ec8288508
Add `GetDisplayString()` extension to handle all model interface types globally 2021-11-09 13:53:07 +01:00
Bartłomiej Dach baf9961934
Amend xmldoc of shake extension method 2021-09-14 22:50:45 +02:00
Dean Herbert e17b800470 Move shake logic into extension method 2021-09-14 14:44:23 +09:00
Dean Herbert 7a44ddb36b Update incorrect xmldoc 2021-07-31 16:48:45 +09:00
Dean Herbert 472c0137ec Add new extension for formatting time durations 2021-07-31 16:45:53 +09:00
Dean Herbert c751e087ca
Merge branch 'master' into skin-editor-closest-anchor 2021-06-18 18:54:07 +09:00
Bartłomiej Dach cc5145a131 Fix languages with a sub-language part not working properly 2021-06-16 11:10:03 +02:00
Robin Avery dc50ae40b9
Rename `OverridesClosestAnchor` to `UsesFixedAnchor` 2021-06-08 08:28:42 -04:00
Robin Avery 133d72a8c0
Rename UsingClosestAnchor
It is now "OverridesClosestAnchor". The logic is inverted accordingly.
2021-06-07 00:14:36 -04:00
Robin Avery f28916e30f
Remove all UsingClosestAnchor() extension logic
It is replaced with ISkinnableDrawable.UsingClosestAnchor.
2021-06-07 00:04:53 -04:00
Robin Avery da1c38d5a9
Uninvert logic of SkinnableInfo.UsingClosestAnchor
Also rename "IsUsingClosestAnchor" to simply "UsingClosestAnchor".
2021-06-06 10:13:35 -04:00
Robin Avery 11b1b8c633
Add serialization support via SkinnableInfo 2021-06-06 07:18:08 -04:00
Robin Avery c9f5808bf2
Move lookup logic to DrawableExtensions
This is now a global lookup to be shared by serialization and editor.
2021-06-06 06:58:21 -04:00
Bartłomiej Dach 43c73f9583 Mark access to exception if task faulted as safe
There are seemingly no C#-side compile-time guarantees that it is safe,
but if the task's state is `Faulted` (as is checked right before), the
exception cannot be null as per the documentation.
2021-05-15 00:09:34 +02:00
Dean Herbert 3b862798e9 Standardise naming of methods related to SkinnableInfo 2021-05-13 13:14:49 +09:00
Dean Herbert 8b9ac86d4b Merge branch 'master' into skin-serialisation 2021-05-13 12:35:06 +09:00
Bartłomiej Dach 1b579dd838 Extract invariant instantiation info extension method 2021-05-12 23:23:51 +02:00
Dean Herbert c94df672e5 Also serialise `Origin` out 2021-05-11 18:39:14 +09:00
Dean Herbert 6a88b8888b Add basic support for child serialisation 2021-05-11 18:39:14 +09:00
Dean Herbert 95a497e9df Remove unused interface class for simplicity 2021-05-11 18:39:14 +09:00
Dean Herbert 95a8f21ab2 Add the concept of skinnable target containers and mark a basic one for HUD elements 2021-05-11 18:39:14 +09:00
Dean Herbert b9ab9342fa Setup basics to allow extracting serializable content from skinnable `Drawable`s 2021-05-11 18:39:14 +09:00
Dean Herbert 9c62c90cfc Refactor `SelectionBlueprint` and `MoveSelectionEvent` to work in screen-space coordinates
Until now, the implementation of the overrides in `SelectionBlueprint`
have been confusing to the point where I would just implement by
trial-and-error (or copying from an existing implementation). This was
due to a combination of using "object" space coordinates
(ie. the thing the `Blueprint` is operating on) and screen-space coordinates.

This change switches all event related coordinates to screen-space,
which is how we already handle rotation/scale operations. With the
introduction of other editor types where the related objects are
drawables, this also makes a lot more sense.
2021-04-29 16:10:42 +09:00
Dean Herbert 8282f38eb7 Fix volume controls not supporting key repeat 2021-04-14 13:11:24 +09:00
Bartłomiej Dach 9ab1ad25eb Merge branch 'master' into fix-leave-room-race-2 2021-01-30 13:41:04 +01:00
Dean Herbert a61444690e Remove all usage of CatchUnobservedExceptions
This should no longer be required with the recent framework side change
that stops a game from crashing on unobserved exceptions
(https://github.com/ppy/osu-framework/pull/4171).
2021-01-29 16:32:29 +09:00
Dean Herbert a30aecbafe Comment and add xmldoc 2021-01-27 20:01:21 +09:00
Dean Herbert fcfb0d52c2 Proposal to use extension method instead of TaskChain class 2021-01-27 19:50:16 +09:00
smoogipoo 085115cba5 Make threading even more thread safe 2021-01-26 22:49:01 +09:00
Bartłomiej Dach 2d279350ad Catch multiplayer client-related unobserved exceptions better
Silencing an exception from a task continuation requires accessing
`task.Exception` in any way, which was not done previously if
`logOnError` was false.

To resolve without having to worry whether the compiler will optimise
away a useless access or now, just always log, but switch the logging
level. The unimportant errors will be logged as debug and therefore
essentially silenced on release builds (but could still be potentially
useful in debugging).
2020-12-31 11:39:42 +01:00
Dean Herbert 0ddcab574f Rename method to avoid weird code analysis rule 2020-12-23 17:14:58 +09:00
Dean Herbert 1864da00e6 Add extension method to handle cases of fire-and-forget async usage 2020-12-23 17:10:02 +09:00
Dean Herbert 1386c9fe66 Standardise time display formats across the editor 2020-09-30 12:45:43 +09:00