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

178 Commits

Author SHA1 Message Date
Dean Herbert
e645651ef4
Merge branch 'master' into mania-combo-counter 2024-08-09 00:19:17 +09:00
Dean Herbert
5350945340
Update HasFlag usages 2024-07-03 00:19:04 +09:00
Dean Herbert
d722be16e3
Add missing base calls for safety 2024-06-25 23:41:43 +09:00
Bartłomiej Dach
659505f711
Adjust calls to GetContainingInputManager() 2024-06-18 07:41:19 +02:00
Bartłomiej Dach
3afe98612c
Add RestoreState() to IEditorChangeHandler 2024-06-11 11:31:30 +02:00
Bartłomiej Dach
4c881b5633
Use better name if we're renaming 2024-05-29 09:40:29 +02:00
OliBomby
a89ba33b47 rename CanScaleSelectionOrigin/PlayfieldOrigin to make clear its not the origin being scaled 2024-05-28 16:14:16 +02:00
Bartłomiej Dach
8a2dd4d816
Merge branch 'master' into scaling 2024-05-23 15:10:40 +02:00
Bartłomiej Dach
ac5c031a3a
Simplify original state management in skin selection scale handler 2024-05-23 15:01:28 +02:00
Dean Herbert
e740b8bcc3
Fix single frame glitching in skin editor
https://github.com/ppy/osu/pull/28257#discussion_r1606999574
2024-05-21 14:36:11 +08:00
Bartłomiej Dach
3da3b91be5
Improve closest origin selection to include effects of rotation/flip
Closes https://github.com/ppy/osu/issues/28237.

Solution as proposed here:
https://github.com/ppy/osu/pull/28089#issuecomment-2095372157

For flips and rotations by 90 degrees this does what you would expect it
to. For arbitrary rotations it *sort of kind of* attempts to do this but
the results are a bit wonky - probably still better than what was there
before, though?
2024-05-20 10:23:12 +02:00
Bartłomiej Dach
c03f68413a
Fix skin editor closest origin selection spazzing out on scaled sprites
Closes https://github.com/ppy/osu/issues/28215.

`drawable.Position` is a location in the parent's coordinate space, and
`drawable.OriginPosition` is in the drawable's local space and
additionally does not take scale into account.
2024-05-20 10:23:07 +02:00
OliBomby
8df5f22b4e Merge remote-tracking branch 'upstream/master' into scaling 2024-05-15 23:05:19 +02:00
Susko3
f824bd1441 Fix userTriggered not being passed to private helper 2024-05-06 21:52:03 +02:00
Bartłomiej Dach
d7a0fdce07
Merge pull request #28089 from peppy/use-closest-origin
Automatically choose origin (along with anchor) to make skin editor placement easier for users
2024-05-06 14:57:34 +02:00
Bartłomiej Dach
353a07f7a5
Fix code quality inspection 2024-05-06 12:23:11 +02:00
Bartłomiej Dach
f066026503
Fix sizing of gameplay preview in skin editor not updating on scaling mode change
Closes https://github.com/ppy/osu/issues/28115.
2024-05-06 11:55:51 +02:00
Dean Herbert
12cd3bbe1c
Fix incorrect scale handling due to selection point changes 2024-05-06 11:34:37 +08:00
Dean Herbert
2cb367fdce
Disable "origin" menu when in "Closest" placement mode 2024-05-04 13:29:05 +08:00
Dean Herbert
e7ca02ffde
Fix position changing when origin updates during a drag 2024-05-04 13:28:33 +08:00
Dean Herbert
0b61e2cd42
Use closest origin along with closest anchor 2024-05-04 13:09:51 +08:00
Bartłomiej Dach
f78abf801c
Autosave edited skin on change 2024-04-29 14:38:53 +02:00
Dean Herbert
c0dce94f15
Fix newly placed items in skin editor not getting correct anchor placement 2024-04-12 17:08:49 +08:00
Bartłomiej Dach
05fe8968d8
Only interact with clipboard via bound copy 2024-04-03 11:39:12 +02:00
Dan Balasescu
ce68f6adb7
Fix SkinEditor binding event to external bindable 2024-04-03 17:46:26 +09:00
Nguyên Minh Hồ
113dbcd10f
Merge branch 'master' into fix-rotate-editor-button-disabled 2024-03-30 13:56:31 +07:00
Bartłomiej Dach
f9e92c69a8
Merge branch 'master' into fix-skin-editor-init-fail 2024-02-22 14:08:38 +01:00
Bartłomiej Dach
1ca566c6b0
Disable nested input managers on edited screen when skin editor is open 2024-02-19 10:19:25 +01:00
Nguyên Minh Hồ
e1f8bc9692 Rename CanRotate property of SelectionRotationHandler to a more descriptive name 2024-01-25 12:10:50 +07:00
OliBomby
2f924b3368 fix skewed single axis scale 2024-01-20 16:33:03 +01:00
OliBomby
a155b315bf Fix negative width or height skin drawables 2024-01-20 16:10:17 +01:00
OliBomby
ac76af5cc8 fix skin scale coordinate system 2024-01-20 15:43:47 +01:00
OliBomby
9b9485f656 fix adjust axes detection 2024-01-20 15:39:38 +01:00
OliBomby
0fc448f4f3 fix adjusting scale from anchor 2024-01-20 15:12:48 +01:00
OliBomby
6a57be0a50 clean up code and fix flipping 2024-01-20 13:04:05 +01:00
OliBomby
ed430a3df4 refactor skin editor scale 2024-01-20 02:49:56 +01:00
OliBomby
a4f771ec08 refactor CanScale properties 2024-01-20 01:13:01 +01:00
Dean Herbert
cd02d00c03
Fix skin potentially being lost when opening and closing skin editor rapidly 2024-01-16 15:23:07 +09:00
Dean Herbert
451ba1c861
Ensure PresentGameplay doesn't get stuck in loop if no beatmaps available 2024-01-16 15:13:08 +09:00
Salman Ahmed
01219fa371 Disable "closest" anchor in mania combo counter for convenience 2023-12-30 05:29:44 +03:00
rushiiMachine
0c8b551c66
SkinEditor lifetime fix & show gameplay
If the SkinEditor was created already but not finished initializing, wait for it to initialize before handling a screen change, which could possibly null the skin editor. Additionally, in the case the skin editor is already loaded but hidden, make sure to show gameplay.
2023-12-27 14:49:42 -08:00
rushiiMachine
85a768d0c8
Don't reuse results delay const 2023-12-26 12:46:50 -08:00
rushiiMachine
1d4db3b7a9
Fix SkinEditorOverlay freezing when ReplayPlayer screen exits early
Originally when popping in, the ReplayPlayer was loaded first (if previous screen was MainMenu), and afterwards the SkinEditor component was loaded asynchronously. However, if the ReplayPlayer screen exits quickly (like in the event the beatmap has no objects), the skin editor component has not finished initializing (this is before it was even added to the component tree, so it's still not marked `Visible`), then the screen exiting will cause `OsuGame` to call SetTarget(newScreen) -> setTarget(...) which sees that the cached `skinEditor` is not visible yet, and hides/nulls the field. This is the point where LoadComponentAsync(editor, ...) finishes, and the callback sees that the cached skinEditor field is now different (null) than the one that was loaded, and never adds it to the component tree. This occurrence is unhandled and as such the SkinEditorOverlay never hides itself, consuming all input infinitely.

This PR changes the loading to start loading the ReplayPlayer *after* the SkinEditor has been loaded and added to the component tree.
Additionally, this lowers the exit delay for ReplayPlayer and changes the "no hit objects" notification to not be an error since it's a controlled exit.
2023-12-26 12:22:00 -08:00
Daniel Power
d4731e0830 Fix scale of skin element bounding box 2023-12-21 08:56:39 -03:30
Bartłomiej Dach
f239d03d75
Forcibly change ruleset to correct one before entering gameplay from main menu
Closes #25663 (again).

As it turns out, in some scenarios it can be the case that the current
game-global `Beatmap` is not valid for the current game-global
`Ruleset`. The validity of one and the other in conjunction is only
really validated by the song select screen; elsewhere there is no
guarantee that the global beatmap is playable using the global ruleset.

However, this only comes up in very specific circumstances, namely one:
when trying to autoplay a catch beatmap with osu! ruleset globally
active via the skin editor flow.

`Player` is responsible for retrieving the beatmap to be played. It does
so by invoking the appropriate beatmap converter and asking it if the
beatmap can be converted:

	6d64538d7a/osu.Game/Beatmaps/WorkingBeatmap.cs (L262-L266)

If the code above throws, `Player` actually silently covers for this, by
trying the beatmap's default ruleset instead:

	6d64538d7a/osu.Game/Screens/Play/Player.cs (L529-L536)

However, for the pairing of osu! ruleset and catch beatmap, this fails,
as `OsuBeatmapConverter`'s condition necessary for permitting conversion
is that the objects have a defined position:

	6d64538d7a/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs (L25)

which they will do, due to the fact that all catch beatmaps are really
just osu! beatmaps but with conversion steps applied, and thus `Player`
succeeds to load the catch beatmap in osu! ruleset.

In the skin editor scenario, this would lead to the secondary failure
of the skin editor trying to apply `CatchModAutoplay` on top of all
of that, which would fail at the hard-cast of the beatmap
to `CatchBeatmap`.
2023-12-06 10:35:41 +01:00
Dean Herbert
ca991f1f54
Move flags local to EndlessPlayer 2023-12-06 17:18:35 +09:00
Dean Herbert
c5a08a0711
Remove unused using statement 2023-12-04 23:06:08 +09:00
Bartłomiej Dach
5512298d60
Trim unused resolved bindable 2023-12-04 15:01:23 +01:00
Bartłomiej Dach
8754fa40f4
Source autoplay mod from beatmap about to be presented rather than ambient global 2023-12-04 14:42:51 +01:00
Bartłomiej Dach
063694f544
Do not attempt to load gameplay scene if current beatmap is dummy 2023-12-04 14:42:51 +01:00