1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-18 14:43:22 +08:00
Commit Graph

183 Commits

Author SHA1 Message Date
Bartłomiej Dach
48196949e0
Add combo colour override control to editor
Closes https://github.com/ppy/osu/issues/25608.

Logic mostly matching stable. All operations are done on `ComboOffset`
which still makes overridden combo colours weirdly relatively dependent
on each other rather than them be an "absolute" choice, but alas...

As per stable, two consecutive new combos can use the same colour only
if they are separated by a break:

    52f3f75ed7/osu!/GameModes/Edit/Modes/EditorModeCompose.cs#L4564-L4571

This control is only available once the user has changed the combo
colours from defaults; additionally, only a single new combo object
must be selected for the colour selector to show up.
2025-01-10 13:40:56 +01:00
Dan Balasescu
38d95abc24
Merge pull request #31462 from bdach/ternary-button-is-bad
Simplify editor "ternary button" structure
2025-01-10 14:24:41 +09:00
Dean Herbert
2133ac6d01
Merge pull request #31453 from bdach/fix-juice-stream-placement-offset
Fix juice stream placement blueprint being initially visually offset
2025-01-10 01:51:24 +09:00
Bartłomiej Dach
5c8ae6f851
Simplify editor "ternary button" structure
As I look into re-implementing the ability to choose combo colour for an
object (also known as "colourhax") from the editor UI, I stumble upon
these wretched ternary items again and sigh a deep sigh of annoyance.

The structure is overly rigid. `TernaryItem` does nothing that
`DrawableTernaryItem` couldn't, except make it more annoying to add
specific sub-variants of `DrawableTernaryItem` that could do more
things.

Yes you could sprinkle more levels of virtuals to
`CreateDrawableButton()` or something, but after all, as Saint Exupéry
says, "perfection is finally attained not when there is no longer
anything to add, but when there is no longer anything to take away."
So I'm leaning for taking one step towards perfection.
2025-01-09 13:41:22 +01:00
Bartłomiej Dach
18f1d62182
Fix juice stream placement blueprint being initially visually offset
- Closes https://github.com/ppy/osu/issues/31423.
- Regressed in https://github.com/ppy/osu/pull/30411.

Admittedly, I don't completely understand all of the pieces here,
because code quality of this placement blueprint code is ALL-CAPS
ATROCIOUS, but I believe the failure mode to be something along the
lines of:

- User activates juice stream tool, blueprint gets created in initial
  state. It reads in a mouse position far outside of the playfield, and
  sets internal positioning appropriately.
- When the user moves the mouse into the bounds of the playfield, some
  positions update (the ones inside `UpdateTimeAndPosition()`, but the
  fruit markers are for *nested* objects, and
  `updateHitObjectFromPath()` is responsible for updating those...
  however, it only fires if the `editablePath.PathId` changes, which it
  won't here, because there is only one path vertex until the user
  commits the starting point of the juice stream and it's always at
  (0,0).
- Therefore the position of the starting fruit marker remains bogus
  until left click, at which point the path changes and everything
  returns to *relative* sanity.

The solution essentially relies on inlining the broken method and only
guarding the relevant part of processing behind the path version check
(which is actually updating the path). Everything else that can touch
positions of nesteds (like default application, and the drawable piece
updates) is allowed to happen unconditionally.
2025-01-09 09:37:57 +01:00
Bartłomiej Dach
9058fd9739
Delete entire juice stream when only one vertex remains after deleting another vertex
Closes https://github.com/ppy/osu/issues/31425.
2025-01-08 11:47:25 +01:00
Bartłomiej Dach
5a0b732ee3
Add comments backreferences to copies of duplicated code for future use 2024-12-11 16:26:11 +09:00
Bartłomiej Dach
1f43ad3928
Merge branch 'master' into catch-convert-to-stream 2024-12-11 16:24:45 +09:00
Bartłomiej Dach
2138729c02
Do not show distance to next/previous object if said object is a banana shower
The results of such a display were a little bit nonsensical.
2024-11-21 12:17:43 +01:00
Darius Wattimena
a8e14b6625 Align inspector info more to how it is shown for osu 2024-11-19 19:54:12 +01:00
Darius Wattimena
111f029ead Added a custom hitobject inspector for catch additionally show the x value of prev and next 2024-11-18 23:53:01 +01:00
Darius Wattimena
16158710f9 Made reading of ReadCurrentDistanceSnap public 2024-11-18 23:49:40 +01:00
Darius Wattimena
00e3b20ff0 Change text to stream instead of fruits as that is the term by catch mappers 2024-11-18 22:30:15 +01:00
Darius Wattimena
5ac3bb73ee Adds an option to the catch editor to convert sliders to fruits 2024-11-18 22:19:08 +01:00
Darius Wattimena
5e642cbce7 Apply code feedback and also resize catcher trails when any is shown 2024-10-24 23:17:47 +02:00
Darius Wattimena
b75437ee13 Fix an issue where changing the CircleSize wouldn't adjust the catcher size and represent hyperdashes incorrectly 2024-10-15 21:47:22 +02:00
Dean Herbert
590f27e0a0
Merge branch 'master' into hotkeys-in-context-menus 2024-10-01 15:50:19 +09:00
Dean Herbert
c46d787f1e
Merge pull request #29949 from minetoblend/feature/scale-around-center
Support scaling around center when scaling with select box
2024-09-28 21:37:39 +09:00
OliBomby
d26e677bb7 fix warnings 2024-09-24 20:32:08 +02:00
OliBomby
e3b4483872 Refactor PlacementBlueprint to not be hitobject specific 2024-09-24 20:31:00 +02:00
Marvin Schürz
3180468db1 Prevent the distance snap grid from being activated by alt key while dragging select box handle 2024-09-21 14:22:17 +02:00
Bartłomiej Dach
130802e480
Add hotkey hints to editor menus 2024-09-04 12:16:54 +02:00
Dean Herbert
171ac0f510
Fix incorrect osu!catch snap display when last object is a juice stream
Addresses https://github.com/ppy/osu/discussions/29678.
2024-09-02 17:26:14 +09:00
Bartłomiej Dach
f3617eadad
Fix editing juice stream path sometimes changing its duration
I'm not *super* sure why this works, but it appears to, and my educated
guess as to why is that it counteracts the effects of a change in the SV
of the juice stream by artificially increasing or decreasing the
velocity when running the appropriate path conversions and expected
distance calculations. The actual SV change takes effect on the next
default application, which is triggered by the `Update()` call at the
end of the method.
2024-07-22 15:14:45 +02:00
Bartłomiej Dach
56af009e77
Fix EditablePath.UpdateHitObjectFromPath() not automatically updating object
This is important because the editable path conversions heavily depend
on the value of `JuiceStream.Velocity` being correct. The value is only
guaranteed to be correct after an `ApplyDefaults()` call, which is
triggered by updating the object via `EditorBeatmap`.
2024-07-22 14:50:25 +02:00
Bartłomiej Dach
6b3c1f4e47
Unify juice stream piece UX with osu! control point pieces
- Use same hover state
- Use shift-right click for quick delete rather than shift-left click
2024-07-22 13:30:15 +02:00
Bartłomiej Dach
47964f33d7
Fix catch juice stream vertex remove operation not undoing 2024-07-22 13:21:49 +02:00
Bartłomiej Dach
64381d4087
Fix catch juice stream vertex add operation not undoing 2024-07-22 12:18:53 +02:00
Dean Herbert
5350945340
Update HasFlag usages 2024-07-03 00:19:04 +09:00
Bartłomiej Dach
659505f711
Adjust calls to GetContainingInputManager() 2024-06-18 07:41:19 +02:00
Bartłomiej Dach
21201e616d
Merge pull request #27723 from 64ArthurAraujo/editor-fix-reverse-selection
Fix reverse selection not updating new combo location
2024-03-28 11:25:17 +01:00
Bartłomiej Dach
2f786ffc32
Simplify implementation 2024-03-28 10:12:27 +01:00
Arthur Araujo
01a72d5afa Fix combo not reversing properly depending on the order of selection 2024-03-26 12:10:40 -03:00
Bartłomiej Dach
1866b4b6b1
Refactor abstract check to reduce duplication 2024-03-26 11:13:03 +01:00
Arthur Araujo
10683de578 Use order of new combo flags instead of StartTime 2024-03-26 04:59:47 -03:00
Arthur Araujo
78037fa477 Handle new combo on HandleReverse 2024-03-25 04:19:14 -03:00
Arthur Araujo
6fa663c8ca Make check ruleset specific 2024-03-22 14:48:22 -03:00
OliBomby
ec578e1d9f fix near-zero length sliders n stuff being placeable 2023-12-19 21:20:21 +01:00
Thomas Müller-Höhne
926636cc03 Generalize Bezier curves to BSplines of Nth degree 2023-11-11 13:32:53 +01:00
Bartłomiej Dach
359ae31204
Fix catch distance snap grid not moving
Regressed in https://github.com/ppy/osu/pull/25154.
Specifically, in 013b5fa916
and 74b86349d5.

A simple case of too-much-code-deleted-itis.
2023-10-26 15:42:50 +02:00
Dean Herbert
74b86349d5
Tidy up CatchHitObjectComposer 2023-10-19 23:57:36 +09:00
Dean Herbert
013b5fa916
Move beat snap grid implementation details to ScrollingHitObjectComposer 2023-10-19 23:54:34 +09:00
Dean Herbert
52c2eb93de
Merge branch 'master' into taiko-beat-snap-grid 2023-10-19 23:53:01 +09:00
Bartłomiej Dach
0c4e74c82d
Inherit ScrollingHitObjectComposer in catch 2023-10-19 11:58:25 +02:00
Bartłomiej Dach
31849192c3
Remove DistancedHitObjectComposer inheritance from catch composer 2023-10-19 11:46:30 +02:00
Dean Herbert
5341a335a6
Bypass Parent nullability checks for now 2023-10-17 17:48:45 +09:00
Dean Herbert
4381169a3f
Combine selection and input handling logic for beat snap grids across all rulesets 2023-10-17 17:09:42 +09:00
Dean Herbert
1b9acdf55c
Abstract out common implementation of BeatSnapGrid 2023-10-17 16:42:52 +09:00
Bartłomiej Dach
f2791d4f3e
Move comment a bit to fix formatting
Would otherwise trigger IDE0055, but that isn't resolveable without
an inspection cycle with resharper, so just move in a more sane place.
2023-09-20 12:22:05 +02:00
Dean Herbert
41a8239e49 Remvoe null default for mods which can't be null 2023-09-20 15:27:50 +09:00