1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 12:42:54 +08:00
Commit Graph

1107 Commits

Author SHA1 Message Date
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
0a14acfd83 Fix incorrect conditional on export/mutate feasability of skin 2021-12-02 13:41:58 +09:00
Dean Herbert
0efd565c8b Remove forgotten using statement 2021-11-30 15:41:07 +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
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
6b55de2845 Use ILive for Skin.SkinInfo 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
0a961fd9d8 Replace usages of IHasFiles with IHasRealmFiles 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
7488ccd5fe Update all models to implement IHasNamedFiles 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
Dan Balasescu
016684b52d Remove unreachable code 2021-11-24 20:29:47 +09:00
Dean Herbert
99a139dc98 Initialise all file lists at construction time (and remove setter) 2021-11-24 13:56:21 +09:00
Dean Herbert
59e763467f Move StoragePath implementation to an extension method 2021-11-19 16:08:38 +09:00
Dean Herbert
1f5ca122b0 Merge branch 'master' into user-class-cleanup 2021-11-05 13:55:22 +09:00
Jason Won
9e7d559f55 fix aspect locked scaling of skin components 2021-11-04 17:10:41 -04:00
Dean Herbert
ed07ee8c61 Update all existing usages of AuthorString/AuthorId
Unfortunately the getters need to be left in place else EF breaks.
2021-11-04 18:59:37 +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
add39fbd4f Merge branch 'master' into fix-skin-layout-editor-crash 2021-10-28 06:24:24 +09:00
Dean Herbert
6944151486 Apply batch fixing of built-in types using var 2021-10-27 13:04:41 +09:00
Dean Herbert
26cf5370c3 Remove unused reader parameter 2021-10-24 23:48:46 +09:00
Dean Herbert
5303cae044 Add mention of stream close logic 2021-10-24 23:43:37 +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
9cdc1ba592 Fix default legacy skin not being able to read from stored skin.ini 2021-10-22 13:43:45 +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