1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-16 07:20:24 +08:00
Commit Graph

149 Commits

Author SHA1 Message Date
Salman Ahmed
3f72e76348 Expose StartTime from gameplay clock 2022-07-29 16:18:05 +03:00
Dean Herbert
6bfd351dec Add logging of GameplayClockContainer seeks 2022-06-28 15:23:29 +09:00
Dan Balasescu
f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +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
808f0ecb74 Ensure running state is updated before performing Seek in GameplayClockContainer.Reset 2022-04-11 14:10:50 +09:00
Dean Herbert
f09a946722 Start GameplayClockContainer paused for better state control 2022-03-18 15:28:22 +09:00
Dean Herbert
e3ab5de8cd Tidy up constructor logic overlap with gameplayStartTime 2022-03-18 01:35:50 +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
Salman Ahmed
3ec193d47e Fix spectator clock container incorrectly starting catch-up clock 2022-01-30 01:46:10 +03:00
sh0ckR6
9a1db04920
Resolve GameplayClockContainer instead of Player 2021-09-20 10:28:58 -04:00
Dean Herbert
3b876a43c2
Merge branch 'master' into multiplayer-spectator-screen 2021-04-26 14:12:35 +09:00
Bartłomiej Dach
e937b778f6 Fix potential failure in ensureSourceClockSet()
`ensureSourceClockSet()` was intended to only run when the adjustable
source hasn't been set at all yet. As it turns out permitting it to run
unconditionally can break the state of the underlying interpolated
clock. This is caused by the following factors:

* While the decoupleable clock is running, its `CurrentTime` does not
  come from either the source clock, or the internal stopwatch; it is
  instead calculated using the base `InterpolatingFramedClock` logic.

* A source change of a decoupleable clock seeks the provided source
  clock to the decoupleable's current time.

* When an interpolating clock is seeked (decoupleable clock is also
  an interpolating one), its interpolation state
  (`{Last,Current}InterpolatedTime`) are reset to 0.

* If the interpolating clock determines that its current time is too
  far away from the source's time (which was set when the source is
  changed), it will ignore the source and instead continue to use
  its current time until the source clock has caught up.

Overall, the source change is not really necessary if a source is
already there. The only reason to ensure it was set was to make sure
the first seek of the gameplay clock wasn't performed in decoupled
mode. Therefore, add a guard to make sure the source is only set if
there isn't one already.
2021-04-24 14:19:39 +02:00
Bartłomiej Dach
fdb5490e51 Attempt to explain source initialisation better 2021-04-23 21:56:08 +02:00
smoogipoo
ae2fd2f2e1 Ensure source is set on reset 2021-04-23 18:46:59 +09:00
smoogipoo
f32d00c0d9 Fix post-merge errors 2021-04-21 17:13:01 +09:00
smoogipoo
e78ef05fcf Merge branch 'gcc-abstraction' into multiplayer-spectator-screen 2021-04-21 17:11:14 +09:00
smoogipoo
ec080fcb32 Move seekOffset back to MasterGameplayClockContainer 2021-04-20 18:25:46 +09:00
smoogipoo
a683e5ec34 Seek using local method 2021-04-20 17:40:11 +09:00
smoogipoo
97fb90d9f4 Move clock processing to base.Seek() 2021-04-20 17:35:59 +09:00
smoogipoo
3d6d26039a Remove unused usings 2021-04-20 14:09:54 +09:00
smoogipoo
88ded95e75 Ensure clock is set in GCC.Start() 2021-04-20 13:56:13 +09:00
smoogipoo
a92ae8ce76 Fix Reset() potentially not resetting to the intended start position 2021-04-20 13:01:42 +09:00
smoogipoo
acbf4580a4 Only set initial source in Reset() 2021-04-19 19:57:00 +09:00
smoogipoo
c7183f92f7 Rename Restart() -> Reset() 2021-04-19 19:57:00 +09:00
smoogipoo
c8d38f9983 Merge branch 'gcc-abstraction' into multiplayer-spectator-screen 2021-04-16 20:51:00 +09:00
smoogipoo
3a78c19f96 More refactoring/xmldocs 2021-04-16 20:33:29 +09:00
smoogipoo
6301111fa3 Remove ClockToProcess, always process underlying clock 2021-04-16 20:17:21 +09:00
smoogipoo
a7aa3cb263 Merge branch 'gcc-abstraction' into multiplayer-spectator-screen 2021-04-16 20:16:26 +09:00
smoogipoo
f98ffbb1b3 Remove ClockToProcess, always process underlying clock 2021-04-16 20:15:42 +09:00
smoogipoo
fe3ba2b80e Implement IAdjustableClock on GameplayClockContainer 2021-04-15 19:07:25 +09:00
smoogipoo
f56125bd68 Update clock from base class 2021-04-14 21:15:14 +09:00
smoogipoo
18c69cdaf7 Split out files 2021-04-14 19:50:22 +09:00
smoogipoo
b53b30c1a9 Fix incorrect offset due to another intermediate Decoupleable clock 2021-04-14 19:33:55 +09:00
smoogipoo
2935f87e70 Fix IsPaused not being bound 2021-04-14 18:29:34 +09:00
smoogipoo
1aa36818df Abstractify GameplayClockContainer 2021-04-14 17:47:11 +09:00
Dean Herbert
20d04d6933 Fix Storyboard's FirstEventTime not finding the true earliest event 2021-01-04 15:16:01 +09:00
Dean Herbert
2dd5911256 Rename method to better match purpose 2020-12-11 14:44:01 +09:00
Dean Herbert
01bd765384 Simplify pause handling by moving transform logic to bindable change event 2020-12-10 17:42:47 +09:00
Dean Herbert
679a550d83 Fix single threaded seeking not working due to unnecessary seek call 2020-12-10 17:42:28 +09:00
Bartłomiej Dach
b7696c85ad Add more xmldocs 2020-11-01 15:23:03 +01:00
Dean Herbert
42b3aa3359 Fix spectating when starting from a point that isn't at the beginning of the beatmap 2020-10-27 18:58:37 +09:00
Dean Herbert
e3eaba7b2c Move ISampleDisabler implementation to Player and FrameStabilityContainer 2020-10-14 19:39:48 +09:00
Dean Herbert
b0f8e11bd4 Fix incorrect caching 2020-09-30 17:34:14 +09:00
Dean Herbert
7f579850dd
Merge branch 'master' into fix-editor-silence-on-seek 2020-09-30 17:03:23 +09:00
Dean Herbert
c5f6b77bba Add missing cached type 2020-09-29 13:42:17 +09:00
Dean Herbert
26ba7d3100 Remove unused method (was moved to a more local location) 2020-09-25 13:20:19 +09:00
Dean Herbert
508278505f Make local clock private 2020-09-21 19:40:57 +09:00
Dean Herbert
3f788da06d Fix SPM changing incorrectly with playback rate changes 2020-09-21 19:39:54 +09:00
Dean Herbert
93a8bc3d5a Remove local reset method in GameplayClockContainer 2020-08-17 22:36:09 +09:00
Dean Herbert
d9debef156 Add explicit LoadTrack method 2020-08-17 15:38:16 +09:00
smoogipoo
c0031955c9 Update with further framework changes 2020-08-12 01:50:18 +09:00
smoogipoo
e47a1eb313 Use adjustable ITrack 2020-08-12 01:41:21 +09:00
smoogipoo
eec94e1f53 Make track not-null in GameplayClockContainer/FailAnimation 2020-08-12 00:51:43 +09:00
smoogipoo
2e3ecf71c7 Pass track from Player to components 2020-08-06 18:31:08 +09:00
smoogipoo
5c05fe3988 Expose track from MusicController 2020-08-06 16:24:14 +09:00
smoogipoo
6e42b8219c Move track to MusicController, compiles 2020-08-06 16:24:14 +09:00
Dean Herbert
0d53d0ffc8 Fix back-to-front math 2020-06-15 00:46:20 +09:00
Dean Herbert
7b95c55afb Fix HardwareCorrectionOffsetClock breaking ElapsedTime readings 2020-06-14 11:33:59 +09:00
Dean Herbert
9b6525bb03 Fix applied platform/user offsets being incorrect when rate adjust mods are active 2020-05-15 18:44:47 +09:00
smoogipoo
2e4adc056f Fix potential deadlock during gameplay tests 2020-03-03 13:42:05 +09:00
Dean Herbert
b7996f91fc Update the windows platform offset to match stable 2020-02-07 17:51:38 +09:00
Dean Herbert
7fd52c21f5 Update mods and user adjust to use adjustments 2019-12-09 19:41:31 +09:00
Dean Herbert
d650bfb6d6 Remove unnecessary cast 2019-12-09 18:05:14 +09:00
Dean Herbert
eb074b7058 Allow mods to apply to track, not clock 2019-12-09 17:44:45 +09:00
Dean Herbert
48c6279e8b Only undo adjustments in GameplayClockContainer if applied at least once 2019-12-06 13:49:22 +09:00
Huo Yaoyuan
eba8657d38 Remove newly introduced redundant this. 2019-11-26 18:41:19 +08:00
Dean Herbert
83080c3b5f Fix merge regression 2019-11-22 14:14:18 +09:00
Dean Herbert
ffd0e17826 Merge branch 'skip-multiple-times' into lead-in-fixes 2019-11-21 19:01:28 +09:00
Dean Herbert
46a94821d4 Add support for consecutive skips 2019-11-21 18:59:55 +09:00
Dean Herbert
2dd2e3d861 Add correct AudioLeadIn support 2019-11-21 16:55:18 +09:00
Dean Herbert
8369be90f2 Allow skip button to actuate more than once 2019-11-21 15:19:06 +09:00
Dean Herbert
eee5902851 Merge remote-tracking branch 'upstream/master' into lead-in-fixes 2019-11-15 14:05:31 +09:00
Dean Herbert
cd1dd0f898 Fix adjustments not being removed correctly on retry from pause 2019-11-06 10:38:04 +09:00
Dean Herbert
ac02bb005d Fix GameplayClockContainer operating on beatmap's track after scren exited 2019-11-01 14:11:18 +09:00
Dean Herbert
5c2ea0b1a7 Move dispose to end of file 2019-06-10 01:14:46 +09:00
Dean Herbert
d964f6ba9e Tween track frequency on pause 2019-06-10 00:56:35 +09:00
Dean Herbert
a2fbcb2bd3 Fix rebase regressions 2019-05-31 15:58:46 +09:00
Dean Herbert
e03a664970 Fix lead-in logic to match stable
Also adds storyboard event priority support.
2019-05-31 15:51:19 +09:00
Dean Herbert
651706b10e Account for user/system offsets when deciding on an initial seek time
Closes #3043
Remove "AllowLeadIn" flag
2019-05-31 15:50:46 +09:00
Dean Herbert
bb69330e9f Call ProcessFrame on the userOffsetClock after a seek
Without doing this, GameplayClock can be left in an incorrect state after a seek (due to the userOffsetClock being its own FramedClock).
2019-04-24 15:28:14 +09:00
Dean Herbert
efaedafc08 Fix (legacy) AudioLeadIn being used incorrectly.
This lead-in is intended to specify a value before zero, not a value before the start time.
Also removes an unnecessary ProcessFrame call (it happens within Seek itself).
2019-04-24 15:28:14 +09:00
Dean Herbert
6856571f17 Fix incorrect seek target 2019-04-22 18:45:58 +09:00
Dean Herbert
55c5ef898d Remove delay on entering player 2019-04-22 18:29:58 +09:00
Dean Herbert
908eee9942 Fix pause tests 2019-04-22 18:29:51 +09:00
smoogipoo
0222424aef Make mods IReadOnlyList<Mod> gamewide
Prevents potential multiple evaluations of enumerable.
2019-04-10 17:20:36 +09:00
smoogipoo
85d3ff4846 Merge remote-tracking branch 'origin/master' into no-workingbeatmap-mods
# Conflicts:
#	osu.Game/Screens/Play/GameplayClockContainer.cs
2019-04-10 12:06:51 +09:00
smoogipoo
c584967eb1 Remove mods from workingbeatmap 2019-04-09 12:59:32 +09:00
Dean Herbert
efd7bea771 Add further xmldoc 2019-04-03 17:01:11 +09:00
Dean Herbert
50f8ab3dfb Fix gameplay offset handling on seeks 2019-04-03 16:58:20 +09:00
Dean Herbert
202a0086cc
Merge branch 'master' into better-player-flags 2019-03-29 13:45:45 +09:00
Dean Herbert
83863d35c3 Remove AllowLeadIn flag 2019-03-26 16:35:00 +09:00
Dean Herbert
b4d785c76c Don't update gameplay loop while paused 2019-03-26 13:36:17 +09:00
Dean Herbert
bcaff9f7b4 Add basic pause tests 2019-03-18 20:33:43 +09:00
Dean Herbert
465c95e952 Refactor pause logic so GameplayClockContainer is in control 2019-03-18 20:33:43 +09:00
Dean Herbert
c1a356161f Allow use rate adjust to fallback to clock rate adjust 2019-03-12 18:14:01 +09:00
Dean Herbert
cdeaa80fea Call ResetSpeedAdjustments before adjusting clock 2019-03-12 11:35:25 +09:00
Dean Herbert
13b3036ec6 Fix "wind" mods adjusting rate twice
This is a hotfix for incorrect framework behaviour.

Closes #4442
2019-03-12 02:45:45 +09:00
Dean Herbert
42efea1e06 Apply review 2019-03-08 15:05:45 +09:00
Dean Herbert
58ef397f4f Move all clock related gameplay logic inside GameplayClockContainer 2019-03-07 16:02:24 +09:00