Dean Herbert
02f5fda330
Add missing final newline in file
2020-12-08 21:15:10 +09:00
Dean Herbert
aa68ae4ff2
Change locking mechanism for multiplayer rooms to use using-disposal pattern
...
Was required to lock over `await` calls server-side.
2020-12-08 20:43:18 +09:00
Dean Herbert
d76fabedf9
Add note about LoadRequested only being sent to a subset of room users
2020-12-08 20:43:18 +09:00
Dean Herbert
021a116093
Add extra xmldoc covering the fact that MatchStarted is received by all users
2020-12-08 20:43:18 +09:00
Dean Herbert
df908f90b2
Add exception to be thrown when an operation is requested requiring host when not host
2020-12-08 20:43:18 +09:00
Dean Herbert
2433838d58
Add methods covering match start / end
2020-12-08 20:43:18 +09:00
Dean Herbert
2aedd82e27
Document room states and remove unnecessary WaitingForResults state
2020-12-08 20:43:18 +09:00
Dean Herbert
147db0abe2
Fix client naming and xmldoc
2020-12-08 20:43:18 +09:00
Dean Herbert
60550b73f7
Add missing states and xmldoc for all states' purposes
2020-12-08 20:43:18 +09:00
Dean Herbert
8eccfa476c
Add loading states
2020-12-08 20:43:18 +09:00
Dean Herbert
345352be67
Mark PerformUpdate as an instant handle method (doesn't really help with anything)
2020-12-08 20:43:18 +09:00
Dean Herbert
11a7057289
Add notification flow for user state changes in room
2020-12-08 20:43:18 +09:00
Dean Herbert
dbe048cdc6
Add client method for notifying about host changes
2020-12-08 20:43:18 +09:00
Dean Herbert
a4ca8d2998
Ensure multiplayer rooms are instantiated with a room ID
2020-12-08 20:43:18 +09:00
Dean Herbert
71de7ce0a3
Add missing methods to server interface
2020-12-08 20:43:18 +09:00
Dean Herbert
5f5c0d5533
Return room model when joining
2020-12-08 20:43:18 +09:00
Dean Herbert
5d2ca7fc39
Make remaining model classes nullable and serializable
2020-12-08 20:43:18 +09:00
Dean Herbert
2365d65610
Move business logic out of MultiplayerRoom
2020-12-08 20:43:18 +09:00
Dean Herbert
42b1e9d6a4
Add xmldoc coverage of MultiplayerRoom
2020-12-08 20:43:18 +09:00
Dean Herbert
4f449ba821
Rename idle state
2020-12-08 20:43:18 +09:00
Dean Herbert
5a231cef15
Add thread safety for external operations on MultiplayerRoom
2020-12-08 20:43:18 +09:00
Dean Herbert
327799c263
Rename multiplayer server file to match class
2020-12-08 20:43:18 +09:00
Dean Herbert
b3bdaaa7b5
Move exceptions to common code
2020-12-08 20:43:18 +09:00
Dean Herbert
e193f8214d
Remove unnecessary room id from leave room request
2020-12-08 20:43:18 +09:00
Dean Herbert
882ace6efe
Make MultiplayerRoomUser equatable
2020-12-08 20:43:18 +09:00
Dean Herbert
baf16cfbc3
Add room settings related model and event flow
2020-12-08 20:43:18 +09:00
Dean Herbert
6e5846d91b
Fix serialization failure due to missing set
2020-12-08 20:43:18 +09:00
Dean Herbert
ff52a5ddc6
Add callbacks for join/leave events to notify other room occupants
2020-12-08 20:43:18 +09:00
Dean Herbert
ca86524c92
Add locking on join/leave operations
2020-12-08 20:43:18 +09:00
Dean Herbert
fdf025942b
Ensure room is locked when mutating users
2020-12-08 20:43:18 +09:00
Dean Herbert
8ebdb5723b
Add models for users and rooms
2020-12-08 20:43:18 +09:00
Dean Herbert
f4ccbbd092
Add basic server implementation
2020-12-08 20:43:18 +09:00
Dean Herbert
daed27460c
Add simple user state class
2020-12-08 20:43:18 +09:00
Dean Herbert
be4a668e0b
Add basic structure for multiplayer state and model components
2020-12-08 20:43:18 +09:00
Dean Herbert
a5e2509d52
Merge pull request #11105 from Joehuu/mod-settings-fade-in/out
...
Add fade in/out animations to mod settings container
2020-12-07 17:12:29 +09:00
Dean Herbert
454e94574c
Add corner rounding and positional transform
2020-12-07 16:43:07 +09:00
Dean Herbert
7253866e17
Move customisation panel to be in same area as main content
2020-12-07 16:42:55 +09:00
ekrctb
f4eb17d398
Update osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs
...
Set mouse confine mode at initialization
Co-authored-by: Dean Herbert <pe@ppy.sh>
2020-12-07 16:09:14 +09:00
ekrctb
2469608c10
Fix possible null reference due to bindable change before variable is initialized
2020-12-07 15:19:18 +09:00
Joehu
0f9b38da08
Add fade in/out animations to mod settings container
2020-12-06 11:35:14 -08:00
Bartłomiej Dach
71edada623
Hide confine setting entirely in fullscreen
2020-12-05 22:15:41 +01:00
Bartłomiej Dach
08f23cc424
Revert leasing logic
2020-12-05 22:15:41 +01:00
Bartłomiej Dach
0a745144e3
Disable confine mode dropdown when full-screen
...
After hard-locking the mouse confine mode to `Always` in full-screen to
prevent confine issues from popping up, the confine mode dropdown in
settings had confusing UX due to seemingly having no effect when
full-screen.
2020-12-05 13:49:09 +01:00
Dean Herbert
9064ca9064
Merge pull request #11066 from ekrctb/fix-sample-expire
...
Fix DrawableHitObjects potentially expiring before their hit samples finish playback
2020-12-04 21:52:36 +09:00
Dean Herbert
7c0edb796e
Always confine mouse to screen when running fullscreen
2020-12-04 20:49:18 +09:00
Joehu
b8c284b34f
Fix one more key binding string not being sentence cased
2020-12-04 00:51:46 -08:00
Dean Herbert
a0f92628ac
Merge branch 'master' into fix-sample-expire
2020-12-04 13:49:08 +09:00
Dean Herbert
48c42e4247
Merge pull request #11083 from LittleEndu/recommend-if-filtered
...
Select recommended beatmap if last selection is filtered
2020-12-04 13:22:34 +09:00
Dean Herbert
5ded4b9faa
Merge branch 'master' into dho-remove-onparentreceived
2020-12-04 11:04:56 +09:00
Bartłomiej Dach
15d9147edd
Ensure equality member consistency for SampleInfo
...
The previous implementation of `SampleInfo`'s equality members was not
completely correct in its treatment of the `sampleNames` array. While
`Equals()` compared the values of `sampleNames` using `SequenceEqual()`,
therefore performing a structural check that inspects the contents of
both arrays, `GetHashCode()` used `HashCode.Combine()` directly on the
arrays, therefore operating on reference equality. This could cause the
pooling mechanism of samples to fail, as pointed out in #11079 .
To resolve, change the `GetHashCode()` implementation such that it also
considers the contents of the array rather than just the reference to
the array itself. This is achieved by leveraging
`StructuralEqualityComparer`.
Additionally, as a bonus, an array sort was added to the constructor of
`SampleInfo`. This is intended to be a "canonicalisation" processing
step for the array of sample names. Thanks to that sort, two instances
of `SampleInfo` that have the same sample names but permutated will also
turn out to be equal and have the same hash codes, given the
implementation of both equality members. This gives `SampleInfo`
set-like semantics.
2020-12-03 23:25:53 +01:00