Dean Herbert
0ccdfeea57
Fix code quality issues
2021-04-24 14:35:49 +09:00
Dean Herbert
d4ffd2ef4b
Merge branch 'master' into reversed-fruits
2021-04-23 15:08:18 +09:00
Dean Herbert
bc0e1d8c37
Remove dead newline
2021-04-23 15:06:39 +09:00
smoogipoo
d4d78f7434
Merge branch 'master' into legacy-scores-classic-mod
2021-04-22 18:44:20 +09:00
Dean Herbert
dc2bc462b8
Expose internal catcher width calculation methods
2021-04-22 17:27:23 +09:00
Dean Herbert
84a7138223
Update tests to better support stack regeneration cases
2021-04-22 17:13:19 +09:00
Dean Herbert
3e1002fbf3
Improve osu!catch caught fruit placement algorithm
2021-04-22 17:06:28 +09:00
Salman Ahmed
e3398d8f1f
Implement "classic" mod for all other legacy rulesets
...
Currently empty, automatically handled in game to not be selectable (see `Mod.HasImplementation`)
2021-04-21 09:14:33 +03:00
Dean Herbert
ddf1b560f3
Remove catcher fade during hyperdash
...
Closes https://github.com/ppy/osu/issues/12472 .
2021-04-20 18:18:51 +09:00
Fabian
eec77b0527
replace icon
2021-04-17 23:55:39 +02:00
Fabian
5d274dbce8
replace IApplicableToPlayer with IApplicableToDrawableRuleset
2021-04-17 16:38:28 +02:00
Fabian
cf3aaff7bd
Add floating fruits mod
2021-04-17 16:01:23 +02:00
ekrctb
a965e8a75d
Remove AutoGenerator workaround of now-fixed issue
2021-04-16 14:13:41 +09:00
ekrctb
91c7d8d26c
Introduce StartFrame
and EndFrame
to simplify the replay interpolation code
2021-04-16 14:13:41 +09:00
ekrctb
84bc81a6de
Make FramedReplayInputHandler.CurrentTime non-null
2021-04-16 14:13:41 +09:00
ekrctb
6d0dc62502
Make sure latest catcher position is used for catching logic
...
A replay frame processed in CatchInputManager is applied to catcher in `CatcherArea`.
The catcher position is then used for the catching logic for each hit object under `HitObjectContainer`.
Thus, if `HitObjectContainer` came before `CatcherArea`, the replay input is delayed one frame.
That was one reason why the catch autoplay misses hit objects (especially when fast-forwarded).
2021-04-09 16:04:45 +09:00
Samuel Cattini-Schultz
85d2b1232a
Refactor to abstract out strain logic into StrainSkill class
...
While it is the case for the existing official Skills, Skill implementations shouldn't be required to conform to a strain based approach.
There are other valid approaches to calculating skill difficulty that can be supported by abstracting the strain logic into its own StrainSkill class.
2021-04-03 20:52:39 +11:00
Samuel Cattini-Schultz
5b2dcea8a8
Refactor to encapsulate strain logic into Skill class
...
As strains are an implementation detail of the current Skill calculations, it makes sense that strain related logic should be encapsulated within the Skill class.
2021-04-03 20:47:43 +11:00
Dan Balasescu
b24c695146
Merge branch 'master' into hide-caught-fruit-in-hidden
2021-03-30 15:42:00 +09:00
Dean Herbert
89bea2868a
Move bool one level down
2021-03-30 14:33:55 +09:00
Dean Herbert
013ddc734c
Fix osu!catch fruit showing on plate when hidden mod is enabled
...
Closes https://github.com/ppy/osu/issues/12065 .
2021-03-25 17:04:37 +09:00
Salman Ahmed
43c1e1d217
Update existing usages
...
Resolve post-conflict issues
2021-03-13 06:09:07 +03:00
Dan Balasescu
5b6018295d
Merge branch 'master' into diffcalc/skill-mods
2021-03-04 13:06:26 +09:00
smoogipoo
dff1d80f39
Update HasFlag usages to HasFlagFast
2021-02-25 15:38:56 +09:00
Samuel Cattini-Schultz
323e4ac26b
Refactor catch Movement skill to not require explicit clockrate usage
...
In catch, rate adjustment mods do not only affect the timings of hitobjects, but also the speed of the player's catcher.
This catcher speed change has an impact on difficulty which is currently accounted for by using the clockrate directly in calculations.
Semantically this is a bad idea because clockrate adjustments are supposed to be fully accounted for in DifficultyHitObjects, but passing clockrate here for the purpose of being used as catcher speed doesn't make much sense, especially since it is copied in every DifficultyHitObject despite being the same value.
It makes more sense to account for this catch specific impact by handling rate adjustment mods in a catch specific way, or more specifically in a Movement skill specific way.
2021-02-21 18:24:30 +11:00
Samuel Cattini-Schultz
66643a97b0
Add a list of mods to Skill class
...
Although this isn't necessary for existing official rulesets and calculators, custom calculators can have use cases for accessing mods in difficulty calculation.
For example, accounting for the effects of visual mods.
2021-02-20 20:37:44 +11:00
Dean Herbert
aaa0362b12
Merge branch 'master' into autoplay-rate-independence
2021-02-11 17:39:45 +09:00
smoogipoo
be9b07a4cf
Merge branch 'master' into difficulty-adjustment-extension
2021-02-10 20:42:08 +09:00
Bartłomiej Dach
68c20a2a37
Allow autoplay score generation to access mod list
2021-02-07 18:35:34 +01:00
Joehu
9ef130cdcc
Fix codefactor style issues
2021-02-04 13:28:35 -08:00
Corentin PALLARD
d168de0ae3
Formatting
2021-01-29 03:03:23 +01:00
Corentin PALLARD
da4c207a73
Fix the ctb auto mod speedup in some occasions
2021-01-29 02:53:26 +01:00
smoogipoo
1b166d809e
Adjust package titles
2021-01-18 11:08:03 +09:00
smoogipoo
ec00aaef90
Add nuget deploys for all rulesets
2021-01-18 10:53:31 +09:00
Bartłomiej Dach
303cc62ee7
Transfer flags indicating if settings were changed
2021-01-06 22:46:46 +01:00
Dean Herbert
1793385e96
Pass a score to the replay recorder to allow reading more general scoring data
2020-12-14 16:52:14 +09:00
Dean Herbert
b81dbfc192
Move shared implementation to a named function
2020-12-14 13:56:46 +09:00
ekrctb
5b5e883904
Remove EffectiveXBindable (setting Value was not handled)
...
And use orthogonal `OriginalXBindable` and `XOffsetBindable`.
2020-12-14 13:39:07 +09:00
ekrctb
0ad256a762
Fix comment
2020-12-14 13:18:32 +09:00
ekrctb
d96399ea42
Revert "Remove X setter from CatchHitObject"
...
This reverts commit 7cbbd74d
2020-12-14 13:18:14 +09:00
ekrctb
7cbbd74df2
Remove X setter from CatchHitObject
2020-12-14 11:38:07 +09:00
ekrctb
f621d977fc
Add some more doc comment
2020-12-14 11:32:34 +09:00
ekrctb
36529bdd1b
Use OriginalX for CatchHitObject.X instead of EffectiveX
...
And explicitly implement IHasXPosition interface to prevent use of the X property.
It should be preferred for beatmap conversion purpose.
2020-12-14 11:26:05 +09:00
ekrctb
089f3bebf5
Add doc comments to catch hit object X properties
2020-12-14 11:15:49 +09:00
ekrctb
cd2db59900
XBindable -> EffectiveXBindable in catch DHO
2020-12-14 11:05:26 +09:00
ekrctb
96f3e0dad8
Replace CatchHitObject.X usage to EffectiveX and OriginalX
2020-12-14 11:03:14 +09:00
ekrctb
c1f3f1c231
Obsolete X
getter
2020-12-14 11:03:10 +09:00
ekrctb
8da502da44
Separate asymmetric CatchHitObject.X to EffectiveX and OriginalX
2020-12-14 11:03:03 +09:00
Dean Herbert
c0d20d8ce4
Add some spacing to interface class
2020-12-11 16:43:00 +09:00
ekrctb
2634c6b8d9
Combine DisplayRadius and Scale to DisplaySize
2020-12-10 20:43:01 +09:00
ekrctb
e097b6e61c
Add ScalingContainer back
...
Don't want to set DHO.Scale or DHO.Rotation because because DHO may be transformed by mods.
DHO.Size is also assigned for drawable visualizer
2020-12-10 19:42:01 +09:00
smoogipoo
ac91f0e270
Add extended limits to difficulty adjustment mod
2020-12-10 00:37:19 +09:00
ekrctb
a8e2f35b62
Remove unneeded check of caught object removal
...
The logic was public but now it is private
so the condition is ensured by the caller
2020-12-09 10:50:35 +09:00
ekrctb
775c4bad97
Remove unneeded lifetime assignment
2020-12-09 10:47:04 +09:00
ekrctb
da2f3d4473
Move classes to separate files
2020-12-09 10:40:42 +09:00
ekrctb
b52e279702
Reword exception message
2020-12-09 10:38:11 +09:00
ekrctb
86445e7c23
Remove unnecessary copy
2020-12-09 10:36:54 +09:00
ekrctb
c8b0934573
Rename caughtFruitContainer -> caughtObjectContainer
2020-12-09 10:35:36 +09:00
ekrctb
ccca7e0b25
more specific type droppedObjectContainer
2020-12-09 10:35:01 +09:00
ekrctb
df9de7a8dd
Remove null check that is not required anymore
2020-12-09 10:28:42 +09:00
ekrctb
b80204642e
Revert rename error
2020-12-09 10:25:35 +09:00
ekrctb
1212ffd24f
Rename to CopyStateFrom, and add comment
2020-12-08 23:35:24 +09:00
ekrctb
5ca98b0033
Add doc comments a bit
2020-12-08 23:11:22 +09:00
ekrctb
1f36bbecd1
Fix dropped objects not removed on revert result
2020-12-08 23:07:30 +09:00
ekrctb
749d5380ca
Pool caught objects and dropped objects
2020-12-08 22:38:10 +09:00
ekrctb
a32dac00dd
Introduce IHasCatchObjectState implemented by DHO and CaughtObject
2020-12-08 21:29:26 +09:00
ekrctb
c301223d8c
Make object on the catcher plate separate CaughtObject class
2020-12-08 21:11:40 +09:00
ekrctb
94a59ac3b2
Make catch hit lighting logic not dependent on caught object
2020-12-08 20:41:26 +09:00
ekrctb
004c705aa9
Remove ScaleContainer and flatten the Drawable tree of catch DHO
2020-12-08 20:37:08 +09:00
ekrctb
56721a6fa9
Compute object position in stack via a pure function
2020-12-08 20:36:59 +09:00
Dan Balasescu
0739f09930
Merge pull request #11110 from ekrctb/fruit-piece-in-place
...
Implement in-place update of catch DrawableHitObject
2020-12-08 18:36:20 +09:00
Dan Balasescu
c3241f163d
Merge pull request #11126 from ekrctb/fix-catcher-trail-sprite-pooled
...
Clear all transforms of catcher trail sprite before returned to pool
2020-12-08 17:59:23 +09:00
Dan Balasescu
1757b9c3e7
Merge branch 'master' into fruit-piece-in-place
2020-12-08 17:42:34 +09:00
ekrctb
22a5df6309
Clear all transforms of catcher trail sprite before returned to pool
2020-12-08 17:31:00 +09:00
ekrctb
4d5c242d35
Use virtual property instead of a field for optional pieces
2020-12-08 17:15:40 +09:00
ekrctb
603cecb2eb
Make CatchHitObjectPiece abstract class
2020-12-08 17:02:57 +09:00
ekrctb
17d48c82f6
Use switch statement instead of an array
2020-12-08 16:59:06 +09:00
ekrctb
02571ec7ae
Remove hit explosion on revert result
2020-12-08 15:43:17 +09:00
ekrctb
1a66d8f2bc
Remove caught objects on revert result
2020-12-08 15:24:39 +09:00
ekrctb
100b365c98
Restore hyper dash state on revert judgement result
2020-12-08 15:21:47 +09:00
ekrctb
cb76a2d7b5
Restore catcher state on revert judgement result
2020-12-08 15:03:03 +09:00
ekrctb
0213f77b4b
Move catcher state changing logic to OnNewResult method
2020-12-08 14:28:30 +09:00
ekrctb
4da6717d0e
Rename things in PulpFormation
2020-12-08 10:33:18 +09:00
ekrctb
3cbdaf5960
Make resolved properties protected
2020-12-08 10:30:23 +09:00
ekrctb
b2e5658d23
Merge branch 'master' into fruit-piece-in-place
2020-12-07 18:57:42 +09:00
Dan Balasescu
fb599e0746
Merge pull request #11114 from ekrctb/pool-catcher-trail
...
Pool catcher trail sprite
2020-12-07 18:48:08 +09:00
ekrctb
12c6b3c1fb
Pool catcher trail sprite
2020-12-07 18:12:55 +09:00
ekrctb
c1d39b6401
Don't inherit Fruit from Banana
2020-12-07 14:10:17 +09:00
ekrctb
7f1ad1040d
Don't inherit DrawableFruit from DrawableBanana
...
- A banana cannot be hyper
2020-12-07 14:08:50 +09:00
ekrctb
c0f39514b9
Fix legacy droplet scale
2020-12-07 14:00:22 +09:00
ekrctb
b8f1c499a4
Allow PulpFormation to update formation dynamically
...
Pulps are lazily allocated but never deallocated for a DrawableFruit
2020-12-07 13:56:22 +09:00
ekrctb
0d73bf8488
Refactor catch default piece to allow reuse
...
But Fruit in-place update is still incomplete,
as child drawables are recreated when reused.
2020-12-07 13:14:00 +09:00
ekrctb
d51d2c5331
Don't recreate pieces when catch DHO is reused
2020-12-07 12:59:03 +09:00
ekrctb
87189452d1
Refactor legacy skin piece to allow texture update
2020-12-07 12:57:24 +09:00
ekrctb
d18397acad
Adjust namespace
2020-12-07 12:35:24 +09:00
ekrctb
b4b9312e0f
Move piece files of Catch ruleset
2020-12-07 12:34:38 +09:00
Dean Herbert
d3a17b65d5
Move public methods upwards
2020-12-04 14:36:40 +09:00
Dean Herbert
8988023407
Tidy up code formatting and remove unnecessarily publicly exposed methods
2020-12-04 14:35:56 +09:00
Dean Herbert
aa24890aff
Merge branch 'master' into caught-object-refactor
2020-12-04 14:12:33 +09:00
Dean Herbert
0134ac94a7
Merge pull request #11055 from ekrctb/catch-stateless-rng
2020-12-04 13:08:30 +09:00