Dean Herbert
bfd3406f5f
Ensure that file is imported and caches are invalidated before placing new sprites
2022-04-01 16:01:33 +09:00
Dean Herbert
314ad63c6e
Simplify available file lookup and include file extension
2022-04-01 16:01:33 +09:00
Dean Herbert
2b7105ac4f
Add a default sprite representation to allow better placeholder display in skin editor toolbox
2022-04-01 16:01:33 +09:00
Dean Herbert
52eeaffce3
Limit lookup resources to images
2022-04-01 16:01:33 +09:00
Dean Herbert
d1be229d74
Combine SkinSprite
into SkinnableSprite
2022-04-01 16:01:33 +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
66f5eae530
Hook up a dropdown to show all available sprites for the current skin
2022-04-01 15:01:43 +09:00
Dean Herbert
fca9faac9b
Add SkinnableSprite
for arbitrary sprite additions
2022-04-01 14:36:36 +09:00
Dean Herbert
3a16483214
Add prioritised user lookups for default skin
...
This allows user resources to be consumed before falling back to the
game bundled assets.
2022-04-01 14:36:36 +09:00
Dean Herbert
01829cf2d8
Move SkinnableInfo
error handling to lower level
...
Handling was recently added to handle the usage in
`Skin.GetDrawableCompoent`, but it turns out this is also required for
`DrawableExtensions.ApplySkinnableInfo` which can throw in a similar
fashion.
Found while working on sprite support for the editor, where this becomes
an actual issue (ie. switching to a branch where the new sprite support
is not present can cause unexpected crashes).
2022-04-01 14:30:04 +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
9621a7f9cb
Merge branch 'master' into fix-autoplay-mod-user-id
2022-03-30 21:41:45 +02:00
Dean Herbert
ea9495eb74
Update all existing calls to extension method with correct fallback handling
2022-03-29 16:51:30 +09:00
Dean Herbert
b5834dabdb
Fix skin editor not exiting correctly when using the menu
...
Closes https://github.com/ppy/osu/issues/17489 .
2022-03-28 20:43:26 +09:00
Dan Balasescu
6c172bac3c
Merge pull request #17448 from peppy/fix-skin-component-crash-on-instantiation-failure
...
Avoid crashing if a skin component cannot be instantiated correctly
2022-03-25 19:41:52 +09:00
Dean Herbert
a0a3bba46e
Avoid crashing if a skin component cannot be instantiated correctly
2022-03-25 18:31:26 +09:00
Dan Balasescu
23c4f9910e
Apply notnull constraint
2022-03-25 15:54:01 +09:00
Dan Balasescu
2d8d177807
Merge branch 'master' into skin-nullable
2022-03-25 15:36:21 +09:00
Dean Herbert
e243a7c55d
Reword storage
param xmldoc to use stronger and better defined langauge
2022-03-24 12:45:11 +09:00
Dean Herbert
0cd29a73b9
Fix typo in xmldocs
2022-03-24 12:39:47 +09:00
Dean Herbert
a4d17a915f
Fix incorrect HUD component fallback
...
Legacy skins should now always show the legacy hud components. The
conditional here is no longer valid as fallback lookups happen at a
*skin*-fallback level rather than internal *source*-fallback.
Put another way, `LegacyDefaultSkin` (with user customisations) should
still display the classic HUD components even if a font is not provided,
as that font will be available via the skin lookup hierarchy.
The TODO removed in this commit has been already resolved so this code
is no longer required.
2022-03-24 12:36:20 +09:00
Dean Herbert
7296bad294
Convert LegacyBeatmapSkin
to use nullable
2022-03-24 00:24:06 +09:00
Dean Herbert
194bf4fb05
Convert LegacySkin
to use nullable
2022-03-24 00:23:55 +09:00
Dean Herbert
3e020073c5
Convert Skin
to use nullable
2022-03-24 00:23:55 +09:00
Dean Herbert
05c7e09d79
Make Textures
and Samples
read-only
2022-03-24 00:02:38 +09:00
Dean Herbert
6542f974f2
Merge branch 'master' into skin-fuck
2022-03-23 15:30:22 +09:00
Dean Herbert
078288a616
Make "skin.ini" the default skin filename and remove redundant parameters
2022-03-23 15:05:01 +09:00
Dean Herbert
7a1909bf97
Change parameter order of LegacySkin
to put IStorageResourceProvider
first
...
The optional resource store should not be before the (basically)
required resource provider.
2022-03-23 15:02:04 +09:00
Dean Herbert
d0ea1739b4
Remove skin configuration stream logic as it is no longer required
2022-03-23 14:57:42 +09:00
Dean Herbert
9d3c6ade62
Remove unnecessary skin reading hack in DefaultLegacySkin
2022-03-23 14:57:42 +09:00
Dean Herbert
6c405f1dee
Remove storage
override from LegacyBeatmapSkin
2022-03-23 14:57:42 +09:00
Dean Herbert
e56d13d8be
Fix realm backed store not being initialised for some tests
2022-03-23 14:57:42 +09:00
Dean Herbert
00aea9bef0
Only use legacy resources lookup for protected (aka default) skin
2022-03-23 14:57:42 +09:00
Dean Herbert
3c38b14228
Documentation improvements
2022-03-23 14:57:42 +09:00
Dean Herbert
32e2cfb8ee
Leave realm resource store construction to base class
2022-03-23 14:57:42 +09:00
Dean Herbert
e1236e07ad
Fix extensions not being specified in time for realm file caching
2022-03-23 14:57:42 +09:00
Dean Herbert
a7f63fb034
Make providing a custom ResourceStore
to LegacyBeatmapSkin
optional (for tests only)
2022-03-23 14:57:42 +09:00
Dean Herbert
35d2f973a3
Prefer provided resource store over realm backed to keep tests working
2022-03-23 14:57:42 +09:00
Dean Herbert
b4d89b4e31
Replace duplicate LegacySkinResourceStore
class with RealmBackedResourceStore
2022-03-23 14:57:42 +09:00
Dean Herbert
5c4a74378d
Remove Textures
and Samples
initialisation to Skin
2022-03-23 14:57:42 +09:00
Dean Herbert
09ec49e6fa
Rename realm-backed resource store in preparation for non-legacy usage
2022-03-22 18:31:18 +09:00
Dean Herbert
fb7f9a81db
Remove unnecessary equality check in skin editor construction path
2022-03-22 14:35:13 +09:00
Dean Herbert
9a2691c1bc
Remove unnecessary schedule
2022-03-21 23:54:47 +09:00
Salman Ahmed
33acc5d720
Remove no longer valid comments
2022-03-21 14:06:53 +03:00
Salman Ahmed
058fbbbe6c
Remove unused using directive
2022-03-21 14:06:36 +03:00
Dean Herbert
2a696783af
Remove unused const in SkinEditorOverlay
2022-03-21 17:33:56 +09:00
Dean Herbert
2f18c512cd
Convert SkinEditorOverlay
to an OverlayContainer
to allow it to block input
2022-03-21 17:33:56 +09:00
Dean Herbert
3643f879e4
Add test coverage of skin editor settings slider not working via keyboard adjustments
2022-03-21 17:33:56 +09:00
Dean Herbert
355b0fa314
Fix loading player via skin editor still allowing changing current audio track
...
`PlayerLoader` is required in the sequence to get the game into the
correct state for gameplay right now. Applying ths simplest fix here.
Closes https://github.com/ppy/osu/issues/17351 .
2022-03-21 13:49:56 +09:00
Dean Herbert
806a16d8f6
Fix SkinComponentToolbox
attempting to create instances of abstract classes
2022-03-18 20:13:15 +09:00
Dean Herbert
e252f1a3cd
Add explanation about try-catch logic in SkinComponentToolbox
2022-03-17 18:40:26 +09:00
Dean Herbert
1d83b36cfc
Merge branch 'master' into skin-editor-borrowed-dependencies
2022-03-17 15:09:04 +09:00
Dan Balasescu
e3cbde5099
Merge pull request #17282 from peppy/skin-editor-reset-position
...
Add "Reset position" menu item in skin editor
2022-03-17 14:20:24 +09:00
Dan Balasescu
1eac0f41bf
Remove unused using
2022-03-17 13:44:54 +09:00
Dan Balasescu
07433d0540
Merge pull request #17278 from peppy/skin-editor-multiple-component-settings
...
Show settings for multiple skin components in a selection
2022-03-17 13:43:59 +09:00
Dean Herbert
6df36171b5
Merge branch 'master' into skin-editor-toolbox-ui
2022-03-16 22:21:10 +09:00
Dean Herbert
7e52623645
Add "Reset position" menu item in skin editor
2022-03-16 20:02:52 +09:00
Dean Herbert
cc356bcfe4
Show components available for current screen only (using actual live dependencies)
2022-03-16 19:42:00 +09:00
Dean Herbert
b07ca87965
Merge branch 'skin-editor-toolbox-ui' into skin-editor-borrowed-dependencies
2022-03-16 19:38:28 +09:00
Dean Herbert
27122c17c9
Show settings for multiple components in a selection
2022-03-16 19:35:45 +09:00
Dean Herbert
54e351efe9
Convert top level skin editor layout to use grid container
...
Fix `SkinEditor`'s initial target not being a `Screen`
2022-03-16 19:30:51 +09:00
Dean Herbert
4525ed645c
Update skin editor to use EditorSidebar
2022-03-16 19:30:51 +09:00
Dean Herbert
59cb1ac126
Order components by name for now
2022-03-16 19:21:15 +09:00
Dean Herbert
e4a6b7ae91
Expand toolbox component items on hover
2022-03-16 19:21:15 +09:00
Dean Herbert
fdb411c0f3
Update skin editor toolbox design to suck less
2022-03-16 19:21:15 +09:00
Dean Herbert
b08d4bb8eb
Move SceneLibrary
implementation to its own file
2022-03-16 19:13:52 +09:00
Dean Herbert
ee3715f5cf
Use OverlayColourProvider
and adjust metrics to roughly match new designs
2022-03-16 19:13:52 +09:00
Dean Herbert
aff6a5a428
Better align scene selector with menu bar
2022-03-16 19:13:52 +09:00
Dean Herbert
c6aa32a003
Add basic song select setup for skinnability
2022-03-16 19:12:06 +09:00
Dean Herbert
8d85723a62
Split out SceneLibrary
into its own component
2022-03-16 19:12:06 +09:00
Dean Herbert
d062810ff2
Add basic scene selector
2022-03-16 19:12:06 +09:00
Dean Herbert
c807ad7e4e
Ensure toolbar is hidden even when the active screen is changed while the editor is open
2022-03-16 19:11:22 +09:00
Dean Herbert
86960c791f
Close overlays and toolbar on entering the skin editor
2022-03-16 19:00:23 +09:00
Dean Herbert
99e3161cf0
Fix SkinEditor
's initial target not being a Screen
2022-03-16 18:57:47 +09:00
Dan Balasescu
d80830b415
Merge pull request #17226 from peppy/skin-component-settings
...
Allow skin components to have settings
2022-03-16 17:12:11 +09:00
Dean Herbert
2b02a6555b
Remove current screen check from skin editor changes
2022-03-15 15:40:26 +09:00
Dean Herbert
6d5692fcec
Fix typo in setting name
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-03-15 14:25:05 +09:00
Dean Herbert
6fb06d69cc
Merge branch 'master' into pp-counter-alloc-reduction
2022-03-15 13:31:57 +09:00
Dan Balasescu
ca62560495
Resolve inspections
2022-03-15 09:20:32 +09:00
Dan Balasescu
e79bed8fbe
Merge branch 'master' into skin-component-settings
2022-03-14 18:54:27 +09:00
Dan Balasescu
fd93b42630
Merge pull request #17217 from peppy/skin-editor-reload-on-scene-change
...
Refactor `SkinEditor` to support switching target screens without full reload
2022-03-14 18:02:01 +09:00
Dean Herbert
3c5fda5f23
Add early exist if the target screen is no longer current
2022-03-14 17:24:31 +09:00
Dan Balasescu
3fff7f4b7e
Require ScoreProcessor to receive ruleset
2022-03-14 15:51:10 +09:00
Dean Herbert
7d2752185d
Add disclaimer and adjust metrics of BigBlackBox
2022-03-13 17:03:25 +09:00
Dean Herbert
e4211104b0
Add new settings to the big black box
2022-03-13 17:03:25 +09:00
Dean Herbert
458136dfe7
Add BigBlackBox
for skinning testing purposes
2022-03-13 17:03:25 +09:00
Dean Herbert
8d1ee28e67
Add settings modification UI to skin editor
2022-03-13 17:03:25 +09:00
Dean Herbert
c99397f75a
Add the ability to add settings to skinnable elements
2022-03-13 17:03:25 +09:00
Dean Herbert
7a2a3528ef
Merge branch 'skin-editor-reload-on-scene-change' into skin-component-settings
2022-03-13 17:03:23 +09:00
Dean Herbert
f95e753adb
Rename double-container variable name
2022-03-13 16:10:06 +09:00
Dean Herbert
d1a9b88fe7
Fix typo in comment
...
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2022-03-13 16:05:45 +09:00
Dean Herbert
3db42dd772
Allow skin editor to target different target containers for placement purposes
2022-03-11 23:23:32 +09:00
Dean Herbert
9a1ade4f79
Refactor SkinEditor
to support switching target screens without full reload
2022-03-11 23:08:40 +09:00
Bartłomiej Dach
2354737abe
Merge branch 'master' into scaling-container-better-custom-override
2022-03-03 22:32:23 +01:00
Dean Herbert
b5684aaa76
Scale -> Rect to read better
2022-03-02 20:33:28 +09:00
Dean Herbert
29ed419d53
Change how custom scales are applied to ScalingContainer
to allow for better transitions
2022-03-02 20:13:01 +09:00
Dean Herbert
ff7db4f405
Replace jank buttons with menu in skin editor
2022-03-02 20:08:17 +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
3e5c9e8436
Fix cases of Access
instead of Realm
2022-01-25 12:58:15 +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
0bd7486a83
Avoid constructor overhead for realm SkinInfo
parameterless constructor
2022-01-20 17:29:07 +09:00
Dean Herbert
5601f6f1fe
Merge branch 'master' into realm-integration/score-and-beatmaps
2022-01-17 12:29:02 +09:00
Bartłomiej Dach
cbaa3de548
Strip @2x
scale modifiers when looking up legacy skin textures
2022-01-16 19:46:15 +01:00
Dean Herbert
bdb2979b2e
Remove async
from Populate
method
2022-01-13 16:36:54 +09:00
Dean Herbert
1a29098f3b
Change default value and add comment explaining why skins are never "locally available"
2022-01-13 12:50:18 +09:00
Dean Herbert
b2d09b7b10
Fix further warnings
2022-01-12 23:42:12 +09:00
Dean Herbert
08da948afc
Merge branch 'master' into realm-integration/score-and-beatmaps
2022-01-12 19:22:55 +09:00
Dean Herbert
8c8c5f4c33
Fix skin hash repopulation not working since realm migration
2022-01-12 18:32:51 +09:00
Dean Herbert
a4de0f93fa
Move manager Update
methods to be explicit to where they are still used by legacy code
...
Also fixes skin hash repopulation being completely broken.
2022-01-12 17:49:11 +09:00
Dean Herbert
d8e75a9de4
Reimplmeent IsAvailableLocally
as an abstract
method
2022-01-12 17:49:10 +09:00
Dean Herbert
667cdb2475
Fix skin lookup when there's no beatmap file available
2022-01-12 17:00:16 +09:00
Dean Herbert
4763fe54d6
Remove unused store classes
2022-01-12 16:39:36 +09:00
Dean Herbert
3cd996eb4a
Merge branch 'master' into async-deadlock-safety
2022-01-07 17:28:59 +09:00
Dean Herbert
00177a3ae1
Update usages to new naming
2022-01-06 22:54:43 +09:00
Dean Herbert
243a1a3cf7
Fix incorrect origin specification for SkinSelectionHandler
flips
2022-01-06 14:47:44 +09:00
Dean Herbert
866ae3472b
Add global flip hotkeys
2022-01-05 16:48:07 +09:00
Dean Herbert
73b40e6833
Replace usage of .Result
with .WaitSafelyForResult
2022-01-04 11:51:41 +09:00
Dean Herbert
089b756f93
Invert logic to make reading easier
2021-12-30 16:03:16 +09:00
Dean Herbert
ef49f2ed0e
Add extra extra safety against attempting to load a previously expired editor
2021-12-30 16:02:31 +09:00
Dean Herbert
b1a444180f
Fix Show
then Reset
potentially resulting in incorrect load target
2021-12-29 21:46:34 +09:00
Dean Herbert
471eea750a
Fix calling SkinEditorOverlay.Show
before the overlay is loaded causing an exception
...
As seen at https://github.com/ppy/osu/runs/4652969942?check_suite_focus=true .
2021-12-29 21:18:17 +09:00
Bartłomiej Dach
724b601d2a
Rename AllowSampleLookup
argument to something saner
2021-12-26 14:29:07 +01:00
Bartłomiej Dach
dc21c8901e
Always allow looking up storyboard samples from beatmap skin
2021-12-26 14:25:28 +01:00
Dean Herbert
9d85beddbe
Fix null reference in some tests due to missing realm context factory
2021-12-15 11:16:37 +09:00
Dean Herbert
441b7baa93
Provide a realm factory to usages of ToLive
/RealmLive
2021-12-14 14:26:34 +09:00
Dean Herbert
8d9c37a825
Merge branch 'master' into primary-key-consistency
2021-12-08 21:34:38 +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
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
452fa93444
Merge branch 'master' into realm-integration/skins-rebase
2021-12-06 15:21:02 +09:00
Dean Herbert
1eed2436e6
Clean up unused resolved properties
2021-12-03 18:49:49 +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
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
505608ab12
Merge branch 'realm-integration/skins-rebase' into realm-integration/skins-filename-lookup-performance
2021-12-02 14:01:39 +09:00
Dean Herbert
0a14acfd83
Fix incorrect conditional on export/mutate feasability of skin
2021-12-02 13:41:58 +09:00
Dean Herbert
4f826589e5
Remove subscription logic for the time being
2021-12-02 12:20:07 +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
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
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