1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-14 20:38:33 +08:00
Commit Graph

1397 Commits

Author SHA1 Message Date
Dean Herbert
ca0765a932 Tidy up various delegation implementations 2022-06-14 19:46:59 +09:00
Dan Balasescu
561a932d17
Merge pull request #18587 from peppy/skin-editor-fix-sizing
Fix skin editor not accounting for aspect ratios in base-game sizing logic
2022-06-07 13:19:50 +09:00
Dan Balasescu
86b685f7e4
Merge pull request #18589 from peppy/skin-bool-parsin
Change `skin.ini` boolean parsing to match osu!stable
2022-06-07 10:11:07 +09:00
Dean Herbert
46eba86ad1 Remove unintended left-over invalidation code 2022-06-07 09:29:30 +09:00
Dean Herbert
3862681d94 Change skin.ini boolean parsing to match osu!stable
Closes https://github.com/ppy/osu/issues/18579.
2022-06-06 19:43:09 +09:00
Dean Herbert
a8764b67e1 Add padding and avoid using invalidation (triggers too often when toolbar is being toggled) 2022-06-06 18:28:56 +09:00
Dean Herbert
28c9c61f71 Fix potential null reference in skin editor if target screen is null (during exit)
```csharp
[runtime] 2022-06-06 09:24:31 [verbose]: Host execution state changed to
Stopping
[runtime] 2022-06-06 09:24:31 [error]: An unhandled error has occurred.
[runtime] 2022-06-06 09:24:31 [error]: System.NullReferenceException:
Object reference not set to an instance of an object.
[runtime] 2022-06-06 09:24:31 [error]: at
osu.Game.Skinning.Editor.SkinEditorOverlay.setTarget(OsuScreen target)
in
/Users/dean/Projects/osu/osu.Game/Skinning/Editor/SkinEditorOverlay.cs:line
173
[runtime] 2022-06-06 09:24:31 [error]: at
osu.Framework.Threading.ScheduledDelegate.RunTaskInternal()
[runtime] 2022-06-06 09:24:31 [error]: at
osu.Framework.Threading.Scheduler.Update()
[runtime] 2022-06-06 09:24:31 [error]: at
osu.Framework.Graphics.Drawable.UpdateSubTree()
[runtime] 2022-06-06 09:24:31 [error]: at
osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
[runtime] 2022-06-06 09:24:31 [error]: at
osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
[runtime] 2022-06-06 09:24:31 [error]: at
osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
[runtime] 2022-06-06 09:24:31 [error]: at
osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
```
2022-06-06 18:27:54 +09:00
Dean Herbert
003a3de270 Adjust transitions to look better 2022-06-06 18:06:46 +09:00
Dean Herbert
cd0e0fe70f Fix skin editor not accounting for aspect ratios in base-game sizing logic 2022-06-06 18:02:42 +09:00
Salman Ahmed
045e044637 Expose LegacySkinTransformer's underlying skin for pattern-matching 2022-06-04 01:14:42 +03:00
Bartłomiej Dach
9ae019eb39
Move ISamplePlaybackDisabler to more general namespace 2022-05-08 10:38:58 +02:00
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
Dean Herbert
ed894d6428
Merge pull request #17941 from frenzibyte/remove-legacy-skin-fallback
Handle all legacy skin component types explicitly and remove texture fallback
2022-04-25 21:55:05 +09:00
Dean Herbert
d2780c2c50 Add a touch more detail to the unsupported skin component exception 2022-04-25 19:06:47 +09:00
Salman Ahmed
0ecda46d93 Deselect mods incompatible with "Autoplay" when entering gameplay via scene library 2022-04-23 23:16:33 +03:00
Salman Ahmed
4bf11df57c Change SpriteComponent accessibility to internal 2022-04-23 19:11:54 +03:00
Salman Ahmed
61078910a6 Handle all skin component types explicitly 2022-04-23 03:34:05 +03:00
Salman Ahmed
69e2e30971 Remove legacy skin component fallback lookup
Has always been a source of hiding actual issues like in https://github.com/ppy/osu/issues/17745 (`sliderfollowcircle` looked up from fallback because there's no transformer), and https://github.com/ppy/osu/issues/17934 (because there's a texture `ok` and that matches the component name `HitResult.Ok`).
2022-04-23 01:06:36 +03:00
Salman Ahmed
56358ef19e Fix legacy skin hit animation lookup falling back to LookupName 2022-04-23 00:35:45 +03:00
Andrei Zavatski
414408140e Improve AnchorOriginVisualiser 2022-04-21 10:16:52 +03:00
Dean Herbert
2202863e1a Split out IPerformFromScreenRunner to allow for easier testing 2022-04-18 17:49:28 +09:00
Dean Herbert
82939b0556 Fix skins getting duplicated when importing after export
Closes #17614.
2022-04-12 00:29:19 +09:00
Bartłomiej Dach
8175741a6c
Merge branch 'master' into fix-storyboard-fallback-animation-frame-count-weirdness 2022-04-07 21:49:32 +02:00
Bartłomiej Dach
3016ce7817
Merge branch 'master' into bindable-safety-skin-editor 2022-04-07 20:59:44 +02:00
Dean Herbert
11b4c5ca87 Fix potential null ref if UpdateTargetScreen is called too early 2022-04-07 23:42:42 +09:00
Salman Ahmed
fb9fe4213d Fix skin texture lookups not handling paths with extensions 2022-04-07 15:07:30 +03:00
Dean Herbert
a4d3afd06d Fix multiple issues with bindable safety in SkinEditor components 2022-04-07 19:12:12 +09:00
Dean Herbert
93bdca5211 Split out GetTextures helper function for LegacySkins 2022-04-07 17:28:48 +09:00
Dean Herbert
205edb65a2 Fix filename lookups on LegacySkins going awry when extension is specified
Due to the logic present to handle `@2x` fallback, the extension was
potentially being added at the wrong point in the filename. This change
ensures that the lookup filenames are always correct.

Closes https://github.com/ppy/osu/issues/17690.
2022-04-07 14:16:19 +09:00
Dan Balasescu
7623f3b90b
Merge branch 'master' into skin-editor-import-at-cursor 2022-04-05 17:39:11 +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
Dan Balasescu
2ec15a1ebe Fix lookup through transformers 2022-04-05 16:47:15 +09:00
Bartłomiej Dach
f73062a0d6
Revert "Remove nullable on RealmBackedResourceStore realm parameter"
This reverts commit 09e15f5496.
2022-04-04 22:22:55 +02:00
Dean Herbert
5f358a04e9 Return a valid "lighting" response from DefaultSkin
This is temporary to allow the new sprite lookup flow to potentially be
merged before hit lighting skinnability is addressed.
2022-04-04 20:40:20 +09:00
Dean Herbert
8185020f12 Improve the visual of the missing sprite sprite 2022-04-04 20:35:48 +09:00
Dean Herbert
de30a42558 Add region for import methods and move Dispose to end of time 2022-04-04 20:30:14 +09:00
Dean Herbert
dac5dfde8f Remove unnecessary LazyThreadSafetyMode specification 2022-04-04 20:28:43 +09:00
Dean Herbert
300feadf6a Update SkinnableSprite to match more broad usage 2022-04-04 20:27:46 +09:00
Dean Herbert
09e15f5496 Remove nullable on RealmBackedResourceStore realm parameter 2022-04-04 20:27:03 +09:00
Dan Balasescu
6776c37bbc
Merge pull request #17592 from peppy/skin-mutation-better-naming
Fix automatically created "(modified)" skins getting conflicting names
2022-04-01 21:25:10 +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
f0821ce1fc Import new skin editor sprites to the cursor location 2022-04-01 16:16:49 +09:00
Dean Herbert
6afed5e865 Fix new SettingsItem attribute not playing well with non-Drawables 2022-04-01 16:01:33 +09:00
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