1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-11 17:47:29 +08:00
Commit Graph

159 Commits

Author SHA1 Message Date
Dean Herbert
ee99b94940 Fix return condition from EnsureMutableSkin not accounting for "failed" imports 2022-04-29 13:46:18 +09:00
Dean Herbert
aabe586578 Add return value to EnsureMutableSkin to understand whether a new skin was made 2022-04-28 14:09:30 +09:00
Dan Balasescu
2b59f76b2d
Merge pull request #17596 from peppy/skin-editor-sprites
Allow importing sprites into a skin via drag-and-drop
2022-04-05 17:38:58 +09:00
Dean Herbert
43d03f2825 Put ToArray call in correct place in brackets 2022-04-01 19:30:16 +09:00
Dean Herbert
01681ee874 Add missing ToArray call
Not sure where this went, was there in my original commit.
2022-04-01 16:19:02 +09:00
Dean Herbert
762de3cc97 Replace invalidation logic with local realm notification subscription 2022-04-01 16:01:33 +09:00
Dean Herbert
9c3dad9fbf Add proof of concept flow to ensure RealmBackedResourceStore is invalidated on realm file changes
I'm not at all happy with this, but it does work so let's go with it for
now.
2022-04-01 16:01:33 +09:00
Dean Herbert
fca9faac9b Add SkinnableSprite for arbitrary sprite additions 2022-04-01 14:36:36 +09:00
Dean Herbert
69d4f86122 Fix automatically created "(modified)" skins getting conflicting names
Applies the already tested and proven method that is used in the editor
to the mutable skin creation flow.
2022-04-01 14:11:55 +09:00
Bartłomiej Dach
994fb966b6
Remove Host ctor param from SkinModelManager
No longer used since 29d074bdb8.
2022-02-01 21:37:19 +01:00
Dean Herbert
cd71ec0edd Remove ILive<> interface (and use abstract Live<> instead) 2022-01-26 13:38:56 +09:00
Dean Herbert
778d2a71b4 Remove Task from the inner-most Import method in RealmArchiveModelImporter
One of my pending work items for post-realm merge.

The lowest-level import task is no longer asynchronous, as we don't want
it to span multiple threads to allow easier interaction with realm.
Removing the `Task` spec simplifies a heap of usages.

Individual usages should decide whether they want to run the import
asynchronously, by either using an alternative override or spooling up a
thread themselves.
2022-01-25 15:30:29 +09:00
Dean Herbert
d7342880f5 Update remaining cases of clashes with realm.Write and realm.RegisterForNotifications 2022-01-25 13:09:48 +09:00
Dean Herbert
e23b10e6a5 Update remaining cases of clashing variable name in realm.Run(realm.. 2022-01-25 13:04:05 +09:00
Dean Herbert
6eb2c28e41 Rename RealmContextFactory to RealmAccess 2022-01-24 20:38:07 +09:00
Dean Herbert
114c9e8c1f Update all usages of CreateContext to use either Run or Write 2022-01-21 17:27:08 +09:00
Dean Herbert
a5d2047f05 Fix various cases of creating realm contexts from update thread when not necessary 2022-01-21 01:44:56 +09:00
Dean Herbert
00177a3ae1 Update usages to new naming 2022-01-06 22:54:43 +09:00
Dean Herbert
73b40e6833 Replace usage of .Result with .WaitSafelyForResult 2022-01-04 11:51:41 +09:00
Dean Herbert
441b7baa93 Provide a realm factory to usages of ToLive/RealmLive 2021-12-14 14:26:34 +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
0a14acfd83 Fix incorrect conditional on export/mutate feasability of skin 2021-12-02 13:41:58 +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
23146d59d1 Use ILive for current skin 2021-11-29 18:28:25 +09:00
Dean Herbert
94b10492be Update legacy SkinManager to match new interface 2021-11-29 18:20:07 +09:00
Dean Herbert
cc1b91e4bd Split out legacy model export logic into LegacyModelExporter classes 2021-11-25 16:41:12 +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
59e763467f Move StoragePath implementation to an extension method 2021-11-19 16:08:38 +09:00
smoogipoo
1e9211c00b Use explicit type 2021-11-02 15:41:25 +09:00
Dean Herbert
5d784b2ef8 Perform a consistency check by decoding the newly written skin.ini during ComputeHash
As this has regressed twice now, let's play it safe and bail rather than
stack overflowing. Note that as all the underlying issues that could
trigger this have been fixed, no additional tests have been added. To
test, comment out `SkinManager.cs` line 228-229 to cause a failure. The
new logic will kick in and show a log output message, but all tests will
still (correctly) pass.
2021-11-02 14:11:25 +09:00
Dean Herbert
2e66ab453d Always write automated changes to skin metadata at the end of the file
Apart from being cleaner (and allowing removal at the point of export,
if that is ever requires), this also gives us a better guarantee that
the metadata is going to take effect.

By writing the `[General]` section ourselves, we avoid any issues that
may be present from a user constructing the file (incorrectly)
themselves, such as multiple `Title:` entries or a malformed `[General]`
marker.

The main goal is to ensure that the name is updated to what we expect it
to be.
2021-11-02 14:11:25 +09:00
Dean Herbert
6b250955d7 Add missing verbatim string markers 2021-11-01 14:24:38 +09:00
Dean Herbert
5bfb16efe2 Ignore case when searching for existing skin.ini 2021-11-01 14:24:38 +09:00
Dean Herbert
26cf5370c3 Remove unused reader parameter 2021-10-24 23:48:46 +09:00
Bartłomiej Dach
051cc2cd92
Update reference to configuration population process in comment 2021-10-24 12:47:17 +02:00
Dean Herbert
93482414d6 Remove SkinConfiguration subclasses and allow configuration parsing for all skin types 2021-10-22 14:42:23 +09:00
Dean Herbert
82d0a6515f Fix incorrect conditional for checking whether import (would fail for default skin) 2021-10-22 14:08:12 +09:00
Dean Herbert
e5b73f25cd Ensure newly created skin.ini files are set to latest version 2021-10-22 12:56:05 +09:00
Dean Herbert
a5088cac27 Fix default metadata propagation when no files are present 2021-10-21 13:43:42 +09:00
Dean Herbert
59b7210efa Revert disallowing imports with no files
While it is logical that we want this, from a testing perspective this is a bit of a nightmare to fix. Let's revisit at a later point in time.
2021-10-21 13:43:42 +09:00
Dean Herbert
68c01fc204 Fix infinite loop on default skin (it can't have a skin.ini) 2021-10-20 17:56:45 +09:00
Dean Herbert
9e6e41d7c0 Add migration to reset and repopulate existing skin hashes 2021-10-20 17:56:45 +09:00
Dean Herbert
602303e947 Add test coverage for skin.ini contents 2021-10-20 17:56:45 +09:00
Dean Herbert
a95c754fd3 Fix multiple issues and make metadata fallback process more logical 2021-10-20 17:56:45 +09:00
Dean Herbert
fa542f2547 Include json files in skin hashing
This covers the new layout storage we are doing.
2021-10-20 17:45:06 +09:00
Dean Herbert
789c715f13 Add skin.ini write support to allow for more correct hashing 2021-10-20 17:45:06 +09:00