Dean Herbert
6761f869f9
Modify flow to avoid weird bindable and value resetting
2022-08-16 14:17:35 +09:00
Dean Herbert
c9baadcf88
Merge branch 'master' into improve_retry_behaviour
2022-08-16 13:06:04 +09:00
Dean Herbert
f81c7644b4
Make GameplayClockContainer
also an IGameplayClock
and expose to remaining tests
2022-08-15 18:30:53 +09:00
Dean Herbert
6d78218142
Update usages of GameplayClockContainer.GameplayClock
to access properties directly
2022-08-15 18:08:49 +09:00
Ryuki
d5f10cbb9d
Revert 787dee24
and initialize calculator in HUDOverlay
2022-08-14 18:53:00 +02:00
Ryuki
787dee249d
Move KeysPerSecondCalculator
instantiation from HUDOverlay
to Player
...
This prevents messing with *future* Skin (de)serialization
2022-08-11 10:37:16 +02:00
Dean Herbert
a5081826b7
Handle cancellation at more points during Player
initialisation
...
As discussed in discord, this will help avoid null references during
cancellation which can otherwise be quite confusing to debug.
2022-08-09 23:25:19 +09:00
BlauFx
0afa3a5ec8
Fix xml doc
2022-08-08 21:20:09 +02:00
BlauFx
f6e65cf1af
Improve implementation
2022-08-08 20:53:05 +02:00
BlauFx
cd68134565
Call skip method directly
2022-08-08 13:10:28 +02:00
BlauFx
09230304a4
Improve implementation
2022-08-07 13:20:29 +02:00
Ryuki
b2557a8d2d
Refactor KPS
...
- Remove '#nullable disable' in KeysPerSecondCalculator and
KeysPerSecondCounter
- Remove KeysPerSecondCalculator IDisposable implementation
- Make KeysPerSecondCalculator static instance initialized once by
KeysPerSecondCounters
- Auto transfer dependencies from KeysPerSecondCounter to
KeysPerSecondCalculator using Resolved properties
- Add internal reset logic to KeysPerSecondCalculator and make it
independent from Player
- Use GameplayClock.TrueGameplayRate to get real-time rate. If 0 then it
defaults to the last non 0 rate if no such mod is enabled
2022-08-07 00:53:00 +02:00
BlauFx
fa6d55b5b5
Remove redundant lambda signature parentheses
2022-08-06 18:47:11 +02:00
BlauFx
0d418559bc
Skip song intro only in case of a quick restart
2022-08-06 17:02:45 +02:00
BlauFx
445f921756
Move IsSkippable event into load method
2022-08-05 23:21:03 +02:00
BlauFx
99e07aa09a
Skip intro if the map gets restarted
2022-08-05 23:01:52 +02:00
Ryuki
0886137e39
Prevent KeysPerSecondCounter from NRE when no instance is initialized
2022-08-05 21:03:00 +02:00
Ryuki
42d1bdfc95
Move KPS calculation to a standalone class
2022-08-05 04:17:01 +02:00
Ryuki
89855cc1d6
Change KPS Counter implementation base and add better replay integration
...
The counter implementaiton is now list based, and will not invalidate
previous hits by removing them but by testing if they are within the 1
second span, allowing better integration with replays and spectators.
2022-07-31 01:29:57 +02:00
Dan Balasescu
ce694123eb
Move spectator begin/end playing to SubmittingPlayer
2022-07-28 20:44:04 +09:00
Salman Ahmed
ad09e728fd
Move Passed
assignment inside FailScore
2022-07-21 08:12:06 +03:00
Salman Ahmed
0f0b19da4a
Populate score with remaining "miss" statistics on fail/exit
2022-07-21 06:01:36 +03:00
Salman Ahmed
6285442b7d
Fix failed scores not prepared before import
2022-07-15 22:57:12 +03:00
Dean Herbert
0200ef1d48
Make delegate firing more safe to being set later than BDL
2022-07-15 19:06:44 +09:00
Dean Herbert
ab6665d88c
Merge branch 'master' into Save-Score-Failed
2022-07-15 18:02:58 +09:00
Dean Herbert
f3a6e646a6
Merge branch 'master' into Save-Score-Failed
2022-07-08 18:32:13 +09:00
Dean Herbert
9d730f8440
Fix custom rulesets not importing scores at all
...
Replaces the error with the ability to import, minus replays.
Closes https://github.com/ppy/osu/issues/17350 (arguably, but let's go with it for now).
2022-07-07 14:49:23 +09:00
cdwcgt
fd0d8b1ce3
Add button state, fix async issues, watch replay method
...
Most borrowed from `ReplayDownloadButton`
2022-06-29 22:50:47 +09:00
Dean Herbert
31a447fda0
Update parameter discards
2022-06-24 21:26:19 +09:00
cdwcgt
f2eb7e0551
Use better design and fix some problem
...
Let saveReplay async but still void
Make failed score's rank = F
2022-06-21 19:06:38 +08:00
cdwcgt
43ead5820a
deal with test
2022-06-21 00:54:50 +09:00
cdwcgt
9a6f4ef76d
Save score button on failed screen
2022-06-19 23:59:37 +09:00
Dan Balasescu
f8830c6850
Automated #nullable processing
2022-06-17 16:37:17 +09:00
Dean Herbert
be2b4e68b9
Don't play player exit sound when restarting
2022-06-15 17:49:18 +09:00
Dan Balasescu
6e450b7350
Explicitly handle operation cancelled exceptions
2022-06-09 14:35:53 +09:00
Dan Balasescu
ec03dc16db
Don't trigger notification when user quit
2022-06-09 14:13:14 +09:00
Dan Balasescu
bfde334e77
Allow beatmaps to load endlessly when entering Player
2022-06-09 14:03:21 +09:00
Dan Balasescu
a052e09ac3
Send ScoreProcessor statistics in SpectatorState
2022-05-30 19:26:26 +09:00
Dan Balasescu
c97b477485
Fix inverted operation order
2022-05-30 19:11:54 +09:00
Bartłomiej Dach
cbd1169495
Move cache declarations of ISamplePlaybackDisabler
to interface
2022-05-08 10:38:58 +02:00
Bartłomiej Dach
9ae019eb39
Move ISamplePlaybackDisabler
to more general namespace
2022-05-08 10:38:58 +02:00
Dean Herbert
8ab3636f87
Change conditions for HUD being shown to include pause/fail states
...
As proposed in https://github.com/ppy/osu/discussions/17975 . Feels pretty good to me, and probably how it should have been implemented from the start.
2022-04-26 12:09:21 +09:00
Dean Herbert
832d37b2c2
Update screen transition events to use new event args
2022-04-22 00:52:44 +09:00
Dean Herbert
d4286255a0
Expose and set GameplayStartTime
directly, rather than via Reset
parameter
2022-04-13 13:58:44 +09:00
Dean Herbert
282fccb4c8
Fix typo in xmldoc
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-04-13 12:24:47 +09:00
Dean Herbert
a4a0241800
Use a more explicit flow to set and reset GameplayClockContainer
start time
2022-03-17 20:57:30 +09:00
Dean Herbert
2eb3365f46
Fix regressing issues when attempting to exit Player
after an unsuccessful beatmap load
2022-03-09 17:57:58 +09:00
Dean Herbert
1ee0be5e39
Ensure gameplay can't start when an UnknownMod
is present
2022-03-09 17:57:58 +09:00
Dean Herbert
b0688cc6dd
Merge branch 'master' into fix-storyboard-sample-rate
2022-03-04 12:04:49 +09:00
Salman Ahmed
cbb8dc2891
Fix storyboard samples rate not adjusted from actual gameplay mods
2022-03-02 20:56:18 +03:00
Dean Herbert
350b0b488c
TODO: Get score from previous play session for further analysis
2022-03-01 18:44:15 +09:00
Dan Balasescu
6d3bc005ea
Merge branch 'master' into spectator-state-rework
2022-02-02 18:57:04 +09:00
Bartłomiej Dach
07d09b3520
Remove unused parameter from createGameplayComponents()
...
No longer used since 136843c8e4
.
2022-02-01 21:35:41 +01:00
Dan Balasescu
41007169f7
Give SpectatorState a user state
2022-02-01 21:51:05 +09:00
Dan Balasescu
38e075c522
Add HasQuit gameplay state
2022-02-01 14:47:19 +09:00
Dan Balasescu
781cb9f18d
Move HasPassed/HasFailed into GameplayState
2022-02-01 14:46:24 +09:00
Dan Balasescu
0641264a11
Merge branch 'master' into spectator-consistency-frames
2022-02-01 14:35:30 +09:00
Dan Balasescu
4fb565e15f
Reset ScoreProcessor from statistics replay frames
2022-01-31 21:32:56 +09:00
Salman Ahmed
4f4f60248f
Add failing test case
2022-01-30 01:46:10 +03: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
34dbde6023
Only copy across Hash
and ID
so statistics aren't lost
2022-01-14 18:22:52 +09:00
Dean Herbert
916b591b1b
Fix watch replay button not working immediately after playing
2022-01-14 18:03:06 +09:00
Dean Herbert
2b8706b6ce
Detach and reattach scores to make work
2022-01-12 17:00:16 +09:00
Dean Herbert
53792811b2
more fixes (almost compiles, except ruleset and manager)
2022-01-12 16:57:27 +09:00
Dean Herbert
b8cd3cdbbc
Various updates to ruleset and primary key usages to move closer to realm support
2022-01-12 16:57:13 +09:00
Dean Herbert
00177a3ae1
Update usages to new naming
2022-01-06 22:54:43 +09:00
Dean Herbert
73b40e6833
Replace usage of .Result
with .WaitSafelyForResult
2022-01-04 11:51:41 +09:00
Dan Balasescu
a43cc20ae2
Apply changes to GameplayCompleted from reviews
2021-12-24 21:58:20 +09:00
Dan Balasescu
727335dcad
Improve reliability of exiting gameplay
2021-12-24 14:23:09 +09:00
Dean Herbert
cac684c044
Improve appearance of player-wide background after failing with low background dim
2021-12-13 14:53:11 +09:00
Dean Herbert
f7c5a3f506
Use similar method of consuming OnlineID
as done in beatmap classes
2021-12-10 18:34:31 +09:00
Dean Herbert
dbb08f7d46
Use OnlineID
for set operations
2021-12-10 16:11:48 +09:00
Dean Herbert
6b73672403
Stop Player
from blocking volume adjust when Alt
it held
...
Similar case to what we already have in `OsuScrollContainer`, so there
is precedent for handling this locally in this fashion.
2021-12-03 17:18:07 +09:00
Dean Herbert
7c2e79f911
Update all simple cases of switching to IWorkingBeatmap
2021-11-17 20:56:57 +09:00
Bartłomiej Dach
8db2fc439d
Change ruleset ID assert in player to null-check
2021-10-18 23:45:06 +02:00
Bartłomiej Dach
874decb3cd
Replace spectator-local fix for wrong ruleset ID with player-global consistency check
2021-10-16 16:10:42 +02:00
Dean Herbert
7a5a612896
Move retry and exit hotkey overlays to same depth / container
2021-10-16 02:29:45 +09:00
Dean Herbert
6f947cacbd
Fix test failures
2021-10-15 21:22:38 +09:00
Dean Herbert
b08743342b
Fix incorrect nesting
2021-10-15 19:35:08 +09:00
Dean Herbert
66f3370a19
Add new fail animation to better match new sound effects
2021-10-15 19:14:59 +09:00
Dean Herbert
3d6602b8df
Ensure FailAnimation
is disposed synchronously to avoid test failures
2021-10-11 14:05:31 +09:00
Dean Herbert
436ead421a
Move low pass fail effect to FailAnimation
2021-10-08 12:27:04 +09:00
Dean Herbert
da96cc73d8
Fix dual specification of SuspensionHandler
and move fields around slightly
2021-10-07 23:40:47 +09:00
Dean Herbert
310d7965b6
Merge branch 'master' into more-filter-effects
2021-10-07 20:52:38 +09:00
Jamie Taylor
cc209f0f2d
Add filter effect to fail sequence
2021-10-07 17:55:30 +09:00
Dean Herbert
5f129ae33c
Remove local overridden storage of Mods
in Player
...
Not required and only causing headaches. Accessing mods should now be
done via `GameplayState`.
Closes #14912 .
2021-10-07 14:53:39 +09:00
Dean Herbert
7176dc95e5
Revert Player.Score
to protected
2021-10-05 14:55:40 +09:00
Dean Herbert
e19be8ebe4
Make GameplayState.Score
immutable
2021-10-05 14:55:40 +09:00
smoogipoo
d1e7191f94
Pass score into GameplayState
2021-10-04 20:59:51 +09:00
smoogipoo
5aae673240
Use GameplayState
2021-10-04 20:33:54 +09:00
smoogipoo
031c5a441e
Merge branch 'master' into realtime-pp-display
2021-10-04 20:19:37 +09:00
Dean Herbert
853cf6feaa
Rename last remaining BeatmapInfo Beatmap
usage
2021-10-04 17:35:53 +09:00
Dean Herbert
32afd3f426
Replace all basic usages
2021-10-02 02:22:23 +09:00
smoogipoo
d0081908c5
Make Score internal
2021-10-01 20:52:48 +09:00
smoogipoo
84bddf0885
Initial PP counter implementation
2021-09-30 17:00:24 +09:00
Dean Herbert
fa693bb8a8
Move MusicController
adjustment set to inside OsuScreen
itself (and result nullable
)
2021-09-16 16:08:09 +09:00
AbstractQbit
318f0941ca
Move all the "inherit previous AllowTrackAdjustments
" logic into OsuScreen
2021-09-15 21:25:39 +03:00
AbstractQbit
b9193aae6d
Make IOsuScreen.AllowTrackAdjustments nullable
...
Allows for inheriting value from the previous screen if undefined
2021-09-14 17:37:57 +03:00
smoogipoo
956c1cc216
Merge branch 'master' into activity-on-multiplayer-screens
2021-08-24 12:33:34 +09:00
Dean Herbert
0d283aa6a3
Expose LocalUserPlaying
from Player
2021-08-17 16:16:49 +09:00
Dean Herbert
82eddeffef
Add LocalUserPlayInfo
interface to convey common information about player status
2021-08-17 16:15:47 +09:00
Nathan Alo
cc3468b4ab
apply suggestions
...
- make `UserActivity.InGame` and derive that to `InSoloGame` and `InMultiplayerGame`
- rename `SoloGame` to `InSoloGame`
- rename `MultiplayerGame` to `InMultiplayerGame`
2021-08-16 06:32:33 +08:00
Salman Ahmed
a75da82986
Add explaining comment
2021-08-01 21:14:54 +03:00
Salman Ahmed
ac930b8918
Fix judgement processors provided to mods while not completely loaded
2021-08-01 19:16:30 +03:00
Henry Lin
89e8296eb1
Reset all types of adjustments in MusicController
; Rename AllowRateAdjustments
to AllowTrackAdjustments
2021-07-29 15:39:26 +08:00
Dan Balasescu
5ef1fe6948
Merge branch 'master' into fix-replay-date
2021-07-19 21:58:37 +09:00
Dan Balasescu
f3bcaf7f11
Merge pull request #13929 from peppy/i-deep-cloneable
...
Create a deep clone of score for score submission purposes
2021-07-19 21:58:27 +09:00
Dean Herbert
b3f60c8253
Fix date being updated on replays unexpectedly
2021-07-19 19:28:35 +09:00
Dean Herbert
f16b4957aa
Move clone to earlier in the process
2021-07-19 19:18:34 +09:00
Dean Herbert
3c028ce05c
Add IDeepCloneable
interface and update existing CreateCopy
methods to use it
2021-07-19 12:54:17 +09:00
Dean Herbert
d7f997a7f3
Set score's rank on a failed submission
...
As we don't have a `RankInfo.F`, this is the next best choice. I am also
adding a check osu-web side for this - this is just to make sure we
aren't sending scores with SS when they are not actually completed.
I'm working on a separate PR to ensure this does not get mutated during
the player exit process.
2021-07-19 12:36:15 +09:00
Dean Herbert
74c63e15be
Mark score failed on fail and exit
2021-07-01 17:48:09 +09:00
Salman Ahmed
b12adc6073
Remove all test skinning changes in favour of the ISkinSource.AllSources
path
2021-06-22 10:48:03 +03:00
Dean Herbert
1b0aadcc6f
Merge branch 'master' into transformers-per-skin
2021-06-22 16:03:15 +09:00
Dean Herbert
0bc68a7018
Move xmldoc to method
2021-06-18 16:50:31 +09:00
Dean Herbert
19507e107e
Reorder methods to make more sense
2021-06-18 16:46:40 +09:00
Dean Herbert
a7f40dc6d4
Merge branch 'remove-synchronous-prepare-score-method' into storyboard-outro-logic-refactor
2021-06-18 16:45:01 +09:00
Dean Herbert
45122594e5
Remove the synchronous version of PrepareScoreForResults
...
Replaces all existing usages with the `async` version.
2021-06-18 16:24:08 +09:00
Dean Herbert
f3426e38b4
Add note about delay parameter
2021-06-18 16:18:20 +09:00
Dean Herbert
3819a1f03b
Remove exit override behaviour
...
I don't actually know under what scenario this could have been hit, and
actually caused expected behaviour. Consider that in the scenario I
describe in the comment (which I added yesterday), the user is
requesting a pause or exit which would be "cancelled showing the results
instead". But in such a scenario, `PerformExit` would first be run,
which cancels the `resultsDisplayDelegate` in the first place.
The only special case would be pressing the close button on the window
decoration? Which I don't think should be a special case in the first
place, so I'm just going to remove this for the time being to keep
things simple.
2021-06-18 16:12:35 +09:00
Dean Herbert
7ef8eac773
Remove unnecessary (and no longer correct) exception
2021-06-18 16:08:31 +09:00
Dean Herbert
2bf855fcca
Move all storyboard outro skip logic out of updateCompletionState
...
This method should only be called to trigger the score completion
portion of player progression. The storyboard skip/end logic is now
handled separately in `progressToResults`.
2021-06-18 15:50:43 +09:00
Bartłomiej Dach
f282326f9a
Move score preparations back below ShowResults
check
2021-06-17 19:04:52 +02:00
Bartłomiej Dach
3a1444e75d
Fix malformed xmldoc tag
...
Oops. Made a typo in the PR suggestion.
2021-06-17 19:02:56 +02:00
Dean Herbert
9facfe8964
Apply suggestions from code review
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2021-06-18 01:07:54 +09:00
Dean Herbert
e0a3696145
Merge branch 'master' into player-completion-refactoring
2021-06-17 23:51:42 +09:00
Bartłomiej Dach
10b0d066be
Reword comments slightly
2021-06-17 16:04:58 +02:00
Bartłomiej Dach
561dbea9e1
Use xmldoc-specific syntax for nicer formatting
2021-06-17 15:26:50 +02:00
Dean Herbert
d03c6da60c
Refactor and redocument updateCompletionState()
and surrounding methods
2021-06-17 19:13:53 +09:00
Dean Herbert
246ab41cc6
Remove special casing for user exit during storyboard outro
2021-06-17 18:11:15 +09:00
Dean Herbert
7cbebe6d11
Rewrite xmldoc and inline comments for PerformExit
2021-06-17 18:10:59 +09:00
Salman Ahmed
ef2c4fd0d8
Make RulesetSkinProvidingContainer
able to be overriden for testing purposes
2021-06-10 16:36:46 +03:00
Salman Ahmed
1aaad7bfd4
Apply few adjustments to skinning overlays comment
2021-06-09 22:49:31 +03:00
Salman Ahmed
e30f6581b3
Wrap gameplay content within a RulesetSkinProvidingContainer
2021-06-09 22:49:31 +03:00
Dean Herbert
a7ef0173e9
Add safety to ensure background is correct tint when entering gameplay
2021-06-09 17:07:28 +09:00
Dean Herbert
23096c58bb
Merge branch 'master' into fix-spectator-frame-conversion
2021-06-04 15:06:15 +09:00
Dean Herbert
d444fed46f
Detach gameplay score from replay recorder before importing
...
Closes #13320 .
2021-06-04 02:00:02 +09:00
smoogipoo
e887807ae7
Apply review fixes
2021-06-03 18:32:05 +09:00
smoogipoo
be03a2d7d2
Fix multiple calls to seek method potentially not working
2021-06-03 17:47:22 +09:00
smoogipoo
c3280083a2
Merge branch 'master' into fix-spectator-frame-conversion
2021-06-03 17:42:01 +09:00
smoogipoo
420df124b5
Add framestable-bypassing seek for spectator
2021-06-03 17:27:21 +09:00
Dean Herbert
a15cac6f53
Change the way Score
is initialised in Player
to better lend to population of metadata
2021-06-02 15:44:04 +09:00
Dean Herbert
14570b6fb1
Merge branch 'master' into autoplay-pause-support
2021-06-01 14:19:21 +09:00
smoogipoo
d2d0896298
Expose GameplayBeatmap and GameplayRuleset from Player
2021-05-31 19:22:20 +09:00
Dean Herbert
7f9318d976
Expose GameplayBeatmap
to derived Player
classes
2021-05-25 18:36:47 +09:00
Dean Herbert
c2b938a29f
Remove autoplay consideration from Player
2021-05-25 18:09:37 +09:00
Dean Herbert
100e2d14a5
Move call inside conditional
2021-05-24 15:14:55 +09:00
Dean Herbert
a69a1b5211
Fix Player
potentially running MakeCurrent
when already removed from the screen stack
...
Closes #12919 .
2021-05-24 13:53:53 +09:00
smoogipoo
895eb14c5a
Forcefully end playing to fix test failures
2021-05-21 14:09:30 +09:00
smoogipoo
c6160d5304
Only ignore online score id for database import
2021-05-18 21:17:41 +09:00