1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-18 11:02:57 +08:00
Commit Graph

71209 Commits

Author SHA1 Message Date
Dean Herbert
8d41eda91a
Merge branch 'master' into beatmap-carousel-v2 2025-01-14 19:06:52 +09:00
Dean Herbert
3ddff19337
Fix potential nullref due to silly null handling and too much OOP 2025-01-14 19:03:58 +09:00
Dean Herbert
b4d054fdc0
Merge pull request #31444 from smoogipoo/friend-presence-2
Add notifications for when friends go online or offline
2025-01-14 18:58:19 +09:00
Bartłomiej Dach
459577cc32
Merge pull request #31474 from peppy/scroll-container-double-precision
Update game `ScrollContainer` usage in line with framework changes
2025-01-14 10:56:55 +01:00
Dean Herbert
55ae0403d8
Ensure API state is Connecting immediately on startup when credentials are present
Currently, there's a period where the API is `Offline` even though it is
about to connect (as soon as the `run` thread starts up).

This can cause any `Queue`d requests to fail if they arrive too early.

To avoid this, let's ensure the `Connecting` state is set as early as
possible.
2025-01-14 18:18:53 +09:00
Dan Balasescu
156207d347
Remove unused using 2025-01-14 17:54:40 +09:00
Dan Balasescu
51c7c218bf
Simplify operations on local list 2025-01-14 17:52:26 +09:00
Bartłomiej Dach
92cc45dc05
Merge branch 'text-input-properties' into scroll-container-double-precision 2025-01-14 09:51:48 +01:00
Dean Herbert
f6073d4ac0
Ensure API starts up with LocalUser in correct state
I noticed in passing that in a very edge case scenario where the API's
`run` thread doesn't run before it is loaded into the game, something
could access it and get a guest `LocalUser` when the local user actually
has a valid login.

Put another way, the `protected HasLogin` could be `true` while
`LocalUser` is `Guest`.

I think we want to avoid this, so I've moved the initial set of the
local user earlier in the initialisation process.

If this is controversial in any way, the PR can be closed and we can
assume no one is ever going to run into this scenario (or that it
doesn't matter enough even if they did).
2025-01-14 17:43:43 +09:00
Bartłomiej Dach
058ff8af77
Make test class partial 2025-01-14 09:22:56 +01:00
Bartłomiej Dach
8211c4ee98
Merge branch 'master' into colorhax 2025-01-14 08:56:52 +01:00
Bartłomiej Dach
8ffd254719
Adjust initialisation code to start with combo colour picker hidden 2025-01-14 08:54:46 +01:00
Dean Herbert
3c913c9f6d
Merge branch 'master' into colour-for-friend-lb 2025-01-14 16:34:05 +09:00
Dean Herbert
904a08af26
Update textbox usage in line with framework changes 2025-01-14 16:29:56 +09:00
Dean Herbert
2c57cd59a5
Update framework 2025-01-14 16:26:56 +09:00
Dean Herbert
77db355809
Ensure storyboards are still updated even when dim is 100%
This avoids piled-up overhead when entering break time. It's not great,
but it is what we need for now to avoid weirdness.
2025-01-14 16:22:10 +09:00
Dean Herbert
7761a0c18a
Add failing test coverage showing storyboard not being updated when dimmed 2025-01-14 16:22:10 +09:00
Dean Herbert
75d1fab6d0
Merge pull request #30060 from peppy/fix-skin-editor-undo
Fix initial skin state being stored wrong to undo history
2025-01-14 01:48:09 +09:00
Bartłomiej Dach
39a69d6454
Adjust test to pass
What I think was happening here is that the dump of the accuracy
counter's state was happening too early. The component is loaded
synchronously into the `ISerialisableDrawableContainer` before its
default position is set via the "apply defaults" `ArgonSkin` flow
- so the test needs to wait for that to take place first.
2025-01-13 13:14:34 +01:00
Bartłomiej Dach
8968ab19d9
Merge branch 'master' into fix-skin-editor-undo 2025-01-13 12:39:51 +01:00
Bartłomiej Dach
fc069e060c
Only show colour on new combo selector button if overridden
As proposed in
https://discord.com/channels/188630481301012481/188630652340404224/1327309179911929936.
2025-01-13 12:38:28 +01:00
Susko3
b0339a9d63 Create game as soon as possible 2025-01-13 00:49:04 +00:00
Susko3
76e09586fd Fix possible nullref in handleIntent()
Could happen if we get a malformed intent without data
2025-01-12 23:33:04 +00:00
Dean Herbert
dfbc93c3dc
Fix typo 2025-01-12 19:16:53 +09:00
Dean Herbert
83a2fe09c5
Update readme with updated mobile release information 2025-01-12 13:07:26 +09:00
Dean Herbert
afb999970d
Merge pull request #31481 from Susko3/update-osu-stable-from-registry
Add new osu!(stable) registry ProgId
2025-01-11 14:05:22 +09:00
Susko3
fef81781e7
Merge branch 'master' into update-osu-stable-from-registry 2025-01-11 04:23:23 +00:00
Dean Herbert
cf55fe16ab
Generic type instead of raw object? 2025-01-11 01:43:47 +09:00
Dean Herbert
6fbab1bbce
Stop exposing CarouselItem externally 2025-01-11 01:43:47 +09:00
Dean Herbert
ad04681b28
Add scroll position maintaining 2025-01-11 01:43:47 +09:00
Dean Herbert
288be46b17
Add basic selection support 2025-01-11 01:43:47 +09:00
Dean Herbert
5e9a7532d3
Add basic implementation of new beatmap carousel 2025-01-11 01:43:47 +09:00
Dean Herbert
94ea003d90
Update game ScrollContainer usage in line with framework changes
See https://github.com/ppy/osu-framework/pull/6467.
2025-01-11 01:42:59 +09:00
Bartłomiej Dach
933f5db208
Merge branch 'master' into new-combo-editor 2025-01-10 14:13:14 +01:00
Bartłomiej Dach
0d9a3428ae
Merge conditionals 2025-01-10 14:13:03 +01:00
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
Dean Herbert
73adc4dfd7
Merge pull request #31364 from bdach/editor-storyboard-display-2
Display storyboard in editor background
2025-01-10 15:09:44 +09:00
Dean Herbert
0509623ef6
Ignore realm List<T> type 2025-01-10 14:50:45 +09: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
Susko3
253b9cbbdd Add new osu!stable registry ProgId 2025-01-09 16:51:52 +00: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
Dan Balasescu
074b743ee6
Merge pull request #31459 from peppy/fix-replay-frame-separation
Fix rate adjustments changing the spacing between replay frames
2025-01-09 17:35:23 +09:00
Dan Balasescu
7268b2e077
Add separate path for friend presence notifications
It proved to be too difficult to deal with the flow that clears user
states on stopping the watching of global presence updates. It's not
helped in the least that friends are updated via the API, so there's a
third flow to consider (and the timings therein - both server-spectator
and friends are updated concurrently).

Simplest is to separate the friends flow, though this does mean some
logic and state duplication.
2025-01-09 17:31:01 +09:00
Dean Herbert
26264d6468
Merge pull request #31438 from Susko3/show-in-windows-association-menus
Show osu!(lazer) in windows "default apps" menus
2025-01-09 14:07:16 +09:00
Dean Herbert
0fe6b4be0d
Add reason for making test interactive-only 2025-01-09 13:33:55 +09:00
Dean Herbert
c8f72fdbe9
Fix rate adjustments changing the spacing between replay frames 2025-01-09 13:30:04 +09:00
Dean Herbert
2a7a3d932e
Add test showing that rate adjustments cause discrepancies in replay frame precision 2025-01-09 13:30:04 +09:00
Dan Balasescu
f4d83fe685
Keep friend states when stopping watching global activity 2025-01-09 13:23:16 +09:00