Commit Graph

297 Commits

Author SHA1 Message Date
Bartłomiej Dach
67ca7e4135
Implement toggling visibility of pass and fail storyboard layers
Closes https://github.com/ppy/osu/issues/6842.

This is a rather barebones implementation, just to get this in place
somehow at least. The logic is simple - 50% health or above shows pass
layer, anything below shows fail layer.

This does not match stable logic all across the board because I have
no idea how to package that. Stable defines "passing" in like fifty
ways:

- in mania it's >80% HP
  (bb57924c15/osu!/GameModes/Play/Rulesets/Mania/RulesetMania.cs#L333-L336)
- in taiko it's >80% *accuracy*
  (bb57924c15/osu!/GameModes/Play/Rulesets/Taiko/RulesetTaiko.cs#L486-L492)
- there's also the part where "geki additions" will unconditionally set
  passing state
  (bb57924c15/osu!/GameModes/Play/Player.cs#L3561-L3564)
- and also the part where at the end of the map, the final passing state
  is determined by checking whether the user passed more sections than
  failed
  (bb57924c15/osu!/GameModes/Play/Player.cs#L3320)

The biggest issues of these are probably the first two, and they can
*probably* be fixed, but would require a new member on `Ruleset` and I'm
not sure how to make one look, so I'm not doing that at this time
pending collection of ideas on how to do that.
2024-06-14 13:59:02 +02:00
Andrei Zavatski
1e90e5e38e Use sb element path as a name 2024-05-25 13:24:25 +03:00
Salman Ahmed
b1aff91bba
Use throw helper methods
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2024-05-02 00:31:48 +03:00
Salman Ahmed
6d6f165884 Make video sprites flippable and vector-scalable to fix type constraint errors
Stable supports these on videos already from a quick read on code (since videos are generally a subclass of sprites).
2024-05-02 00:01:50 +03:00
Salman Ahmed
4ffeb5b469 Resolve post-merge-conflict issues 2024-05-01 23:57:58 +03:00
Salman Ahmed
895c09d4d1 Merge branch 'master' into storyboard-loops-v2 2024-05-01 23:46:38 +03:00
Dean Herbert
602b16f533
Fix fade-in no longer working on videos 2024-04-23 22:03:32 +08:00
Dean Herbert
17ca29c2c6
Actually apply transforms to the video 2024-04-23 17:37:37 +08:00
Dean Herbert
7eeac0f3b9
Fix incorrect xmldoc
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2024-04-23 17:34:52 +08:00
Dean Herbert
9e7182acf0
Remove unused DI beatmap paramater 2024-04-22 18:45:02 +08:00
Dean Herbert
c43c383abf
Allow storboard videos to take on no-relative size when specified by a mapper 2024-04-22 18:44:47 +08:00
Dean Herbert
4ae9f81c73
Apply transforms to storyboard videos
This requires that they are a `StoryboardSprite` for simplicity. Luckily
this works just fine.
2024-04-22 18:43:15 +08:00
Dan Balasescu
7b92c725b1
Revert "Merge pull request #27454 from EVAST9919/sb-lifetime-improvements"
This reverts commit 0881e7c8c1, reversing
changes made to 29a37e3585.
2024-04-05 14:45:49 +09:00
Salman Ahmed
9f71eac1db Remove extra end line 2024-03-08 23:09:50 +03:00
Salman Ahmed
8c92bb0595 Remove unused using directive 2024-03-08 23:09:16 +03:00
Salman Ahmed
1942d46a38 Remove leftover debugging code 2024-03-08 22:37:27 +03:00
Salman Ahmed
6861d9a302 Expose storyboard command lists as read-only and remove unnecessary memory footprint
Mutation should be done only with the methods exposed by `StoryboardCommandGroup`.
2024-03-08 22:29:49 +03:00
Salman Ahmed
0efa12a86a Fix parameter commands applying initial value before start time 2024-03-08 21:56:25 +03:00
Salman Ahmed
c1649b76d6 Reorder command properties to match general format
I had them shuffled around in the middle of the refactor.
2024-03-08 21:33:53 +03:00
Salman Ahmed
a85be2a46d Fix merge conflicts 2024-03-08 20:22:26 +03:00
Salman Ahmed
8d3e502262 Merge branch 'master' into storyboard-loops-v2 2024-03-08 20:22:19 +03:00
Salman Ahmed
79da6d8613 Fix refactor error on EndTimeForDisplay
Not sure when this happened >.>
2024-03-08 03:08:03 +03:00
Salman Ahmed
fa9b2f0cd5 Add generics to ApplyInitialValue/ApplyTransforms for ability to return custom transform sequences
*sigh*
2024-03-08 03:07:39 +03:00
Salman Ahmed
b450abb687 Support applying initial values of storyboard commands 2024-03-08 02:02:48 +03:00
Salman Ahmed
2ca36254f4 Fix comparison interface not implemented on storyboard command classes 2024-03-08 02:02:25 +03:00
Salman Ahmed
3755dd059a Calculate loop delays at point of transform application 2024-03-08 02:01:02 +03:00
Salman Ahmed
87b065b8c3 Fix incorrect start time calculations
`LoopStartTime` is now baked into each `IStoryboardCommand`.
2024-03-08 02:01:02 +03:00
Salman Ahmed
6c257e5159 Fix HasCommands property not set at all 2024-03-08 01:59:44 +03:00
Salman Ahmed
9b77d8c972 Fix group start/end time not calculating correctly 2024-03-08 01:59:28 +03:00
Salman Ahmed
585ab59768 Apply major refactor to the storyboard commands flow structrure 2024-03-08 01:10:09 +03:00
Dean Herbert
5b6703ec0d
Move optimisation to isolated method 2024-03-06 19:25:13 +08:00
Andrei Zavatski
07392a4d3e Further simplify transform application 2024-03-06 01:10:22 +03:00
Andrei Zavatski
1c8ede854d Remove blank lines 2024-03-06 00:17:56 +03:00
Andrei Zavatski
8b03acd27b Implement StoryboardElementWithDuration 2024-03-06 00:16:06 +03:00
Andrei Zavatski
f5d24e6804 Remove unused transform extensions 2024-03-03 21:54:37 +03:00
Andrei Zavatski
7193ec66a4 Make use of framework's transform loops 2024-03-03 21:47:03 +03:00
Andrei Zavatski
c05007804f Use more direct way to apply transforms 2024-03-03 20:50:28 +03:00
Andrei Zavatski
77b3055978 Improve sb sprite end time guessing 2024-03-01 22:30:44 +03:00
Salman Ahmed
5597b48882 Fix storyboard animations stripping path directory on skin lookup 2024-01-17 18:39:48 +03:00
Salman Ahmed
bac306879a Minor reword on documentation 2023-10-28 03:18:13 +03:00
Bartłomiej Dach
9ce2c1f49c
Exclude video events from being accounted for when calculating storyboard time bounds
Closes https://github.com/ppy/osu/issues/25263.

In some circumstances, stable allows skipping twice if a particularly
long storyboarded intro is being displayed:

    https://github.com/peppy/osu-stable-reference/blob/master/osu!/GameModes/Play/Player.cs#L1728-L1736

`AllowDoubleSkip` is calculated thus:

    3ea48705eb/osu!/GameModes/Play/Player.cs#L1761-L1770

and `leadInTime` is calculated thus:

    3ea48705eb/osu!/GameModes/Play/Player.cs#L1342-L1351

The key to watch out for here is `{first,last}EventTime`. `EventManager`
will calculate it on-the-fly as it adds storyboard elements:

    3ea48705eb/osu!/GameplayElements/Events/EventManager.cs#L253-L256

However, this pathway is only used for sprite, animation, sample,
and break events. Video and background events use the following pathway:

    https://github.com/peppy/osu-stable-reference/blob/master/osu!/GameplayElements/Events/EventManager.cs#L368

Note that this particular overload does not mutate either bound.
Which means that for the purposes of determining where a storyboard
starts and ends temporally, a video event's start time is essentially
ignored.

To reflect that, add a clause that excludes video events from
calculations of `{Earliest,Latest}EventTime`.
2023-10-27 22:24:17 +02:00
Dean Herbert
5341a335a6
Bypass Parent nullability checks for now 2023-10-17 17:48:45 +09:00
Bartłomiej Dach
e314913aeb
Handle null texture case 2023-09-27 11:18:38 +02:00
Dean Herbert
a7237e48aa Merge branch 'master' into fix-storyboard-skin-textures-lookup 2023-09-27 17:17:51 +09:00
Dean Herbert
3705c4c8d5 Avoid potentially incorrect size adjustment when texture doesn't change 2023-09-27 17:16:45 +09:00
Dean Herbert
990c54519b
Merge branch 'master' into limit-gameplay-sprite-dimensions 2023-09-26 16:40:32 +09:00
Dean Herbert
567bc8fcd3 Ensure DrawableStoryboardSprite's texture size propagates corectly on skin change 2023-09-26 14:13:51 +09:00
Dean Herbert
2ca1c684bb
Merge branch 'master' into fix-storyboard-skin-textures-lookup 2023-09-26 14:05:27 +09:00
Dean Herbert
b5e64d933c Apply same fix to DrawableStoryboardAnimation 2023-09-20 12:54:36 +09:00
Dean Herbert
50adb5f7a7 Remove incorrectly merge conflict resolved 2023-09-20 12:54:28 +09:00