1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-14 10:17:38 +08:00
Commit Graph

4353 Commits

Author SHA1 Message Date
Dean Herbert
4e0f899159 Rename value changed variable 2022-05-04 18:13:30 +09:00
Salman Ahmed
f5d4f02200 Use ToUpper for key binding text 2022-05-04 11:59:29 +03:00
Salman Ahmed
0b8fd2e39f Improve distance spacing toast inline with key binding changes 2022-05-04 11:43:19 +03:00
Dean Herbert
b325f0ee0b Combine editor toolbox container implementation and fix input blocking
Until now, toolbox scroll areas would block input from arriving behind
them, even when no visible element was clicked.

In addition, clicking on a button inside a toolbox would still send a
`MouseDown` event to things behind it. Specifically, the editor's
`HitObjectComposer` would receive these events and also place objects
when the user does not expect them to be placed.

This fixes another regression that occurred due to `ScrollContainer`s no
longer blocking input theirselves.
2022-05-04 17:41:30 +09:00
Salman Ahmed
3d2072498e Merge branch 'master' into distance-spacing-osd 2022-05-04 11:41:12 +03:00
Dean Herbert
a66743266f Remove unused ScrollingToolboxGroup class 2022-05-04 17:20:58 +09:00
Salman Ahmed
6f52a0b5eb Merge branch 'master' into distance-spacing-osd 2022-05-04 11:10:18 +03:00
Dean Herbert
40f1ceca0a
Merge branch 'master' into distance-spacing-keybinding 2022-05-04 16:34:01 +09:00
Salman Ahmed
504ca5be31 Fix scrolling no longer adjusting distance spacing by amount 2022-05-04 09:52:33 +03:00
Salman Ahmed
813d6fed48 Split activation keybind to separate increase/decrease keybinds 2022-05-04 09:00:54 +03:00
Salman Ahmed
0dd2e1652c Mark OnScreenDisplay dependency as nullable 2022-05-03 11:15:28 +03:00
Salman Ahmed
b8287f3687 Display toast notification on editor distance spacing change 2022-05-03 10:30:32 +03:00
Salman Ahmed
521ec1a225 Add keybind for distance grid spacing activation 2022-05-03 10:15:24 +03:00
Dan Balasescu
637f817696 Ignore zero-sections on a per-case basis 2022-05-03 16:06:20 +09:00
Dan Balasescu
a555c47212 Reduce sorting complexity in worst-case of diffcalc 2022-05-03 15:02:57 +09:00
Dean Herbert
faeefc5e18
Merge pull request #16576 from frenzibyte/osu-distance-spacing
Add "distance spacing" support in editor for osu! ruleset
2022-05-03 12:15:18 +09:00
Salman Ahmed
fef94d49f4 Revert "Convert data type of DistanceSpacing to float"
This reverts commit 7aaa88cac2.
2022-04-29 08:02:07 +03:00
Salman Ahmed
abb88b0907 Move distance spacing application to DistanceSnapGrid 2022-04-28 10:54:38 +03:00
Salman Ahmed
7aaa88cac2 Convert data type of DistanceSpacing to float 2022-04-28 10:24:36 +03:00
Salman Ahmed
2e8372fe90 Minor cleanup
Just from reading diff.
2022-04-28 07:14:43 +03:00
Salman Ahmed
bfc6bfc91b Let CatchHitObjectComposer inherit from DistancedHitObjectComposer and hide control 2022-04-28 06:44:50 +03:00
Salman Ahmed
835898dd30 Introduce DistancedHitObjectComposer and supersede OsuToolboxComposite 2022-04-28 06:44:50 +03:00
Salman Ahmed
59cf3ff50f Move distancing methods from IPositionSnapProvider to IDistanceSnapProvider 2022-04-28 05:48:45 +03:00
Salman Ahmed
cccc9d7d39 Rename method to better reflect what it's doing 2022-04-27 00:03:48 +03:00
Salman Ahmed
31f64b1381 Fix HealthProcessor fail conditions not handling multiple invocations 2022-04-26 23:27:03 +03:00
Salman Ahmed
7d32490198 Change score accuracy grading logic to be inclusive 2022-04-26 04:55:27 +03:00
Salman Ahmed
8ed39009fd Encapsulate distance spacing control handling to a "distance toolbox composite"
Encapsulated in a way which can allow further extensibility for the
right-side area of toolboxes.
2022-04-24 08:33:03 +03:00
Salman Ahmed
70a93c0e7e Move DistanceSpacingMultiplier bindable to its own IDistanceSnapProvider interface 2022-04-24 08:33:00 +03:00
Salman Ahmed
4f8f27a58b Merge branch 'master' into osu-distance-spacing 2022-04-24 05:23:30 +03:00
Dean Herbert
9c68b3edc5 Merge branch 'master' into fix-spectator-seeks 2022-04-13 12:33:41 +09:00
Bartłomiej Dach
6630b38c08
Make all ModRateAdjust implementations incompatible with each other 2022-04-07 22:38:46 +02:00
Dean Herbert
a3695c7e97
Merge branch 'master' into fix-spectator-seeks 2022-04-06 12:58:43 +09:00
Dan Balasescu
40b6f3ff0a Rename method to CalculateAllLegacyCombinations() 2022-03-31 15:09:06 +09:00
Dan Balasescu
32e55e7d78 Merge branch 'master' into osu-diff-calc-max-combo 2022-03-31 15:08:08 +09:00
Dean Herbert
e0d434b89f Remove unused using statement 2022-03-31 11:34:32 +09:00
Dean Herbert
0cac935939 Shorten class name of ModCreatedReplayUser 2022-03-31 11:34:23 +09:00
Dean Herbert
2c1ccc7d36
Update obsolete message to match targeted developers' use case
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2022-03-31 11:33:26 +09:00
Dean Herbert
234bec45cc Remove unnecessary logging 2022-03-31 11:32:00 +09:00
Salman Ahmed
6874cdf0c8 Remove unnecessary public prefix in interface method 2022-03-31 01:50:46 +03:00
Bartłomiej Dach
83bae81095
Fill out ICreateReplayData xmldocs 2022-03-30 22:04:54 +02:00
Bartłomiej Dach
9621a7f9cb
Merge branch 'master' into fix-autoplay-mod-user-id 2022-03-30 21:41:45 +02:00
Salman Ahmed
8d4356f23b Mark "autoplay" and "cinema" mods as mutually exclusive 2022-03-29 17:26:02 +03:00
Salman Ahmed
9a09c97457 Fix "Barrel Roll" tooltip not limiting decimal places for spin speed 2022-03-29 16:11:44 +03:00
Dean Herbert
ea9495eb74 Update all existing calls to extension method with correct fallback handling 2022-03-29 16:51:30 +09:00
Dean Herbert
7d716adf39 Create new ICreateReplayData interface and obsolete ICreateReplay 2022-03-29 16:51:30 +09:00
Dean Herbert
3fc8c23fe4 Remove unnecessary SetReplayScore call in ModCinema 2022-03-29 16:51:30 +09:00
Dean Herbert
327477d050 Remove unnecessary SetReplayScore call in ModCinema 2022-03-29 16:50:05 +09:00
Dean Herbert
6f529cf7a4 Merge branch 'master' into fix-spectator-seeks 2022-03-24 14:24:20 +09:00
Salman Ahmed
6cd67928ab Simplify documentation of ModUsage 2022-03-23 15:48:52 +03:00
Salman Ahmed
b218046fa2 Remove redundant line from mod usage 2022-03-23 15:38:48 +03:00
Dean Herbert
c079a9cd32 Add comment regarding equality check importance in LegacyHitSampleInfo 2022-03-23 20:18:44 +09:00
Dean Herbert
997c091a8d Revert "Remove IsLayered from LegacyHitSampleInfo comparison"
This reverts commit 4523393208.
2022-03-23 20:15:17 +09:00
Dean Herbert
2ea9e5245c Revert "Remove IsLayered from GetHasCode implementation"
This reverts commit 16ee6b5fc7.
2022-03-23 20:15:13 +09:00
Dan Balasescu
36772ec652
Merge pull request #17356 from apollo-dw/strict-tracking
Implement "Strict Tracking" mod in osu!
2022-03-22 07:32:36 +09:00
Salman Ahmed
5f878ed82b Delegate IsPlayable to the obsoleted UserPlayable by default
Handles consumers who still haven't updated to use `IsPlayable` yet.
2022-03-20 16:07:09 +03:00
Salman Ahmed
add9f3ec91 Rename multiplayer mod usages to make more sense 2022-03-20 13:12:24 +03:00
Salman Ahmed
820a672940 Reword xmldoc to make more sense 2022-03-20 06:37:08 +03:00
Salman Ahmed
70e943fbcc ModUsage.Solo -> ModUsage.User 2022-03-20 06:36:51 +03:00
apollo-dw
149cfd338d Use new mod-related object types for Strict Tracking 2022-03-19 18:29:44 +00:00
Salman Ahmed
8078a8c1f8 Simplify IncreasesCombo/BreaksCombo helper method implementation 2022-03-18 17:18:42 +03:00
Salman Ahmed
5ec2d86c09 Update ScoreProcessor to use new defined helper methods 2022-03-18 15:22:53 +03:00
Salman Ahmed
fc576b1369 Separate increase/break combo helper methods from AffectsCombo 2022-03-18 15:22:01 +03:00
Dean Herbert
0988c2b0fa Move DrawableRuleset binding to LoadComplete to avoid exceptions on InputManager access 2022-03-18 15:28:48 +09:00
Salman Ahmed
f2248ecc08 Update usages to use IsPlayable instead 2022-03-18 02:11:18 +03:00
Salman Ahmed
51e5dd7d0e Introduce IsPlayable(...) and obsolete UserPlayable 2022-03-18 02:08:30 +03:00
Salman Ahmed
d90f21e140
Reword mod documentation
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-03-18 00:13:40 +03:00
Salman Ahmed
b3ac544d65 Revert "Consider UnknownMod to be "playable in multiplayer""
This reverts commit 07e9f3780a.
2022-03-17 06:31:51 +03:00
Salman Ahmed
07e9f3780a Consider UnknownMod to be "playable in multiplayer" 2022-03-17 05:15:48 +03:00
Salman Ahmed
187059a37f Replace hardcoded overrides with the newly introduced Mod properties 2022-03-17 03:51:27 +03:00
Salman Ahmed
d90a334853 Introduce multiplayer playability and free mod validity in Mod 2022-03-17 03:48:56 +03:00
Dan Balasescu
d80830b415
Merge pull request #17226 from peppy/skin-component-settings
Allow skin components to have settings
2022-03-16 17:12:11 +09:00
Dean Herbert
1814a325d8 Move GetSettingUnderlyingValue to a SettingSource extension method 2022-03-15 14:54:00 +09:00
Dean Herbert
6fb06d69cc
Merge branch 'master' into pp-counter-alloc-reduction 2022-03-15 13:31:57 +09:00
Dean Herbert
deb4aeb4b2
Merge pull request #17242 from smoogipoo/performance-calculator-cleanup
Restructure PerformanceCalculator to not require ScoreInfo argument
2022-03-15 13:31:34 +09:00
Dan Balasescu
3a6d254d1f Add safeguards around incorrect ruleset sources 2022-03-15 09:20:32 +09:00
Dan Balasescu
e79bed8fbe Merge branch 'master' into skin-component-settings 2022-03-14 18:54:27 +09:00
Dean Herbert
16ee6b5fc7 Remove IsLayered from GetHasCode implementation 2022-03-14 18:12:04 +09:00
Dean Herbert
39d95aa8cf Add automatic preloading of sample pools at a Playfield level 2022-03-14 17:19:48 +09:00
Dean Herbert
4523393208 Remove IsLayered from LegacyHitSampleInfo comparison
The equality of samples is generally used to compare the sample
equality, not its full properties. For instance, we don't compare
`Volume` in the base implementation.

Having `IsLayered` here breaks actual usages of equality, ie. for
pooling purposes.
2022-03-14 17:19:48 +09:00
Dean Herbert
8676a2587c Add the ability for HitObjects to specify auxiliary samples 2022-03-14 17:19:48 +09:00
Dan Balasescu
028750936c Apply review suggestions 2022-03-14 17:10:37 +09:00
Dan Balasescu
3fff7f4b7e Require ScoreProcessor to receive ruleset 2022-03-14 15:51:10 +09:00
Dan Balasescu
9cc7f70872 Nullable annotate classes 2022-03-14 15:38:00 +09:00
Dan Balasescu
4a3e3aba65 Restructure PerformanceCalculator to not require ScoreInfo argument 2022-03-14 14:25:28 +09:00
Dean Herbert
8d1ee28e67 Add settings modification UI to skin editor 2022-03-13 17:03:25 +09:00
Dean Herbert
db5c2c15dc
Merge pull request #17164 from smoogipoo/scoreprocessor-rework
Rework ScoreProcessor score calculation methods to fix various issues
2022-03-10 16:48:58 +09:00
Dan Balasescu
13a4058efd
Merge pull request #17191 from peppy/fix-mod-conversion-exceptions
Change `ToMod` to return an `UnknownMod` rather than throw if a mod isn't available
2022-03-10 16:20:50 +09:00
Dan Balasescu
cf91353009 Merge branch 'master' into scoreprocessor-rework 2022-03-10 16:14:28 +09:00
Dean Herbert
eaef27595c Also mark UnknownMod as not user-playable 2022-03-10 15:33:50 +09:00
Dan Balasescu
c36badab4b Add per-ruleset score multipliers for classic scoring 2022-03-10 10:26:09 +09:00
Dean Herbert
94ff6a338f
Merge branch 'master' into scoreprocessor-rework 2022-03-09 23:04:18 +09:00
Dean Herbert
02f44d7061 Merge branch 'master' into fix-mod-conversion-exceptions 2022-03-09 18:07:42 +09:00
Dean Herbert
0267aed846 Change ToMod to return an UnknownMod rather than throw if a mod isn't available
As seen by this kind of crash, having the `.ToMod` method throw can be
very problematic and also hidden (as it is used inside of models in
places where exceptions are not expected to occur).

Given there are tens of usages of this method, returning a placeholder
mod seems like a better idea than outright throwing.

```
 An unhandled has occurred.
 System.InvalidOperationException:
There is no mod in the ruleset (osu) matching the acronym AS.
 at osu.Game.Online.API.APIMod.ToMod(Ruleset ruleset) in /Users/dean/Projects/osu/osu.Game/Online/API/APIMod.cs:line 54
 at osu.Game.Scoring.ScoreInfo.<get_Mods>b__117_0(APIMod m) in /Users/dean/Projects/osu/osu.Game/Scoring/ScoreInfo.cs:line 193
 at System.Linq.Enumerable.SelectArrayIterator`2.ToArray()
 at osu.Game.Scoring.ScoreInfo.get_Mods() in /Users/dean/Projects/osu/osu.Game/Scoring/ScoreInfo.cs:line 193
 at osu.Game.Screens.Select.Leaderboards.BeatmapLeaderboard.<>c.<subscribeToLocalScores>b__40_2(ScoreInfo s) in /Users/dean/Projects/osu/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs:line 199
 at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
 at osu.Game.Database.RealmObjectExtensions.Detach[T](IEnumerable`1 items) in /Users/dean/Projects/osu/osu.Game/Database/RealmObjectExtensions.cs:line 180
 at osu.Game.Screens.Select.Leaderboards.BeatmapLeaderboard.<>c__DisplayClass40_0.<subscribeToLocalScores>g__localScoresChanged|1(IRealmCollection`1 sender, ChangeSet changes, Exception exception) in /Users/dean/Projects/osu/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs:line
209
 at Realms.RealmCollectionBase`1.Realms.INotifiable<Realms.NotifiableObjectHandleBase.CollectionChangeSet>.NotifyCallbacks(Nullable`1 changes, Nullable`1 exception)
 at Realms.NotifiableObjectHandleBase.NotifyObjectChanged(IntPtr managedHandle, IntPtr changes, IntPtr exception)
```
2022-03-09 17:57:55 +09:00
Dean Herbert
8bb07f83cd
Merge pull request #17054 from hlysine/mod-adaptive-speed
Implement Adaptive Speed mod
2022-03-09 17:56:34 +09:00
Dan Balasescu
6fd8b4d891 Safeguard method against invalid invocation 2022-03-08 22:30:44 +09:00
Dan Balasescu
f1c40bd9ed Rework GetScore() method signatures + implementations
Rename legacy-facing overload to mention as much
2022-03-08 22:30:44 +09:00
Dan Balasescu
a8e99f1a95 Calculate classic score using total basic hitobject count 2022-03-08 21:49:41 +09:00
Dan Balasescu
5b6b8d1fa9 Remove GetStandardisedScore() proxy method 2022-03-08 21:49:41 +09:00
Dan Balasescu
6654977a7b Add GetScore() overload with total hitobject count 2022-03-08 21:49:41 +09:00
Dan Balasescu
2c382bd1d9 Rename GetImmediateScore() as overload of GetScore() 2022-03-08 21:49:40 +09:00
Dan Balasescu
a352a140bc
Merge pull request #17157 from peppy/fix-statistics-json-serialisation
Fix incorrect serialisation of submitted scores
2022-03-08 20:20:31 +09:00
Dan Balasescu
a172fc6cb8 Add IsBasic() and IsTick() extensions on HitResult 2022-03-08 18:19:12 +09:00
Dean Herbert
589a40ca2d Add EnumMember naming to HitResult to allow for correct json serialisation 2022-03-08 17:58:37 +09:00
Henry Lin
8b8b54b58f Scale rate adjustments based on hit timing consistency and tweak some related numbers 2022-03-05 21:48:57 +08:00
Henry Lin
76d257fbe4
Merge branch 'master' into mod-adaptive-speed 2022-03-04 15:16:37 +08:00
Henry Lin
f72c9a1f41 Cap speed change per hit and apply a speed decrease on miss 2022-03-04 11:48:48 +08:00
Henry Lin
b66af7edf4 Rename approximatedRates to ratesForRewinding and update xmldoc 2022-03-04 11:03:57 +08:00
Bartłomiej Dach
fcefd3c725
Fix slightly wrong references in xmldocs 2022-03-03 17:39:55 +01:00
Bartłomiej Dach
3797871aa0
Add extended documentation of adaptive speed mod machinations 2022-03-03 17:25:49 +01:00
Bartłomiej Dach
ffaf5b729f
Move and reword docs of allowable rate range constants 2022-03-03 17:07:43 +01:00
Henry Lin
464be6e64c Only call IUpdatableByPlayfield.Update if the playfield isn't nested 2022-03-03 14:37:39 +08:00
Henry Lin
4ce2044e4c Reorder members 2022-03-03 13:09:41 +08:00
Henry Lin
9c2aa51194 Rename applyPitchAdjustment to adjustPitchChanged 2022-03-03 13:07:30 +08:00
Henry Lin
ae71dcceeb Convert comments to xmldoc 2022-03-03 13:03:53 +08:00
Henry Lin
09254407fe Interpolate speed change using IUpdatableByPlayfield 2022-03-03 12:09:36 +08:00
Henry Lin
51258dbab4 Use binary search in ApplyToBeatmap 2022-03-03 11:21:20 +08:00
Henry Lin
95a40c5dc5 Remove pointless comment 2022-03-03 10:43:30 +08:00
Henry Lin
ff7f65de27 Extract duplicated conditionals 2022-03-03 10:43:04 +08:00
Henry Lin
55737226a3 Use Enumerable.Repeat 2022-03-03 10:18:36 +08:00
Henry Lin
d335a2229f Tweak average_count 2022-03-02 21:07:57 +08:00
Henry Lin
17bc714297 Allow the mod to properly react to nested hit objects 2022-03-02 20:48:57 +08:00
Henry Lin
6caecf79a0 Use smooth speed change 2022-03-02 20:08:05 +08:00
Henry Lin
c6934b4bce Improve adaptive speed algorithm and add rewind support 2022-03-02 10:35:03 +08:00
Henry Lin
783f43ccfb Add initial rate setting 2022-03-02 09:57:52 +08:00
Henry Lin
c9b205afeb Add adaptive speed mod 2022-03-02 09:57:52 +08:00
Dean Herbert
7215f3f66b Fix CalculateAverageHitError throwing if there are zero HitEvents 2022-03-01 18:44:15 +09:00
Dean Herbert
159db38f8a Add missing xmldoc 2022-02-28 19:14:43 +09:00
Dean Herbert
a41e1c80f1 Show hit error on results screen
Leading up to implementation of "local offset", this feels like a good
thing to have visible first and foremost.
2022-02-28 19:11:06 +09:00
Dan Balasescu
3a03833912
Merge pull request #16890 from peppy/beatmap-decoder-ruleset-store
Fix `LegacyBeatmapDecoder` not populating correct rulesets
2022-02-25 19:03:43 +09:00
Bartłomiej Dach
d8fa443ea0
Extract default mod switch measurements to constants
For use later when specific sizes/scales of the mod switches are
desired.
2022-02-22 23:22:11 +01:00
Dan Balasescu
bedd07d2e4 Add remark about usage of CalculateAll() 2022-02-22 18:12:55 +09:00
Bartłomiej Dach
cfc41a0a36
Implement small mod switch 2022-02-22 00:26:35 +01:00
Bartłomiej Dach
5186693dad
Implement tiny mod switch 2022-02-22 00:26:35 +01:00
Dan Balasescu
c466d6df94 Ensure to not multiply by 0 2022-02-21 17:19:35 +09:00
Dan Balasescu
c3b365cf6b Scale classic score by hitobject count 2022-02-21 13:31:03 +09:00
Dan Balasescu
567da9214e Merge branch 'master' into osu-diff-calc-max-combo 2022-02-18 18:35:24 +09:00
Dan Balasescu
3945cd24eb wip 2022-02-17 21:14:49 +09:00
Dean Herbert
7307e68e9c Revert "Merge pull request #16889 from smoogipoo/remove-mod-multiplier"
This reverts commit 252b945d3b, reversing
changes made to a1b39a96cf.
2022-02-17 13:26:12 +09:00
Dean Herbert
23933fc881 Update xmldoc to mention that multipliers are not applied anywhere 2022-02-16 17:32:22 +09:00
Dean Herbert
5ffd3ff82a Add xmldoc and allow constructing an AssemblyRulesetStore with a directory path 2022-02-16 17:25:16 +09:00
Dean Herbert
d0efecfc9c Add RulesetStore for use where realm is not present (ie. other projects) 2022-02-16 17:13:54 +09:00
Dean Herbert
7a69de0060 Split out realm portion of RulesetStore 2022-02-16 17:13:31 +09:00
Dan Balasescu
4c1413e0c7 No longer require Mod implementation 2022-02-16 16:36:02 +09:00
Dan Balasescu
5dd9771c5f Remove mod multipliers from being applied to scores 2022-02-16 16:27:27 +09:00
Dan Balasescu
84e82ef5e4 Add XMLDocs to difficulty attribute properties 2022-02-16 14:09:19 +09:00
Salman Ahmed
0992bec2c8 Change "distance spacing" multipler type to double
Avoids losing precision on initial load, causing an unnecessary
hash change in `EditorChangeHandler`.

Resolves test failures in `TestSceneEditorChangeStates`
(https://github.com/ppy/osu/runs/5192493482?check_suite_focus=true).
2022-02-16 03:28:12 +03:00
Salman Ahmed
868dcd20f5 Remove e.ShiftPressed handling for now
Broken on macOS, will be handled differently later on as discussed.
2022-02-15 02:21:53 +03:00
Salman Ahmed
528dc03b8c Expose distance spacing in IPositionSnapProvider for updating distance grid
Alternate method is to expose a `SnapDistancesChanged` event in
`IPositionSnapProvider` instead, but I chose this way as an analogue to
`IBeatSnapProvider.BeatDivisor`, which might even make sense to be
exposed as `BindableBeatDivisor` instead of caching that separately.
2022-02-15 02:21:53 +03:00
Salman Ahmed
19ee05c232 Add "distance spacing" multiplier for osu! ruleset
While osu!catch also implements a distance snap grid, it doesn't rely on
`GetBeatSnapDistanceAt` (unlike osu!), therefore it can't have the
"distance spacing" multiplier yet.
2022-02-15 02:21:53 +03:00
Dean Herbert
b9d9fc56af Move files to UI namespace 2022-02-14 17:51:39 +09:00
Salman Ahmed
92e22c57a7 Introduce private APIRuleset for online ID equality comparison 2022-02-11 08:27:01 +03:00
Salman Ahmed
26839f6ad8 Consider OnlineIDs during ruleset equality if available
Required for `APIBeatmap`s, which provide `Ruleset` instances with `OnlineID` available only.

Also consistent with the comparer implementation.
2022-02-11 04:26:58 +03:00
Salman Ahmed
1b729e891d Update pointless CompareTo implementation once again 2022-02-11 04:17:30 +03:00
Salman Ahmed
9574bc1382 Allow IRulesetInfos of same type to be comparable
At first I was planning on making `CompareTo` implemented at
`IRulesetInfo` itself and shared across classes, but turns out it only
implements it explicitly and not allow direct `IRulesetInfo.Equals`
calls.

It messed with my head enough that I decided to just let each class have
its own implementation and only allow same type.
2022-02-11 04:03:23 +03:00
Dan Balasescu
ebd105422f Remove unused using 2022-02-10 14:22:08 +09:00
Dan Balasescu
f7fb7825cc Simplify disposal 2022-02-10 14:21:51 +09:00
Dan Balasescu
a3896a8ebd Remove allowance of null dependency 2022-02-10 14:21:50 +09:00
Dan Balasescu
45b3f472ab Merge branch 'master' into spectator-state-rework 2022-02-08 19:51:50 +09:00
Henry Lin
56c90a21ce Add a todo 2022-02-06 11:22:12 +08:00
Henry Lin
f78c853bc7 Calculate max combo locally in PerformanceBreakdownCalculator 2022-02-06 10:59:53 +08:00
Henry Lin
0b1fef38af Use the playable beatmap provided in CreateStatisticsForScore 2022-02-05 21:36:34 +08:00
Henry Lin
f29301cd1e
Merge branch 'master' into display-performance-attributes 2022-02-05 16:59:46 +08:00
Dan Balasescu
483977d5c8 Merge branch 'master' into spectator-state-rework 2022-02-03 19:59:07 +09:00
Bartłomiej Dach
82f9ad63f5
Fix flashlight size multiplier printing with too many decimal digits 2022-02-02 20:41:25 +01:00
Salman Ahmed
074a691635 Set keyboard step to 0.1 for difficulty adjust sliders 2022-02-02 17:43:08 +03:00
Dan Balasescu
6d3bc005ea Merge branch 'master' into spectator-state-rework 2022-02-02 18:57:04 +09:00
Dean Herbert
0c5da9370a Fix rulesets potentially being marked Available even when methods are missing
Came up when running the game after the recent breaking changes
(https://github.com/ppy/osu/pull/16722), where two template rulesets I
had loaded were erroring on startup but still being marked as available,
allowing them to crash the game on attempting to initiate relpay logic.

These cases are already handled for first-time ruleset loading via the
`GetTypes()` enumeration in `RulesetStore.addRuleset`, but when
consistency checking already present rulesets the only runtime
validation being done was `ruleset.CreateInstance()`, which does not
handle missing types or methods.
2022-02-02 14:52:01 +09:00
Henry Lin
b06128ffa5 Rename "Final PP" to "Achieved PP" 2022-02-01 22:26:55 +08:00
Dan Balasescu
41007169f7 Give SpectatorState a user state 2022-02-01 21:51:05 +09:00
Dean Herbert
0f83f77d2b Add xmldoc for new ResetFromReplayFrame method 2022-02-01 16:52:53 +09:00
Dan Balasescu
0641264a11 Merge branch 'master' into spectator-consistency-frames 2022-02-01 14:35:30 +09:00
Dan Balasescu
c50577e25f
Apply suggestion from review
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-02-01 10:48:41 +09:00
Dan Balasescu
4fb565e15f Reset ScoreProcessor from statistics replay frames 2022-01-31 21:32:56 +09:00
Dan Balasescu
39e1d65976 Make ScoreProcessor write all judgement types 2022-01-31 18:53:47 +09:00
Dan Balasescu
0458d408bb Add replay statistics frames to FramedReplayInputHandler 2022-01-31 18:53:47 +09:00
Dan Balasescu
4727aeda01 Give last bundled replay frame the frame header 2022-01-31 18:53:47 +09:00
Dean Herbert
0e764538e0 Retrieve KeyBindingContainer via DI rather than traversal lookup 2022-01-31 17:05:04 +09:00
Dean Herbert
a84fd2e20c
Merge branch 'master' into master 2022-01-31 16:30:08 +09:00
Dean Herbert
2d1a8a9d49 Use a more correct CompareTo implementation for ruleset ordering 2022-01-27 21:58:04 +09:00
Dean Herbert
33b7bdcf82 Update pointless CompareTo implementation 2022-01-27 21:49:33 +09:00
Dean Herbert
7af23328a4
Merge branch 'master' into ruleset-ordering-fix 2022-01-27 21:46:03 +09:00
Dean Herbert
a5d422e82c Merge branch 'master' into ruleset-id-fixes 2022-01-27 17:07:18 +09:00
Dan Balasescu
54d18bd7ac
Merge pull request #16642 from peppy/ruleset-private-info-set
Make `Ruleset.RulesetInfo` get only
2022-01-27 16:41:52 +09:00
Dean Herbert
5637fd64d6 Perform ordering using IComparable instead 2022-01-27 15:59:20 +09:00
Dean Herbert
5288eedd31 Update all usages of RulesetID and Ruleset.ID to use Ruleset.OnlineID 2022-01-27 15:38:03 +09:00
Dean Herbert
714177cce1 Remove pointless constructor in RulesetInfo 2022-01-27 15:37:27 +09:00
Dean Herbert
e67b1fe0ec Make Ruleset.RulesetInfo get only 2022-01-27 15:36:35 +09:00
Dean Herbert
f30d63107a Add SortID to RulesetInfo to allow stable ordering of rulesets for display 2022-01-27 15:35:16 +09:00
Dan Balasescu
0dd2de3e1e
Merge pull request #16628 from peppy/fix-realm-ruleset-ordering
Fix custom rulesets being displayed before official ones
2022-01-26 19:19:01 +09:00
Dean Herbert
57e624d8e7 Fix custom rulesets being displayed before official ones 2022-01-26 18:46:32 +09:00
Dean Herbert
f2d48d088d Fix realm migration failures with presence of databased EF rulesets that don't exist on disk 2022-01-26 17:57:03 +09:00
Dan Balasescu
bfa521bdd2
Merge pull request #16593 from peppy/realm-clean-up
Clean up realm naming
2022-01-25 14:33:53 +09:00
Dean Herbert
d7342880f5 Update remaining cases of clashes with realm.Write and realm.RegisterForNotifications 2022-01-25 13:09:48 +09:00
Bartłomiej Dach
8c3fbb6eb4
Merge branch 'master' into Liswiera-FL-changes 2022-01-24 21:32:36 +01:00
Bartłomiej Dach
a227af75ed
Simplify flashlight parameter passing flow 2022-01-24 21:03:02 +01:00
Bartłomiej Dach
5874475dff
Extract DefaultFlashlightSize to base flashlight class 2022-01-24 21:03:02 +01:00
Bartłomiej Dach
a7c0d507ce
Rename flashlight settings to be more accurate 2022-01-24 21:03:02 +01:00
Dean Herbert
6eb2c28e41 Rename RealmContextFactory to RealmAccess 2022-01-24 20:38:07 +09:00
mk-56
948867898c ModeMultiplier rename 2022-01-24 11:38:52 +01:00
mk-56
161a2a321e Remove bindable from ModeMultiplier 2022-01-24 09:07:07 +01:00
mk-56
ed84ae0ac0 Adjust values to Bdach's refined taste 2022-01-24 00:42:43 +01:00
Henry Lin
48aa1677dc Include hit results of nested hit objects in statistics of perfect score 2022-01-23 11:01:30 +08:00
Bartłomiej Dach
735414bc49
Replace TimeSignatures enum with struct for storage of arbitrary meter 2022-01-22 20:50:31 +01:00
mk-56
955bab926f Separate the settings for each modes radiuses 2022-01-22 19:38:56 +01:00
MK56
b5f813a949
Merge branch 'ppy:master' into Liswiera-FL-changes 2022-01-22 19:04:39 +01:00
Bartłomiej Dach
1ce0b18003
Merge branch 'master' into display-performance-attributes 2022-01-22 14:12:57 +01:00
Dean Herbert
114c9e8c1f Update all usages of CreateContext to use either Run or Write 2022-01-21 17:27:08 +09:00
Henry Lin
6c97fbd3f2 Calculate perfect performance without caching 2022-01-20 13:06:00 +08:00
Henry Lin
42d904acee Remove blocking calls and add back Task.WhenAll 2022-01-20 12:50:28 +08:00
Henry Lin
dd42c89260 Feed more info to the temporary score processor for more accurate total score 2022-01-19 16:08:45 +08:00
Henry Lin
0d708efb73 Split off PerformanceBreakdown and its own calculation logic 2022-01-19 15:33:33 +08:00
Henry Lin
31e03e99cd Improve display of "total PP" 2022-01-18 22:11:43 +08:00
Dean Herbert
7f65f3a47f Remove all usage of BaseDifficulty (and access Difficulty instead) 2022-01-18 22:57:39 +09:00
Henry Lin
eddf453294 Fix code quality issues 2022-01-17 21:32:13 +08:00
Henry Lin
b81fc675e8 Include PropertyName in PerformanceDisplayAttribute 2022-01-17 20:45:25 +08:00
Henry Lin
d014fef179 Hide confusing attributes 2022-01-17 20:36:36 +08:00
Henry Lin
511a607599 Display performance breakdown in a tooltip 2022-01-17 18:28:17 +08:00
mk-56
57cc2f7893 Adjustment to size values of FL per mode 2022-01-16 14:26:26 +01:00
mk-56
ee4331dda4 Merge remote-tracking branch 'origin/Liswiera-FL-changes' into Liswiera-FL-changes 2022-01-15 21:44:03 +01:00
mk-56
2a59735525 Initial commit 2022-01-15 21:43:28 +01:00
Bartłomiej Dach
03e4ec4214
Merge branch 'master' into realm-integration/score-and-beatmaps 2022-01-15 14:45:42 +01:00
Susko3
19467e58c1 Remove unused params from BDL methods 2022-01-15 01:06:39 +01:00
Dean Herbert
eb5f15a77e
Merge pull request #16420 from bdach/slider-paste-parsing-failures-2
Fix pasted sliders having sample points with time at infinity
2022-01-13 23:28:49 +09:00
Dean Herbert
4f8d29c1c0 Merge branch 'master' into realm-integration/score-and-beatmaps 2022-01-13 18:25:09 +09:00
Joseph Madamba
5185f6010e Fix missed identifier typos 2022-01-12 15:46:20 -08:00
Bartłomiej Dach
afce976f08
Fix oversubscription to StartTimeBindable.ValueChanged 2022-01-12 19:29:49 +01:00
Bartłomiej Dach
07fc772c24
Merge branch 'master' into slider-paste-parsing-failures-2 2022-01-12 19:06:36 +01:00
Dean Herbert
51251e3204 Fix CI reported warnings 2022-01-12 22:39:00 +09:00
Dean Herbert
08da948afc
Merge branch 'master' into realm-integration/score-and-beatmaps 2022-01-12 19:22:55 +09:00
Dan Balasescu
4106ebf881 Fix mania requiring PERFECTs to maintain HP 2022-01-12 18:29:23 +09:00
Dean Herbert
eb70a1eeb7 Replace compatibility properties with direct references 2022-01-12 18:13:14 +09:00
Dean Herbert
482cf29e28
Merge branch 'master' into realm-integration/score-and-beatmaps 2022-01-12 17:57:14 +09:00
Dean Herbert
5cbd731864 Add RulesetInfo hashcode implementation and tidy up equality 2022-01-12 17:49:10 +09:00
Dan Balasescu
52e240230b
Merge branch 'master' into mouse-button-disable-disables-touch 2022-01-12 17:14:39 +09:00
Dean Herbert
82259ee072 Improve legibility of RulesetInfo.Equals 2022-01-12 17:00:17 +09:00
Dean Herbert
2d2faa72a9 Fix rulesets being out of order 2022-01-12 17:00:16 +09:00
Dean Herbert
3811bd8520 Fix some null inspections 2022-01-12 17:00:16 +09:00
Dean Herbert
8d943b5709 Fix many shortcomings and compatibility issues with EF classes post-rename 2022-01-12 17:00:16 +09:00
Dean Herbert
a3da8dc49d Fix missing interface implementation of IRulesetStore 2022-01-12 16:58:58 +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
3ecd889fef Replace EF RulesetStore with realm version
Pass full EF context factory to `RealmContextFactory` for migration purposes
2022-01-12 16:39:36 +09:00
Dean Herbert
c3df58e01c Add required properties to make realm models backwards compatible 2022-01-12 16:39:36 +09:00
Dean Herbert
618903c217 Rename realm to become imposter classes 2022-01-12 16:39:36 +09:00
Dean Herbert
0b6c4497bd Rename EF classes to allow for shit to hit the fan 2022-01-12 16:39:36 +09:00
Dean Herbert
a82606cf5c
Merge pull request #16407 from smoogipoo/fix-mania-normalised-scroll-speed
Fix calculation of most common beat length for mania scroll speed
2022-01-12 15:23:22 +09:00
Bartłomiej Dach
80ccff9068
Remove no longer necessary guards against default control points
The subscription in which the guards were present was moved from
constructor to `ApplyDefaults()`, and at that point neither the sample
control point or the difficulty point can be the default point, because
there are explicit paths that overwrite those with blank points in the
same methods, prior to the subscription's registration.

The only worry would be that someone would set the default point on the
object themselves, but at that point that is most likely programmer
error anyhow.
2022-01-11 22:14:47 +01:00
Bartłomiej Dach
7a25fe79b7
Fix sample control point time being calculated before defaults applied
In editor contexts, the `StartTimeBindable` subscription in `HitObject`
was firing before defaults were applied, which in the case of sliders
manifested in an infinite end time. `ApplyDefaults()` also did not
always set the time of the control point to the correct value, which
matters when the beatmap is encoded.

Ensure that the control points receive the correct time values during
default application, and only register the `StartTimeBindable` change
callback after defaults have been successfully applied.
2022-01-11 21:38:59 +01:00
Dan Balasescu
a09563a7d9 Fix calculation of most common beat length for mania scroll speed 2022-01-11 11:00:30 +09:00
Bartłomiej Dach
c09f6ee052
Use slider snapping more liberally to match user expectations
Previously the slider path length would be snapped using the current
beat snap setting on *every* change of the slider path. As it turns out
this is unexpected behaviour in some situations (e.g. when reversing a
path, which is expected to preserve the previous duration, even though
the slider may be technically "unsnapped" at that point in time due to a
different beat snap setting being selected afterwards).
2022-01-07 16:02:04 +01:00
파링
74b15ec30c
Merge branch 'master' into master 2022-01-06 21:12:45 +09:00
Dean Herbert
cea9cab4dc Use ExpandingButtonContainer in editor composer 2022-01-06 21:10:45 +09:00
Dean Herbert
88602ec1b4 Fix mouse button disable not disabling touch input mappings 2022-01-05 18:29:32 +09:00
Dean Herbert
ef2a4aed9a Fix editor playfield not being centered correctly
This has come up multiple times, with mappers citing that they have
muscle memory for mapping based on the centre of the playfield being in
the centre of the window.

The original plan was to have a second toolbar on the right hand side of
the screen to balance the padding, but we're not at that point yet.
Easiest solution is to do what stable does and allow the left-hand
toolbar items to overlap the playfield underneath it.

In edge cases where the user is running at an aspect ratio that causes
overlaps, they can choose to collapse the toolbars down. We can probably
work on this UI/UX a bit more as we update designs to be more friendly
to such cases.
2022-01-05 16:05:18 +09:00
Dean Herbert
bb54f438aa Merge branch 'master' into positional-sounds-strength-adjustment 2022-01-03 12:40:56 +09:00
pikokr
dec1f31749 Make KeyBindingContainer public 2021-12-28 22:43:07 +09:00
Joseph Madamba
7de43e3aba Fix most open compound words in identifiers being closed 2021-12-27 20:26:28 -08:00
Bartłomiej Dach
8094b502cb
Remove test-specific logic from RulesetConfigCache 2021-12-23 19:42:26 +01:00
Bartłomiej Dach
5cbaa028eb
Use extracted ruleset config cache implementation in DI 2021-12-23 19:02:10 +01:00
Bartłomiej Dach
0f65c4e960
Extract interface for ruleset config cache 2021-12-23 18:59:02 +01:00
Bartłomiej Dach
1040590844
Add cancellation support to game-side IResourceStores 2021-12-23 10:33:17 +01:00
StanR
88436d51ae Remove using 2021-12-21 13:44:20 +03:00
StanR
cca02a8016 Create PerformanceAttributes 2021-12-21 13:08:31 +03:00
StanR
2f2006715e Slightly refactor difficulty and pp calculators 2021-12-17 23:40:23 +03:00
mk-56
fd5af1fbe7 Code refactor and name changes
cleaned code up with Jetbrains i hope it suffices
2021-12-17 13:16:06 +01:00
JamesTheGeek
828072bcea Fix issue #15869
The taiko-slider is not included in  `Playfield`, so it doesn't get hidden when calling `drawableRuleSet.Playfield.Hide()`.   Calling `drawableRuleSet.Hide()` hides the taiko-slider, in addition to the rest of the `Playfield`.
2021-12-14 23:23:11 -05:00
Dean Herbert
cfa712473d Use default timeout in GetPlayableBeatmap when provided CancellationToken is default 2021-12-07 13:33:41 +09:00
Dean Herbert
f3e9fb76fc Add the ability to pass a CancellationToken through DifficultyCalculator.CalculateAll
Was weirdly missing from this one method.
2021-12-07 13:32:47 +09:00
Bartłomiej Dach
38702beabf
Merge branch 'master' into i-ruleset-store 2021-12-04 15:05:39 +01:00
Dean Herbert
1eed2436e6 Clean up unused resolved properties 2021-12-03 18:49:49 +09:00
Dean Herbert
15db1372aa Add missing equality implementations on IRulesetInfo 2021-12-03 18:01:45 +09:00
Dean Herbert
675ecb603f Add IRulesetStore to allow for transitional usage in upcoming manager classes 2021-12-03 17:57:40 +09:00
mk-56
cd095b5f7d Merge remote-tracking branch 'origin/positional-sounds-strength-adjustment' into positional-sounds-strength-adjustment 2021-11-28 14:21:26 +01:00
mk-56
9c42cc0c05 Fix 2021-11-28 14:12:39 +01:00
mk-56
9065179c52 Fix 2021-11-28 14:09:30 +01:00
mk-56
c3fb793762 Fixed the problems that were brought up and deleted the old bind logic 2021-11-28 14:06:53 +01:00
mk-56
e83115ad5e Binding logic fix, nullification of unnecessary path 2021-11-28 03:25:11 +01:00
mk-56
eaa464e548 Initial implementation of adjustable positional hitobject audio strength 2021-11-28 02:58:08 +01:00
Dean Herbert
f283770f34 Update mock RulesetInfo usage to set OnlineID instead of ID 2021-11-24 15:50:26 +09:00
Dean Herbert
e57c343531 Add helper setter to EF RulesetInfo.OnlineID to allow updating usages 2021-11-24 15:50:26 +09:00
Dan Balasescu
33d95fbb9c
Merge pull request #15771 from peppy/ruleset-config-cache-shortname
Update `RulesetConfigCache` to cache via `ShortName` instead of `ID`
2021-11-24 15:24:57 +09:00
Dean Herbert
0aedbbe165 Fix incorrect fallback logic causing test failure 2021-11-24 14:04:55 +09:00
Dan Balasescu
6ffba8a546
Merge pull request #15768 from peppy/standardise-ruleset-create-instance
Remove nullability of `Ruleset.CreateInstance`
2021-11-24 13:43:23 +09:00
Dean Herbert
ee22c24370 Update RulesetConfigCache to cache via ShortName instead of ID 2021-11-24 13:10:18 +09:00
Dean Herbert
8d69ebd7db Remove nullability of Ruleset.CreateInstance 2021-11-24 12:23:06 +09:00
Dean Herbert
f264b128c2 Merge branch 'master' into realm-ruleset-setting-short-name 2021-11-23 14:55:36 +09:00
Dean Herbert
e580fc5abc
Merge pull request #15735 from peppy/remove-ruleset-info-inheritance
Remove subclassing of `RulesetInfo`
2021-11-23 10:18:32 +09:00
Dean Herbert
6c36770eb3 Add back allowance for tests scenes using empty ShortName 2021-11-22 21:41:09 +09:00
Dean Herbert
329bae50b0 Switch realm ruleset configuration to use ruleset's ShortName as key 2021-11-22 18:52:00 +09:00
Dean Herbert
377ba2673a Use Ruleset's ShortName for mod caching purposes 2021-11-22 16:52:54 +09:00
Dean Herbert
cb5b6911e6 Seal RulesetInfo and remove virtual methods 2021-11-22 16:39:26 +09:00
Dean Herbert
fd3e5d333e Add xmldoc note about Skill potentially being memory expensive 2021-11-21 12:15:32 +09:00
Dean Herbert
9f688f6291 Stop persisting Skills in DifficultyAttributes 2021-11-21 12:15:32 +09:00
Dean Herbert
59e763467f Move StoragePath implementation to an extension method 2021-11-19 16:08:38 +09:00
Dan Balasescu
6ebe54b183
Merge pull request #15494 from Tollii/beatmap-cancellation-token
Add support for cancellation tokens for beatmap difficulty calculation
2021-11-19 10:54:32 +09:00
Dean Herbert
cdb2a92f86 Disable key repeat for all ruleset handling cases 2021-11-18 13:13:36 +09:00
Dean Herbert
66c307e0ee Remove usage of key repeat helper method 2021-11-18 13:13:36 +09:00
Bartłomiej Dach
8b134914cf
Merge branch 'master' into beatmap-cancellation-token 2021-11-17 21:52:30 +01:00
Dean Herbert
fd0cae2bfb
Merge branch 'master' into difficulty-attribute-helpers 2021-11-17 20:49:31 +09:00
Dean Herbert
0a7498014f Move consts to top of file 2021-11-17 20:47:52 +09:00
Dan Balasescu
815179f713 Use consts for attribute IDs 2021-11-17 20:31:18 +09:00
Dan Balasescu
abb333299b Document base class 2021-11-17 20:20:54 +09:00
Dean Herbert
0715d40ea0 Merge branch 'master' into beatmap-cancellation-token 2021-11-17 11:16:10 +09:00
Dean Herbert
6cca657a2d Standardise naming of CancellationToken parameters 2021-11-16 14:45:51 +09:00
Dean Herbert
53c0682a08 Merge branch 'master' into beatmap-cancellation-token 2021-11-16 14:43:13 +09:00
Dan Balasescu
2c45a327bb Remove JsonIgnores, require opt-in properties 2021-11-15 19:54:35 +09:00
Dean Herbert
369b4ba789 Update DifficultyCalculator to take an IRulesetInfo 2021-11-15 19:16:48 +09:00
Dean Herbert
62d670a3ca Update DifficultyCalculator to take an IWorkingBeatmap 2021-11-15 19:16:48 +09:00
Dan Balasescu
c8a01c35f7 Remove extra members from FromDatabaseAttributes 2021-11-15 18:11:07 +09:00
Dan Balasescu
45382a8127 Ignore some properties 2021-11-15 16:32:25 +09:00
Dan Balasescu
0cfd6fdf04 Add to/from database mapping functions to difficulty attributes 2021-11-15 16:06:50 +09:00
Dan Balasescu
907499f73a Add json properties to difficulty attributes 2021-11-15 16:06:29 +09:00
Bartłomiej Dach
69809390d3
Fix HUD unstable rate counter not including judgements before load complete
Also unifies UR calculation logic with the results screen statistic item
to reduce duplication.
2021-11-11 13:36:05 +01:00
Bartłomiej Dach
40cffd1682
Expose HitEvents publically from ScoreProcessor 2021-11-11 13:22:07 +01:00
Dean Herbert
4bca96d548 Throw again to ensure correct available state is set
Also standardises handling between `RulesetStore` and `RealmRulesetStore`.
2021-11-11 17:39:36 +09:00
Dan Balasescu
57c333b472
Remove unused using 2021-11-11 15:29:08 +09:00
Dean Herbert
ea536dea23 Gracefully handle missing type rather than triggering ArgumentNullException 2021-11-11 14:46:21 +09:00
ekrctb
116b857cea
Merge branch 'master' into no-scope-catch 2021-11-10 20:50:31 +09:00
Naxesss
b888185799 Properly dispose of Stream in bg quality check 2021-11-10 05:06:11 +01:00
Semyon Rozhkov
41f4f0ab5e Different setting slider description in each mod 2021-11-10 03:57:22 +03:00
Semyon Rozhkov
64bc8da14c Add "No Scope" mod implementation for Catch 2021-11-09 17:11:19 +03:00
Dean Herbert
c58f21a115 Handle mods with overloaded method signature instead 2021-11-08 14:43:46 +09:00
Dean Herbert
5b5e3dc4a2 Revert incorrect mod nullable parameter specification 2021-11-08 14:33:15 +09:00
Dean Herbert
e338340c6a Merge branch 'master' into beatmap-cancellation-token 2021-11-08 14:32:56 +09:00
Salman Ahmed
eb5e7402c3 Remove obsolete method in ModAutoplay 2021-11-07 16:15:57 +03:00
Tollii
d5f5d74a89 Rename CancellationToken variable 2021-11-07 13:41:54 +01:00
Tollii
cf0b757b16 Fix PR comments.
Nitpick, more cancellation token checks.
2021-11-06 16:03:53 +01:00
Tollii
eb7d04bc77 Add cancellation token support for beatmap difficulty calculation. 2021-11-06 00:21:29 +01:00
Dean Herbert
e43d91ad5d Fix another case of incorrect null checking in editor verification processing 2021-11-04 15:18:10 +09:00
Dean Herbert
1e73b09e57 Fix another couple of cases of incorrect string null/empty checking 2021-11-04 14:22:28 +09:00
smoogipoo
81aaef719f Add xmldoc to CalculateTimed() 2021-11-02 17:55:00 +09:00
smoogipoo
168a7a588b Add xmldoc to ctor also 2021-11-02 17:19:14 +09:00
smoogipoo
efba7a9c4d Missed hyphen 2021-11-02 17:18:02 +09:00
smoogipoo
0cdd2898fe Expose non-adjusted time from CalculateTimed() 2021-11-02 17:17:14 +09:00
Dean Herbert
34d4715220 Allow for long online IDs and implement in ScoreInfo 2021-10-29 11:48:36 +09:00
Dean Herbert
5c7623e68e
Merge pull request #15255 from goodtrailer/node-samples-ilist
Change IHasRepeats.NodeSamples to IList from List
2021-10-28 14:24:26 +09:00
Dean Herbert
add39fbd4f Merge branch 'master' into fix-skin-layout-editor-crash 2021-10-28 06:24:24 +09:00
Dean Herbert
6944151486 Apply batch fixing of built-in types using var 2021-10-27 13:04:41 +09:00
Dean Herbert
d5b4c68d3a Merge branch 'master' into fix-slider-path-extension-incorrectness 2021-10-26 17:36:50 +09:00
Dan Balasescu
6a6d3a5e8a
Merge pull request #15304 from peppy/fix-editor-new-beatmap-sample-change-crash
Fix editor crash when attempting to change sample/velocity from timeline on new beatmap
2021-10-26 17:13:56 +09:00
Dean Herbert
dae7cdc4c5 Ensure HitObject-local control points are non-default after ApplyDefaults
We will probably want to make this whole flow more efficient in the
future, but this should suffice for now.
2021-10-26 16:06:03 +09:00
Dean Herbert
81fee02c2b Fix slider paths being extended even when the last two points are equal 2021-10-26 15:47:59 +09:00
Jason Won
a582976851 reversing slider maintains shape 2021-10-26 00:05:46 -04:00
goodtrailer
0affe7b79d Remove unnecessary using 2021-10-23 02:25:20 -07:00
goodtrailer
4440b9ca11 Change IHasRepeats.NodeSamples to IList from List 2021-10-23 01:59:07 -07:00
Dean Herbert
93482414d6 Remove SkinConfiguration subclasses and allow configuration parsing for all skin types 2021-10-22 14:42:23 +09:00
Dean Herbert
2c5ba1d8e2 Change OnlineID to non-nullable to allow for indexing in Realm 2021-10-18 15:53:40 +09:00
Dean Herbert
8fb9aec730 Fix threaded realm usage not disposing context fast enough 2021-10-15 16:39:53 +09:00
Dean Herbert
e47ccbd08a Fix realm transactional overhead when rapidly changing RulesetConfigManager values 2021-10-15 13:50:26 +09:00
smoogipoo
aa380a11c1 Merge branch 'master' into no-more-difficulty-control-points-info 2021-10-14 12:02:10 +09:00
Bartłomiej Dach
c7db286b94
Merge branch 'master' into file-sanity-checks 2021-10-14 00:17:29 +02:00
Dan Balasescu
e49f1f6e6b
Merge branch 'master' into no-more-difficulty-control-points-info 2021-10-13 20:17:57 +09:00
Dean Herbert
82f7f99f37 Refactor to use scoped using (and also correctly dispose TagLib portion) 2021-10-12 10:46:26 +09:00
Naxesss
f2f97602f2 Dispose of video resource later
We need the Stream to stay open here because `StreamFileAbstraction` uses it later in the block.
2021-10-12 00:40:39 +02:00
Naxesss
47b4d03145 Dispose of Streams when used 2021-10-12 00:13:38 +02:00
Naxesss
ce69dd3588 Use Prescan flag for audio length check 2021-10-11 23:57:23 +02:00
Bartłomiej Dach
56eae703fe
Avoid changing frame stable clock direction if time hasn't changed between frames 2021-10-11 21:39:48 +02:00
Naxesss
8f093b9a11 Use TagLib instead of ManagedBass 2021-10-11 13:56:26 +02:00
Naxesss
f0cd18a721 Only check each video file once 2021-10-11 13:55:50 +02:00
Naxesss
6aa054b5fa Change to non-BASS error template 2021-10-11 13:53:23 +02:00
Dan Balasescu
8884091422
Merge pull request #15014 from joseph-ireland/remove-initial-strain
Change initial strain value in skills from 1 to 0
2021-10-10 15:56:20 +09:00
smoogipoo
bc37cb6f43 Merge branch 'master' into no-more-difficulty-control-points-info 2021-10-08 18:41:17 +09:00
Joseph Ireland
185bb9c122 change initial strain from 1 to 0 to allow simpler implementations 2021-10-07 09:30:18 +01:00
Dan Balasescu
d50443fdf2
Merge branch 'master' into difficulty-move-to-beatmap 2021-10-07 16:50:10 +09:00
Dean Herbert
433e7cd403 Fix rate mods not working if pp counter is displayed 2021-10-06 21:26:30 +09:00
Dean Herbert
b339c149d8 Copy BaseDifficulty to Beatmap<T> and move all write operations across 2021-10-06 15:10:45 +09:00
Dan Balasescu
e837a3511d
Merge branch 'master' into beatmap-difficulty-more-interface-usage 2021-10-06 12:18:51 +09:00
Dan Balasescu
4bbff2ebf7
Merge branch 'master' into new-interfaces 2021-10-06 11:38:17 +09:00
Dean Herbert
4d5696959b
Remove unnecessary access modifier in interface
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
2021-10-06 05:52:28 +09:00
Dean Herbert
bd84a8b749 Merge branch 'new-interfaces' into beatmap-difficulty-more-interface-usage 2021-10-05 18:21:21 +09:00
Dean Herbert
599d82e383 Avoid returning a live IEnumerable 2021-10-05 17:01:07 +09:00
Dean Herbert
676df55a0e Fade display out during rewind (as the value displayed is no longer valid) 2021-10-05 15:39:29 +09:00
Dean Herbert
b6af93d434 Apply some code quality refactoring 2021-10-05 15:14:49 +09:00
Dean Herbert
1d99bc280f Merge branch 'master' into new-interfaces 2021-10-04 20:42:40 +09:00
smoogipoo
031c5a441e Merge branch 'master' into realtime-pp-display 2021-10-04 20:19:37 +09:00
Dean Herbert
fd6b10656c Add TODO reminder about ruleset reference transfer quirk 2021-10-04 16:55:16 +09:00
smoogipoo
69c2b7dc59 Merge branch 'master' into rename-beatmap-info-beatmap-fields 2021-10-04 16:03:22 +09:00
Dean Herbert
ec61c3c5ee Rename all remaining cases 2021-10-03 00:55:29 +09:00
Dean Herbert
32afd3f426 Replace all basic usages 2021-10-02 02:22:23 +09:00
smoogipoo
a1f880a36a Split classes 2021-10-01 21:00:39 +09:00
smoogipoo
5820a71652 Fix mania difficulty calculator crashing 2021-10-01 19:57:45 +09:00
Dean Herbert
05996cc2e9 Add changes that got forgotted in branch surgery 2021-10-01 17:04:53 +09:00
Dean Herbert
a92d499d7a Convert usages of BeatmapDifficulty to IBeatmapDifficultyInfo 2021-10-01 16:55:50 +09:00
Dean Herbert
8595eb2d11 Switch BeatmapDifficulty usages to use interface type 2021-10-01 16:55:50 +09:00
Dean Herbert
d309636460 Update all EF based models to implement new read only interfaces 2021-10-01 16:55:50 +09:00
smoogipoo
84bddf0885 Initial PP counter implementation 2021-09-30 17:00:24 +09:00
Dean Herbert
46bafb6252 Merge branch 'master' into no-more-difficulty-control-points-info 2021-09-28 13:53:56 +09:00
Dean Herbert
16e60eed56 Reduce NestedHitObject enumerator overhead
This was especially bad due to it allocating on any and every start time
change, even the first (see usage in `HitObject.ctor`).
2021-09-20 15:09:27 +09:00
Dean Herbert
a743a3f306 Change combo bind logic to be non-weird 2021-09-17 19:15:14 +09:00
smoogipoo
2d39131202 Refactor taiko flashlight a bit 2021-09-17 18:41:03 +09:00
smoogipoo
f9d5abff8a Update with keybinding changes 2021-09-16 18:26:12 +09:00
Dean Herbert
a1d325cb22 Mark key and value non-nullable (at realm end) and simplify Value logic 2021-09-15 17:16:05 +09:00
Dean Herbert
a150fb2996 Add nullability directive and make variant non-nullable 2021-09-15 17:16:05 +09:00
Dean Herbert
dcfe9c67e3 Make ruleset id non-nullable 2021-09-15 17:12:04 +09:00
Dean Herbert
80ecf81be3 Rename all databased setting classes to be specific to rulesets for now 2021-09-15 17:12:04 +09:00
Dean Herbert
520e550764 Bring back SettingsStore to avoid changing ruleset API for now
Also fixes some remaining test failures due to locally constructed
rulesets that are not being tracked by the game.
2021-09-15 17:12:02 +09:00
Dean Herbert
c36a67d06e Fix some tests failing due to using a locally constructed ruleset 2021-09-15 17:04:38 +09:00
Dean Herbert
a2f1752344 Make settings works with current caching structure
Will likely pull out that `RulesetConfigCache` next, but this is an
"everything works" state.
2021-09-15 16:31:13 +09:00
Dean Herbert
187c557ea8 Begin migrating settings implementation across to realm 2021-09-15 16:22:14 +09:00
Dean Herbert
a7ae3cc03e Change SampleControlPoint time to use leniency in bindable changed event too 2021-09-14 16:24:55 +09:00
Dean Herbert
cd227213e6 Ensure time of HitObject related ControlPoints are kept in sync with the hitobject 2021-09-10 15:59:30 +09:00
Dean Herbert
714f55b6bc Clone control points when copying to HitObjects 2021-09-10 14:36:39 +09:00
Dean Herbert
464797fecf Allow ModIcon to be constructed using an IMod 2021-09-10 12:43:12 +09:00
Dean Herbert
c3531e1361 Move more specification from Mod to IMod 2021-09-10 12:42:53 +09:00
Dean Herbert
719392de39 Change CreateInstance to use Activator.CreateInstance instead of clone 2021-09-10 12:05:10 +09:00
Dean Herbert
cf633973a9 Refactor exposed mod retrieval methods for better safety 2021-09-10 11:09:13 +09:00
Dean Herbert
2edb851008 Add ability to lookup mod from a type specification 2021-09-09 16:50:59 +09:00
Dean Herbert
4d0530ca9d Add new methods to ruleset for quicker mod lookups 2021-09-09 16:46:14 +09:00
Dean Herbert
693ecdf62a Refactor some incorrect/outdated terminology 2021-09-06 21:32:43 +09:00
Dean Herbert
3c7a34bdbd Move mania-specific conversion to converter 2021-09-06 21:06:13 +09:00
Dean Herbert
766d789845 Rename ApproachRate to ScrollSpeed for now (to reduce complexity/confusion) 2021-09-06 21:06:13 +09:00
Dean Herbert
0500cd578a Merge branch 'master' into no-more-difficulty-control-points-info 2021-09-06 21:06:12 +09:00
Dean Herbert
25420af078 Rename method to drop redundant ruleset suffix 2021-09-05 13:34:23 +09:00
Dean Herbert
6894ed3426 Fix new ordering of retrieval meaning EndTime is not available in time 2021-09-03 17:11:12 +09:00
Dean Herbert
74f385bad8 Assign default control points earlier in HitObject construction 2021-09-03 17:11:12 +09:00
Dean Herbert
1aff4c2238 Ensure all hitobject level control points are populated before calling virtual defaults application 2021-09-03 17:11:12 +09:00
Dean Herbert
d587dc6203 Populate new approach rate where required 2021-09-03 17:11:12 +09:00
Dean Herbert
d4e5a612ea Update IPositionalSnapProvider to take a HitObject as reference, rather than raw time
This allows fetching the correct `DifficultyControlPoint` from the
hitobject. Nothing more.
2021-09-03 17:11:12 +09:00
Dean Herbert
a3d9ab1e2e Move approach rate to EffectControlPoint 2021-09-03 16:58:16 +09:00
Dean Herbert
b41b1e2394 Write out DifficultyControlPoints into HitObjects 2021-09-03 16:58:16 +09:00
Bartłomiej Dach
ce1912781e
Add extension point for ruleset-specific beatmap setup sections 2021-09-02 23:29:14 +02:00
Dean Herbert
cdd0262ca1
Merge pull request #14598 from smoogipoo/adjust-classic-scoring
Make classic scoring a constant multiple of standardised scoring
2021-09-02 19:18:03 +09:00
Dan Balasescu
6c649b7bbe
Merge branch 'master' into no-more-sample-control-points-info 2021-09-02 18:09:05 +09:00
smoogipoo
e2f7aaeb71 Fix 0 score with bonus-only maps 2021-09-02 17:00:13 +09:00
Dean Herbert
b907c2f4f6 Fix osu! judgements getting scaled twice over different durations 2021-09-02 16:31:43 +09:00
smoogipoo
31433c4b89 Apply @spaceman_atlas' quadratic factor 2021-09-02 16:26:17 +09:00
smoogipoo
bd0f385cdb Make classic scoring a constant multiple of standardised scoring 2021-09-01 14:53:11 +09:00
Dean Herbert
d988aa1680 Actually serialise SampleControlPoints along with HitObjects 2021-08-31 15:14:03 +09:00
Dean Herbert
ce0d7cce2d Merge branch 'remove-ijsonserializable' into no-more-sample-control-points-info 2021-08-31 14:40:54 +09:00
Dean Herbert
c25ab6835c Remove IJsonSerializable interface
Was pretty pointless and made it hard to use the custom serialisation
terms arbitrarily in tests.
2021-08-31 14:39:20 +09:00
Dean Herbert
4da2dca339 Apply the default SampleControlPoint if not externally provided
This is mostly to handle tests for now, as generally this should be
provided by an external source in all other cases.
2021-08-30 17:21:07 +09:00
Dean Herbert
ccacf56dd8 Move to legacy namespace 2021-08-30 17:14:53 +09:00
Dean Herbert
7257aae7f2 Move samples to LegacyControlPointInfo 2021-08-30 17:14:53 +09:00
Dean Herbert
4dd60e3299 Merge branch 'master' into taiko-drum-refacor 2021-08-30 14:12:52 +09:00
Dan Balasescu
a28bc9f6b2
Merge branch 'master' into path-control-point-bindable-removal 2021-08-27 09:37:37 +09:00
Bartłomiej Dach
2ef2af17eb
Merge branch 'master' into alternative-difficulty-bindable 2021-08-26 23:07:52 +02:00
Dean Herbert
15aa0458bc Use PausableSkinnableSound instead 2021-08-26 17:15:36 +09:00
Dean Herbert
ec85d7f356 Remove unused helper method 2021-08-26 17:15:23 +09:00
Dean Herbert
982c4eff14 Merge branch 'master' into taiko-drum-refacor 2021-08-26 17:13:14 +09:00
Dean Herbert
e32933eb54 Avoid Enum.GetValues in each score population pass 2021-08-26 13:37:53 +09:00
Dean Herbert
6dcd9427ac Remove bindable usage in PathControlPoint
This is quite a breaking change, but I think it is beneficial due to the large amount of usage of this class.

I originally intended just to remove the allocations of the two delegates handling the `Changed` flow internally, but as nothing was really using the bindables for anything more than a general "point has changed" case, this felt like a better direction.
2021-08-26 12:33:53 +09:00
Dean Herbert
fd78d0440b Update missed conditional 2021-08-25 17:00:32 +09:00
Dean Herbert
ccfff50c6f Apply fixes in line with issues found during testing
I was trying to be too smart with caching, but if the `Play` method was
not called often enough it would have a recent reference. Unfortunately
this requires a separate query to `Entries`, but is also a special case
(no future hitobjects).

This also removes the time-based checks (result status alone should be
all we care about).
2021-08-25 16:56:44 +09:00
Dean Herbert
ef2b5e1c51 Tidy up variable names and unused resolved properties 2021-08-25 16:56:44 +09:00
Dean Herbert
a1936b141b Refactor base class to allow correct usage in taiko drum 2021-08-25 16:56:44 +09:00
Dean Herbert
681215e5b5 Rewrite object lookup to use previous entry regardless
This changes the fallback logic to always prefer the previous resolved
lifetime entry rather than fallback to the first entry ever. I think
this is more correct in all cases.

Also rewrites the inline comments to hopefully be easier to parse.
2021-08-25 16:56:44 +09:00
Dean Herbert
4a294d4de4 Optimise fallback logic to reduce lookups to bare minimum 2021-08-25 16:56:44 +09:00
Dean Herbert
6aa894e55e Split out separate component 2021-08-25 16:56:44 +09:00
Salman Ahmed
84637b59ef Define DifficultyBindableWithCurrent and use in SliderControl 2021-08-25 07:40:41 +03:00
smoogipoo
956c1cc216 Merge branch 'master' into activity-on-multiplayer-screens 2021-08-24 12:33:34 +09:00
Salman Ahmed
956112eb10 Reword comment and remove brackets 2021-08-22 12:40:41 +03:00