Commit Graph

1883 Commits

Author SHA1 Message Date
Dan Balasescu 362a7b2c77
Remove unused members from GameplaySkinComponentLookup 2024-04-19 18:03:13 +09:00
Bartłomiej Dach 21201e616d
Merge pull request #27723 from 64ArthurAraujo/editor-fix-reverse-selection
Fix reverse selection not updating new combo location
2024-03-28 11:25:17 +01:00
Bartłomiej Dach 2f786ffc32
Simplify implementation 2024-03-28 10:12:27 +01:00
Arthur Araujo 01a72d5afa Fix combo not reversing properly depending on the order of selection 2024-03-26 12:10:40 -03:00
Bartłomiej Dach b74f8dba41
Merge branch 'master' into verify-abnormal-difficulty-settings 2024-03-26 11:13:16 +01:00
Bartłomiej Dach 1866b4b6b1
Refactor abstract check to reduce duplication 2024-03-26 11:13:03 +01:00
Arthur Araujo 10683de578 Use order of new combo flags instead of `StartTime` 2024-03-26 04:59:47 -03:00
Arthur Araujo 78037fa477 Handle new combo on `HandleReverse` 2024-03-25 04:19:14 -03:00
Arthur Araujo 6fa663c8ca Make check ruleset specific 2024-03-22 14:48:22 -03:00
Bartłomiej Dach 983385bafc
Merge pull request #27677 from smoogipoo/fix-catch-banana-fail
Fix catch banana shower judgement causing fail when at 0 HP
2024-03-21 11:23:51 +01:00
Dan Balasescu bf5640049a
Fix banana showers causing fails when hp is at 0 2024-03-20 17:31:33 +09:00
Dan Balasescu 0beaa8e8c5
Merge branch 'master' into tcm-resume 2024-03-14 12:22:46 +09:00
Dan Balasescu d8003ab8e8
Merge pull request #27489 from bdach/fix-catch-pp-mismatch
Fix catch pp calculator not matching live with respect to miss handling
2024-03-06 19:39:20 +09:00
Bartłomiej Dach f91423a775
Merge pull request #27456 from frenzibyte/catch-hr-issues
Fix catch fruit position getting randomised when last fruit has zero position
2024-03-05 14:23:27 +01:00
Bartłomiej Dach b896d97a4f
Fix catch pp calculator not matching live with respect to miss handling 2024-03-04 11:53:59 +01:00
Dan Balasescu 6635d9be04
Add countdown display 2024-03-04 16:50:24 +09:00
Dan Balasescu 5bd037fe8f
Merge branch 'master' into catch-fail-on-banana 2024-03-04 13:13:26 +09:00
Salman Ahmed 285adcb00e Fix catch hit object position getting randomised when last object has pos=0 2024-03-02 03:18:59 +03:00
Salman Ahmed 02bcd29303
Merge branch 'master' into catch-playfield 2024-02-15 08:08:01 +03:00
Salman Ahmed 0c25a9a460 Add extra bottom space for catcher to not look cut off on tall resolutions 2024-02-15 07:31:01 +03:00
Bartłomiej Dach 2c0a5b7ef5
Fix missing tiny droplet not triggering fail with perfect on
Stable does this:

    46cd3a10af/osu!/GameplayElements/HitObjectManagerFruits.cs#L98-L102

I'd rather not say what I think about it doing that, since it's likely
to be unpublishable, but to approximate that, just make it so that
only the "default fail condition" is beholden to the weird ebbs
and flows of what the ruleset wants. This appears to fix the problem
case and I'm hoping it doesn't break something else but I'm like 50/50
on it happening anyway at this point. Just gotta add tests add nauseam.
2024-02-14 14:21:48 +01:00
Bartłomiej Dach f53bce8ff7
Fix catch health processor allowing fail on tiny droplet
Closes https://github.com/ppy/osu/issues/27159.

In today's episode of "just stable things"...
2024-02-14 09:02:33 +01:00
Salman Ahmed 02de9122d4 Remove behaviour of flipping catcher plate on direction change 2024-02-14 07:17:05 +03:00
Salman Ahmed 9b17020707 Adjust "Floating Fruits" in line with layout changes 2024-02-14 01:34:55 +03:00
Salman Ahmed 62f5251b6e Rewrite osu!catch playfield layout containers and apply masking around vertical boundaries 2024-02-14 01:34:55 +03:00
Dan Balasescu dcb195f3c8
Add delayed resume for taiko/catch/mania 2024-02-08 02:16:08 +09:00
Dan Balasescu c18cd65081
Merge pull request #26694 from chandler14362/hit-object-result-allocations
Avoid closure allocations when applying hit object results
2024-02-06 17:49:26 +09:00
Bartłomiej Dach fb80d76b4a
Apply further changes to remove remaining weirdness 2024-02-05 13:37:38 +01:00
Dan Balasescu 6e4d52863c
Upgrade to .NET 8 SDK 2024-02-02 21:28:51 +09:00
Chandler Stowell 93bd3ce5ae update `DrawableHitCircle.ApplyResult` to pass `this` to its callback 2024-01-25 11:25:41 -05:00
Chandler Stowell d2775680e6 use stack to pass action state when applying hit results
this removes closure allocations
2024-01-24 13:13:45 -05:00
Bartłomiej Dach cb8ec48717
Make `RankFromScore()`'s dictionary param readonly
Just to make sure nobody tries any "funny" business.
2024-01-22 19:56:30 +01:00
Dean Herbert c8521b49cd
Change S rank to require no miss 2024-01-22 21:43:32 +09:00
Bartłomiej Dach 7c9adc7ad3
Fix incorrect score conversion on selected beatmaps due to incorrect `difficultyPeppyStars` rounding
Fixes issue that occurs on *about* 246 beatmaps and was first described
by me on discord:

    https://discord.com/channels/188630481301012481/188630652340404224/1154367700378865715

and then rediscovered again during work on
https://github.com/ppy/osu/pull/26405:

    https://gist.github.com/bdach/414d5289f65b0399fa8f9732245a4f7c#venenog-on-ultmate-end-by-blacky-overdose-631

It so happens that in stable, due to .NET Framework internals, float
math would be performed using x87 registers and opcodes.
.NET (Core) however uses SSE instructions on 32- and 64-bit words.
x87 registers are _80 bits_ wide. Which is notably wider than _both_
float and double. Therefore, on a significant number of beatmaps,
the rounding would not produce correct values due to insufficient
precision.

See following gist for corroboration of the above:

    https://gist.github.com/bdach/dcde58d5a3607b0408faa3aa2b67bf10

Thus, to crudely - but, seemingly accurately, after checking across
all ranked maps - emulate this, use `decimal`, which is slow, but has
bigger precision than `double`. The single known exception beatmap
in whose case this results in an incorrect result is

    https://osu.ppy.sh/beatmapsets/1156087#osu/2625853

which is considered an "acceptable casualty" of sorts.

Doing this requires some fooling of the compiler / runtime (see second
inline comment in new method). To corroborate that this is required,
you can try the following code snippet:

    Console.WriteLine(string.Join(' ', BitConverter.GetBytes(1.3f).Select(x => x.ToString("X2"))));
    Console.WriteLine(string.Join(' ', BitConverter.GetBytes(1.3).Select(x => x.ToString("X2"))));
    Console.WriteLine();

    decimal d1 = (decimal)1.3f;
    decimal d2 = (decimal)1.3;
    decimal d3 = (decimal)(double)1.3f;

    Console.WriteLine(string.Join(' ', decimal.GetBits(d1).SelectMany(BitConverter.GetBytes).Select(x => x.ToString("X2"))));
    Console.WriteLine(string.Join(' ', decimal.GetBits(d2).SelectMany(BitConverter.GetBytes).Select(x => x.ToString("X2"))));
    Console.WriteLine(string.Join(' ', decimal.GetBits(d3).SelectMany(BitConverter.GetBytes).Select(x => x.ToString("X2"))));

which will print

    66 66 A6 3F
    CD CC CC CC CC CC F4 3F

    0D 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
    0D 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
    8C 5D 89 FB 3B 76 00 00 00 00 00 00 00 00 0E 00

Note that despite `d1` being converted from a less-precise floating-
-point value than `d2`, it still is represented 100% accurately as
a decimal number.

After applying this change, recomputation of legacy scoring attributes
for *all* rulesets will be required.
2024-01-10 19:30:18 +01:00
Bartłomiej Dach 00a4c055b3
Merge branch 'master' into catch-scoring 2024-01-09 15:49:37 +01:00
Bartłomiej Dach 8295ad1feb
Change catch scoring to match score V2 2024-01-05 20:46:11 +01:00
Bartłomiej Dach 72e502e615
Fix backwards z-ordering of fruits in juice streams and banana showers
Closes https://github.com/ppy/osu/issues/25827.

The logic cannot be easily abstracted out (because
`CompareReverseChildID()` is protected and non-static on
`CompositeDrawable`), so a local copy was applied instead.

No testing as any testing would have been purely visual anyways.
2024-01-02 11:55:59 +01:00
Bartłomiej Dach 2e8b49b93a
Fix catch drawable objects not being clamped to playfield bounds 2023-12-27 10:55:29 +01:00
Dan Balasescu 6b4b2a57fc
Expose only as one method 2023-12-21 14:58:23 +09:00
Dan Balasescu 4e3b994142
Relocate HitResult numeric score to ScoreProcessor 2023-12-21 14:52:31 +09:00
Dean Herbert 831c273b45
Merge pull request #25887 from smoogipoo/restore-taiko-accuracy
Restore taiko accuracy to ScoreV2 values
2023-12-20 17:29:40 +09:00
OliBomby ec578e1d9f fix near-zero length sliders n stuff being placeable 2023-12-19 21:20:21 +01:00
Dan Balasescu c1b55c7fac
Add ScoreProcessor methods to override numeric result 2023-12-19 13:50:31 +09:00
Dan Balasescu 30116512ca
Populate MaxCombo scoring attrib for non-osu rulesets 2023-12-18 12:01:51 +09:00
Bartłomiej Dach 605269f65f
Extract preempt durations to shared constants 2023-12-14 20:41:12 +01:00
Bartłomiej Dach fd1c72bf74
Use `IBeatmapDifficultyInfo.(Inverse)DifficultyRange()` instead of local reimplementations
Also adds explicit references to places from where the magic constants
were lifted.
2023-12-14 20:41:12 +01:00
Bartłomiej Dach 15ce45ac71
Merge pull request #25726 from smoogipoo/fix-catch-clamping
Fix catch applying positional clamping too early
2023-12-13 18:47:05 +01:00
Bartłomiej Dach a6bf4cdb98
Remove dead clamping code
`EffectiveX` is already defined as clamped
to `[0, CatchPlayfield.WIDTH]`.
2023-12-13 13:22:12 +01:00
Dean Herbert 9a982a9564
Tidy up `GetRateAdjustedDisplayDifficulty` implemetations 2023-12-13 17:13:21 +09:00
Dean Herbert 0259ab761b
Merge branch 'master' into arod_rate_adjust 2023-12-13 16:35:18 +09:00