1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-19 20:33:05 +08:00
Commit Graph

4227 Commits

Author SHA1 Message Date
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
Michael Malloy
9cd0a182f6
Add null check for Android ruleset loading 2021-08-22 00:38:48 -05:00
Salman Ahmed
072560ba3e Remove leftover unused using 2021-08-19 07:17:43 +03:00
Salman Ahmed
102320f8ae Merge branch 'master' into mod-settings-difficulty-cache 2021-08-19 06:35:13 +03:00
Salman Ahmed
1ae4a1910a Cache mod settings rather than fetching everytime 2021-08-18 09:17:42 +03:00
Salman Ahmed
8c5d99ab21 Override CreateInstance() in osu! bindable subclasses
Three bindables are left which don't have this overriden due to them
already not having a value-only constructor and not supporting
`GetBoundCopy()` properly:
 - `BeatmapDifficultyCache.BindableStarDifficulty`.
 - `TotalScoreBindable`
 - `TotalScoreStringBindable`

I could add support for them by passing the required data to them, as
they seem to be able to have that shared, but I'm hesitant to support
something which was already broken and never used, not sure.
2021-08-18 04:19:58 +03:00
Nathan Alo
eaca331170 apply suggestions 2021-08-18 08:13:53 +08:00
smoogipoo
1e2c0031d7 Remove unused usings 2021-08-17 13:34:44 +09:00
Salman Ahmed
060ba0692d Add hash code support for Mod 2021-08-17 04:27:04 +03:00
Xexxar
61045bd087 adjusted code comments 2021-08-16 22:36:14 +00:00
Xexxar
ae076c9a4e merged latest ppy/master 2021-08-16 22:20:12 +00:00
Xexxar
176b3e7533 changed decay system to allow for customizing the currentStrain 2021-08-16 22:14:29 +00:00
Salman Ahmed
855fff1486 Fix DifficultyAdjustSettingsControl.SliderControl not following up with the current pattern
This was causing any `ValueChanged` event bind (such as the one in
`SettingsItem` to invoke `SettingsChanged`) to be overwritten when
`Current` is set afterwards.
2021-08-16 12:47:58 +03:00
Nathan Alo
c56b34d2da apply code inspection fixes 2021-08-16 07:06:23 +08:00
Nathan Alo
cc3468b4ab apply suggestions
- make `UserActivity.InGame` and derive that to `InSoloGame` and `InMultiplayerGame`
- rename `SoloGame` to `InSoloGame`
- rename `MultiplayerGame` to `InMultiplayerGame`
2021-08-16 06:32:33 +08:00
emu1337
29a22bd11f added rhythm multiplier for strain sections 2021-08-15 20:48:00 +02:00
Nathan Alo
4ed06a1021 apply suggestions 2021-08-14 22:39:12 +08:00
PercyDan
6ecc728c01
Remove override 2021-08-12 10:27:36 +08:00
PercyDan
d80a2dcca7
Missed one 2021-08-12 10:14:01 +08:00
PercyDan
18ecd8758b
Make Perfect auto restart toggleable 2021-08-12 10:12:35 +08:00
PercyDan
4706dcf525
Merge branch 'master' of https://hub.fastgit.org/ppy/osu into auto-restart 2021-08-11 20:18:05 +08:00
ekrctb
c63dfa21e1 Always initialize DHO transforms on LoadComplete
With the previous commit, the transform application is skipped when the state is already changed. But it turns out the previous commit breaks slider animation in the standard editor. This is probably due to the transforms are applied before nested hit objects are added.
2021-08-10 16:34:38 +09:00
ekrctb
f262f288fc Fix DHO state is overwritten to Idle on LoadComplete
The state may already be changed before `LoadComplete` is called because DHO is already added to the draw hierarchy.
2021-08-06 19:58:46 +09:00
Dan Balasescu
472925180a
Merge branch 'master' into fix-muted-dim-factor 2021-08-04 12:00:49 +09:00
smoogipoo
2af827f913 Increase TimeRange max value 2021-08-02 19:37:45 +09:00
Dan Balasescu
0089cdb0ca
Merge branch 'master' into fix-muted-dim-factor 2021-08-02 12:26:31 +09:00
Dan Balasescu
cd0e7223a6
Merge pull request #14092 from bdach/proxied-judgement-layer-ordering
Ensure proxied judgement content is correctly depth-ordered
2021-08-02 10:40:37 +09:00
Salman Ahmed
fb5ef7d2d2 Remove brackets 2021-08-01 20:59:51 +03:00
Salman Ahmed
a26e7b2680 Limit combo count to minimum 1 when using inversed
Avoids making the mod of no effect.
2021-08-01 20:59:31 +03:00
Salman Ahmed
ce7987dac7 Clarify 0 final combo indicates always muted audio 2021-08-01 20:19:44 +03:00
Salman Ahmed
1e3173bf44 Fix muted dim factor not considering "0 divided by 0" case 2021-08-01 20:19:43 +03:00
Salman Ahmed
f12e66052c Reword outdated doc 2021-08-01 19:22:33 +03:00
Salman Ahmed
ac930b8918 Fix judgement processors provided to mods while not completely loaded 2021-08-01 19:16:30 +03:00
Bartłomiej Dach
f868a201f5
Ensure proxied judgement content is correctly depth-ordered 2021-08-01 15:21:31 +02:00
Dean Herbert
53c901bfa8 Expose DrawableRuleset audio adjustments as non-container 2021-07-31 15:47:54 +09:00
Dean Herbert
29328bdf7f Use metronome's audio adjustments directly 2021-07-31 15:03:26 +09:00
Dean Herbert
b01b0d711f Merge branch 'master' into mute-mod-improvements 2021-07-31 14:55:44 +09:00
Salman Ahmed
397c73e786 Add audio adjustment support to Metronome 2021-07-31 02:16:02 +03:00
Dean Herbert
cd516c4ac7 Fix regressed metronome handling 2021-07-30 19:38:43 +09:00
Dean Herbert
d5e68f53b5 Change some defaults and always tween 2021-07-30 17:38:04 +09:00
Dean Herbert
bdc5eb6d3d Add ability to also mute hitsounds 2021-07-30 17:25:01 +09:00
Dean Herbert
0c3f1195e9 Allow audio adjustments to be applied to DrawableRulesets 2021-07-30 17:25:01 +09:00
Dean Herbert
3cfd235b7f Add tween when missing to avoid sudden volume difference 2021-07-30 16:10:20 +09:00
Dean Herbert
b399ddaea0 Add inverse setting 2021-07-30 16:10:10 +09:00
Dean Herbert
a2f3edbfc0 Fade track volume out as combo increases 2021-07-30 15:49:11 +09:00
Henry Lin
888e8f1c80 Use shared metronome class 2021-07-29 21:18:07 +08:00
Henry Lin
7251c28c4a Merge branch 'master' into mod-muted 2021-07-29 21:14:03 +08:00
Henry Lin
935984d200 Rename MetronomeBeatContainer to Metronome 2021-07-29 15:17:21 +08:00
Henry Lin
18e760ee91 Extract metronome from OsuModTarget 2021-07-29 14:52:18 +08:00
Henry Lin
0620cd130e Change mod description 2021-07-29 14:41:47 +08:00
Henry Lin
58bbe9db7e Added muted mod 2021-07-28 18:21:08 +08:00
Gabe Livengood
49160e4482
review modifications: maniamodmirror inheritance, reflection utilities, vertical flip option 2021-07-26 10:46:41 -04:00
Gabe Livengood
2e1cd4a389
remove accidental tab characters 2021-07-25 21:26:21 -04:00
Gabe Livengood
eb585a6120
Add "Mirror" mod 2021-07-25 20:40:50 -04:00
Dean Herbert
50a2abbe7f
Merge pull request #12683 from frenzibyte/legacy-beatmap-combo-offset
Apply combo offsets "colour hax" only on beatmap skins
2021-07-23 14:30:18 +09:00
Salman Ahmed
0b3b9e35ba Also update colours once on DrawableHitObject 2021-07-23 07:32:56 +03:00
Salman Ahmed
8600a3bf5b Replace "offset" term in combo index documentations with "index" instead 2021-07-23 07:31:03 +03:00
Dean Herbert
3392086d1c
Merge pull request #13984 from ekrctb/catch-editor-reverse
Implement "reverse pattern" in catch editor
2021-07-23 01:12:13 +09:00
Salman Ahmed
523c154f15 Add ComboIndexWithOffsetsBindable and bind similar to ComboIndexBindable 2021-07-22 16:40:33 +03:00
ekrctb
cc01b9e639 Extract SliderPath reverse logic to be used in other rulesets 2021-07-22 16:14:43 +09:00
Dean Herbert
399c3b0be8 Rename property, reword xmldoc and improve readability of update code 2021-07-21 17:32:56 +09:00
emu1337
84fd59777c Merge branch 'master' into diffspike-balance 2021-07-20 19:39:41 +02:00
Salman Ahmed
9d92b795fa Revert making ComboOffsets legacy and define BeatmapSkinComboIndex instead 2021-07-20 14:15:43 +03:00
Salman Ahmed
554652b033 Merge branch 'refactor-combo-colour-retrieval' into legacy-beatmap-combo-offset 2021-07-20 10:11:52 +03:00
Salman Ahmed
1af230c48c Merge branch 'master' into refactor-combo-colour-retrieval 2021-07-20 10:08:25 +03:00
Dan Balasescu
5ef1fe6948
Merge branch 'master' into fix-replay-date 2021-07-19 21:58:37 +09:00
Dan Balasescu
f3bcaf7f11
Merge pull request #13929 from peppy/i-deep-cloneable
Create a deep clone of score for score submission purposes
2021-07-19 21:58:27 +09:00
Dean Herbert
b3f60c8253 Fix date being updated on replays unexpectedly 2021-07-19 19:28:35 +09:00
Dean Herbert
23ef666f34
Merge pull request #13887 from ekrctb/legacy-converted-y
Preserve Y position of hit objects in osu!catch
2021-07-19 18:48:23 +09:00
Dan Balasescu
473011070f
Merge pull request #13908 from peppy/editor-disallow-placement-when-untimed
Fix editor composer allowing object placement without timing present
2021-07-19 18:37:19 +09:00
Dean Herbert
b29209d13f Ensure tool is always set back to select tool when beatmap becomes untimed 2021-07-19 17:08:40 +09:00
Dean Herbert
bde35d9f21 Rename radio button classes to be local to editor 2021-07-19 16:57:12 +09:00
Dean Herbert
3c028ce05c Add IDeepCloneable interface and update existing CreateCopy methods to use it 2021-07-19 12:54:17 +09:00
Bartłomiej Dach
fb5d25405e
Replace calls to obsoleted GetOrDefault() extension 2021-07-18 21:52:16 +02:00
Dean Herbert
eac9b1ec7e Disable toolbox composition buttons when beatmap is not timed 2021-07-17 02:30:13 +09:00
ekrctb
7f432665e5 Preserve Y position of hit objects in osu!catch 2021-07-14 14:38:38 +09:00
Dean Herbert
ed29646291 Remove IApplicableToDifficulty.ReadFromDifficulty
This was added specifically for `ModDifficultyAdjust`, but turned out to
be more of a headache than we expected. We have since removed usage and
would hope that this is not required by any other mods.

Opting for complete removal rather than obsoletion, as we discovered
this was already broken in multiple cases, with fixes being quite
logically complex.

If you happen to be a ruleset developer relying on this, open an issue
and we'll talk you through a better approach (or check what
`ModDifficultyAdjust` is doing now for an example).
2021-07-14 12:32:16 +09:00
Dean Herbert
2436ebb6d3
Merge pull request #13874 from Naxesss/short-object-checks
Add object duration checks
2021-07-13 19:01:02 +09:00
Naxess
3a5912e35e Add new checks to verifiers 2021-07-13 10:53:25 +02:00
Naxess
6da2a3d51f Add zero-length objects check and tests 2021-07-13 10:50:11 +02:00
Dean Herbert
35841fa4f7
Merge branch 'master' into fix-difficulty-bindable-bind-order 2021-07-13 13:42:53 +09:00
Dean Herbert
5cff379cd9
Merge pull request #13860 from smoogipoo/fix-bindable-ctor
Fix DifficultyBindable not binding correctly and not having default ctor
2021-07-13 13:42:44 +09:00
Naxess
dc4285582b Fix misplaced "f" in issue message 2021-07-13 06:07:04 +02:00
Naxess
c8f58cbf6c Add audio in video check and tests 2021-07-13 04:17:41 +02:00
Naxess
a4a1919842 Add too short audio files check and tests 2021-07-13 03:46:45 +02:00
Naxess
0a8fd01b99 Add zero byte check and tests 2021-07-13 03:45:21 +02:00
Dan Balasescu
351a46b379
Merge pull request #13823 from ekrctb/catch-editor-tests
Add some tests for catch editor blueprints
2021-07-13 08:27:41 +09:00
Bartłomiej Dach
cce4a4dc31 Fix incorrect value copy order in BindTo() 2021-07-12 22:27:36 +02:00
smoogipoo
4b393209ec Implement UnbindFrom() 2021-07-12 17:33:29 +09:00
smoogipoo
242982730f Fix incorrect DifficultyBindable binding implementation 2021-07-12 17:09:09 +09:00
Dean Herbert
a6258d705e Make CurrentNumber internal 2021-07-12 11:26:30 +09:00
Bartłomiej Dach
32b4f5fbd6 Do not store direct references to original bindable
`DifficultyAdjustSettingsControl` and its inner `SliderControl` were
holding different references to `DifficultyBindable`s from the
difficulty adjust mod, therefore leading to bindings being lost to the
framework-side automatic unbind logic if the mod was toggled off and
back on in rapid succession.

Resolve by adding a shadowed implementation of `GetBoundCopy()` and
using it to isolate the controls from the mod bindable.
2021-07-11 15:28:13 +02:00
Dean Herbert
741062a6da Simplify bindable update methods 2021-07-09 13:58:44 +09:00
Dean Herbert
e0277763d0 Refactor DifficultyAdjustSettingsControl to help with readability 2021-07-09 13:50:07 +09:00
Dean Herbert
f9cd7f10d8 Allow null values for ReadCurrentFromDifficulty
As long as this isn't a constructor parameter it feels best to
gracefully handle omission. Realistically having it in the ctor is the
best move, but it doesn't feel great in line with the other parameters
passed in via object initalisers.
2021-07-09 13:26:01 +09:00
Dean Herbert
90326f8864 Standardise variables 2021-07-09 13:24:26 +09:00
Dean Herbert
b7803b889e Rename control class to be more descriptive 2021-07-08 20:37:38 +09:00
Dean Herbert
ba939c0b65 Simplify serialisation edge case by moving to Value override 2021-07-08 17:49:00 +09:00
Dean Herbert
52ea62e3b2 Add more comments and xmldoc 2021-07-08 17:49:00 +09:00
Dean Herbert
88b00123f6 Use existing reflection methods to avoid manual binding of ExtendedLimits 2021-07-08 17:49:00 +09:00
Dean Herbert
bd7c334588 Avoid the need for per-settings control classes 2021-07-08 17:49:00 +09:00
Dean Herbert
a6e94dd491 Add back extended limits support 2021-07-08 17:49:00 +09:00
Dean Herbert
c4313d6e96 Initial implementation of new flow (only working for approach rate) 2021-07-08 17:48:08 +09:00
Dean Herbert
0e4f4a6fde Initial storage changes 2021-07-08 14:28:13 +09:00
ekrctb
663ffae42f Fix hit object selection blueprint potential null reference 2021-07-08 14:19:00 +09:00
Dan Balasescu
d2722f1523
Merge branch 'master' into ruleset-shaders 2021-07-07 15:44:30 +09:00
PercyDan54
e1c646b9b2
Remove redundant arguments 2021-07-05 23:52:39 +08:00
Derrick Timmermans
216e52d6d0
Avoid using single letter variable names 2021-07-04 23:24:17 +02:00
Derrick Timmermans
32b068fbdc
Fix typo causing nested windows to be ignored 2021-07-04 21:50:58 +02:00
Henry Lin
6a0c5b54c3 Fix obsolete message in Mod.Ranked 2021-07-02 15:55:25 +08:00
Dean Herbert
0396a03bbc Rename Mod.Ranked back to avoid breaking ruleset API 2021-07-02 12:50:58 +09:00
Dean Herbert
f7aba7360a
Merge pull request #13654 from Henry-YSLin/fix-invisible-number-box
Refactor `SeedSettingsControl` and `SettingsNumberBox`
2021-06-28 16:07:30 +09:00
Dean Herbert
f939e2603a Merge branch 'master' into localisable-tooltips 2021-06-28 15:29:42 +09:00
Henry Lin
0cceef8da5 Moved the string to int? conversion logic into SettingsNumberBox 2021-06-28 11:00:07 +08:00
Dean Herbert
a1e8cc5444
Merge pull request #13669 from Naxesss/hitsound-checks
Add hitsound checks
2021-06-28 03:13:43 +09:00
Naxess
9f9e96ce9e Add check for spanDuration <= 0 prior to division 2021-06-27 15:40:09 +02:00
Naxess
a4a5325b73 Improve acceptable difference for repeat edges
Likelihood that `spanDuration` is greater than E+7 is quite low in any realistic case, so this should work fine.
2021-06-27 15:39:31 +02:00
Naxess
4cfa0ae5ec Improve precision for repeat edges 2021-06-27 03:26:35 +02:00
Naxess
2cd7eda3c4 Add "or equal to" to volume threshold xmldocs 2021-06-27 02:30:12 +02:00
Naxess
0c0fd291d9 Order hitobjects by endtime 2021-06-27 01:25:03 +02:00
Naxess
4796b1b208 Use local variables for hasHitsound & couldHaveHitsound 2021-06-27 00:04:30 +02:00
Naxess
5bc08ebadb Rename hasHitsounds -> mapHasHitsounds 2021-06-26 23:49:25 +02:00
Naxess
d29e6f4695 Add negligible template to PossibleTemplates 2021-06-26 23:49:06 +02:00
Naxess
1913084342 Use HitSampleInfo.AllAdditions instead of new list 2021-06-26 23:48:28 +02:00
Naxess
f78cc9397e Factor out edge type logic 2021-06-26 20:45:31 +02:00
Naxess
51147405c5 Make || and && priority explicit 2021-06-26 20:44:39 +02:00
Naxess
4b436b774d Add few hitsounds check 2021-06-26 19:20:46 +02:00
Naxess
d8117fa730 Add muted objects check 2021-06-26 19:20:34 +02:00
Henry Lin
3b822cd5cf Refactor SeedSettingsControl and related controls 2021-06-26 11:19:14 +08:00
Bartłomiej Dach
50c27d2635 Update usages of IHasTooltip in line with framework localisation changes 2021-06-25 19:10:04 +02:00
Henry Lin
31c786e1c3 Use SettingsNumberBox.NumberBox instead of OsuNumberBox 2021-06-25 09:51:34 +08:00
ekrctb
e1b2c63e09 Add IApplicableToBeatmapProcessor mod interface 2021-06-23 14:46:30 +09:00
Dean Herbert
a1da9c5ee3
Merge pull request #13626 from Henry-YSLin/IHasSeed-interface
Extract `SeedSettingsControl` to `IHasSeed` interface
2021-06-23 14:10:34 +09:00
Dean Herbert
54084f8a9c Move SeedSettingsControl to own file 2021-06-23 13:40:05 +09:00
smoogipoo
6fd020d91d Remove unnecessary public accessibility
All interface members are implicitly public.
2021-06-23 12:00:57 +09:00
Salman Ahmed
2b1f461d79 Pass empty resource store for FallbackShaderManager base constructor 2021-06-22 12:36:45 +03:00
Dean Herbert
1b0aadcc6f Merge branch 'master' into transformers-per-skin 2021-06-22 16:03:15 +09:00
Henry Lin
fc224c53f4 Remove extra usings 2021-06-22 14:49:37 +08:00
Henry Lin
3745101f32 Extract seed setting control to IHasSeed 2021-06-22 14:43:41 +08:00
Salman Ahmed
67f0344c0c Add support for loading shaders from ruleset resources 2021-06-20 23:07:44 +03:00
Dean Herbert
3f336d88ec
Merge pull request #11461 from peppy/realm-key-binding-store
Add initial realm database implementation with KeyBindingStore migration
2021-06-19 02:49:41 +09:00
Dean Herbert
89c27dcb10
Merge pull request #13517 from ekrctb/initial-entry
Allow setting `Entry` of `PoolableDrawableWithLifetime` (including `DrawableHitObject`)
2021-06-19 00:03:41 +09:00
Dean Herbert
2dadc9d686 Remove unused using statement 2021-06-18 19:39:01 +09:00
Dean Herbert
78c5ccda60 Fix renaming a ruleset DLL causing a startup crash 2021-06-18 19:32:40 +09:00
smoogipoo
42c5a962fb Add xmldoc remark 2021-06-18 19:27:10 +09:00
smoogipoo
36d51d5117 Don't set entry immediately 2021-06-18 19:23:37 +09:00
smoogipoo
36d2199a02 Add exception on Apply() while loading 2021-06-18 19:20:57 +09:00
Dean Herbert
c369beeaaa Merge branch 'master' into realm-key-binding-store 2021-06-18 16:52:35 +09:00
Dan Balasescu
2cd72a92e8
Merge pull request #13499 from ekrctb/fix-mania-editor-crash
Rewrite mania selection blueprint to use only `HitObject` (no `DrawableHitObject`) for layout
2021-06-18 15:10:28 +09:00
Dan Balasescu
cdc1c60fab
Merge branch 'master' into fix-mania-editor-crash 2021-06-18 13:49:25 +09:00
smoogipoo
97cd1217a4 Move IApplicableToDrawableHitObjects to its own file 2021-06-18 13:06:13 +09:00
Dan Balasescu
6cec1145e3
Merge pull request #13523 from ekrctb/applicable-to-dho
Reduce boilerplate of `IApplicableToDrawableHitObjects` by taking a single DHO instead of an enumerable
2021-06-17 19:59:06 +09:00
Dean Herbert
9495f87f04 Remove redundant NotNull attributes in nullable classes 2021-06-17 16:07:32 +09:00
ekrctb
e7954ecb60 Use property instead of backing field consistently 2021-06-17 10:31:20 +09:00
ekrctb
9dcd0bf311 Remove IPlayfieldProvider by caching Playfield 2021-06-17 10:15:24 +09:00
Bartłomiej Dach
418dbf3f3e
Merge branch 'master' into fix-mania-editor-crash 2021-06-16 18:26:33 +02:00
ekrctb
b6a9fa9999 Merge branch 'master' into applicable-to-dho 2021-06-16 22:04:10 +09:00
Dan Balasescu
6613301588
Merge branch 'master' into refactor-scrolling-hoc-2 2021-06-16 19:20:11 +09:00
ekrctb
c59a3ce83f Obsolete plural IApplicableToDrawableHitObjects 2021-06-16 18:52:16 +09:00
ekrctb
af80418ee8 Implement IApplicableToDrawableHitObject for mods
A breaking change in `ModWithVisibilityAdjustment` if the method was overriden.
2021-06-16 18:52:01 +09:00
ekrctb
67d8e0059f Use singular IApplicableToDrawableHitObject for consumers 2021-06-16 18:47:04 +09:00
ekrctb
e69bb67afe Add IApplicableToDrawableHitObject that is taking a single DHO
Less cumbersome to implement than old version taking an enumerable. The implementation was always using `foreach` for the enumerable.
The new interface is not used yet.
2021-06-16 18:42:28 +09:00
Dean Herbert
4b45d8318e
Merge branch 'master' into transformers-per-skin 2021-06-16 16:37:28 +09:00
ekrctb
117e94bc94 Allow setting Entry of PoolableDrawableWithLifetime
It is more convenient than using the constructor because the only limited kind of expression is allowed in a base constructor call.
Also, the object initializer syntax can be used.
2021-06-16 16:00:08 +09:00
Dean Herbert
66efc3c4de
Merge branch 'master' into realm-key-binding-store 2021-06-16 13:23:13 +09:00
emu1337
be68950c30 refactoring 2021-06-16 03:34:46 +02:00
Dean Herbert
acc06ca398 Merge branch 'master' into realm-key-binding-store 2021-06-16 02:14:58 +09:00
Dan Balasescu
e9d4ee3c87
Merge branch 'master' into enhance-mod-settings-text-box-visibility 2021-06-15 16:09:55 +09:00
ekrctb
ef96ceb4ab Introduce IPlayfieldProvider 2021-06-15 14:43:04 +09:00
ekrctb
bbf0022689 Use natural anchor for TimeAtPosition and PositionAtTime
The natural anchor is the end of the scrolling direction (e.g. Bottom for Down scrolling).
2021-06-15 13:15:20 +09:00
Bartłomiej Dach
cb1e2e3d97 Improve xmldoc 2021-06-14 21:54:55 +02:00
ekrctb
660bf50dc7 Clarify multiple coordinate systems
- Fix wrong position is set for DHOs for down/right scrolling direction.
2021-06-14 13:13:27 +09:00
ekrctb
09f1cbde7e Fix TimeAtPosition doc comment 2021-06-14 13:13:27 +09:00
ekrctb
fdb09ef4d7 Simplify flipPositionIfRequired using scrollLength 2021-06-14 13:13:27 +09:00
ekrctb
8cf4454780 Use Direction enum instead of int
The property is named `scrollingAxis` to distinguish from `direction`, which is of `ScrollingDirection` type (unfortunate name crash).
2021-06-14 13:13:27 +09:00
Pasi4K5
ef9cb2c958 Rename nested classes 2021-06-12 18:37:31 +02:00
Pasi4K5
b79d57b68c Move OsuSettingsNumberBox into SettingsNumberBox 2021-06-12 17:57:40 +02:00
Pasi4K5
c728f673d6 Rename classes 2021-06-12 17:37:01 +02:00
Pasi4K5
29f3880415 Move classes into SettingsTextBox 2021-06-12 17:34:02 +02:00
Pasi4K5
fe39a47797 Add OsuModSettingsTextBox and OsuModSettingsNumberBox 2021-06-12 00:34:53 +02:00
Dan Balasescu
3389c4830b
Merge branch 'master' into refactor-scrolling-hoc-1 2021-06-11 20:35:19 +09:00
ekrctb
af3f253b21 Refactor ScrollingHitObjectContainer and expose more useful methods 2021-06-11 18:28:48 +09:00
Bartłomiej Dach
296761ade5 Add missing CurrentSkin null check in DHO disposal 2021-06-11 09:18:58 +02:00
Dean Herbert
562cfe8703 Fix filename not matching type rename 2021-06-11 14:34:18 +09:00
Dean Herbert
bc3b7233ab Show osu!taiko centre/rim colouring in editor timeline
Closes #13443.
2021-06-11 14:17:30 +09:00
Salman Ahmed
09a2d008d2 Refrain from attempting to transform null skins 2021-06-10 16:36:45 +03:00
Dan Balasescu
35d5632355
Merge pull request #13378 from Syriiin/diffcalc/refactor/auto-properties
Refactor DifficultyAttributes to use auto properties over public fields
2021-06-10 18:42:11 +09:00
Salman Ahmed
dde84e5cbd Merge branch 'master' into transformers-per-skin 2021-06-10 11:58:52 +03:00
Dan Balasescu
a44fd887ee
Merge branch 'master' into no-unranked-display 2021-06-10 17:09:46 +09:00
Dean Herbert
9044a20120 Merge branch 'master' into realm-key-binding-store 2021-06-10 13:58:08 +09:00
Salman Ahmed
cf40282f1f Convert LegacySkinTransformers to accept raw ISkins rather than a full ISkinSource 2021-06-09 22:49:31 +03:00
PercyDan54
510fc93d76
Merge branch 'master' of https://github.com/ppy/osu into auto-restart 2021-06-09 18:05:47 +08:00
Dean Herbert
b8df3fff9e
Fix incorrect method referenced in xmldco
Co-authored-by: ekrctb <32995012+ekrctb@users.noreply.github.com>
2021-06-09 14:20:01 +09:00
Dean Herbert
d0e9f8ef90 Replace and obsolete Ranked flag with IsUserPlayable 2021-06-09 14:17:03 +09:00
Dean Herbert
62199a38a8 Add one missing obsoletion removal date 2021-06-09 14:11:50 +09:00
Dean Herbert
f41e34ae2c Remove more obsoleted members 2021-06-09 14:10:48 +09:00
Dean Herbert
a87226ab10 Remove obsoleted DrawableJudgement methods
Undated, but change was made on 2020-11-18.
2021-06-09 14:09:23 +09:00
Samuel Cattini-Schultz
f1bef989b7 Refactor DifficultyAttributes to use auto properties over public fields 2021-06-08 19:43:59 +10:00
Dan Balasescu
57a38374db
Merge branch 'master' into fix-spectator-frame-conversion 2021-06-04 21:17:40 +09:00
Dan Balasescu
b283c48abb
Merge branch 'master' into factor-out-hoc 2021-06-04 15:31:35 +09:00
Dean Herbert
23096c58bb
Merge branch 'master' into fix-spectator-frame-conversion 2021-06-04 15:06:15 +09:00
Dan Balasescu
50c60c791f
Merge pull request #13322 from Pasi4K5/seed-for-all-random-mods
Add seed option for all random mods
2021-06-04 11:26:13 +09:00
Dean Herbert
d444fed46f Detach gameplay score from replay recorder before importing
Closes #13320.
2021-06-04 02:00:02 +09:00
Pasi4K5
7a4fc9ffc8 Move seed to base class 2021-06-03 18:16:11 +02:00
smoogipoo
e887807ae7 Apply review fixes 2021-06-03 18:32:05 +09:00
smoogipoo
c3280083a2 Merge branch 'master' into fix-spectator-frame-conversion 2021-06-03 17:42:01 +09:00
Dan Balasescu
15b43beef1
Merge pull request #11857 from Syriiin/diffcalc/refactor/catch-clockrate-effects
Refactor catch Movement skill to not require explicit clockrate usage
2021-06-03 17:29:27 +09:00
smoogipoo
420df124b5 Add framestable-bypassing seek for spectator 2021-06-03 17:27:21 +09:00
Samuel Cattini-Schultz
f51413ead9 Refactor to pass clockrate in constructor rather than deriving from mods 2021-06-03 16:09:42 +10:00
ekrctb
b321b20e9d Remove OnAdd/OnRemove of HitObjectContainer
Instead, override `AddDrawable`/`RemoveDrawable`.
2021-06-03 15:00:16 +09:00
ekrctb
0ce7baa3f3 Make HitObjectContainer.Clear non-virtual
It just call `Remove` for all entries.
2021-06-03 15:00:16 +09:00
ekrctb
2c9e5b6c7e Replace EntryCrossedBoundary with more useful RemoveRewoundEntry property
It can be used for dynamically added entries.
2021-06-03 15:00:16 +09:00
ekrctb
fe2934db1d Factor out lifetime management logic of HitObjectContainer 2021-06-03 14:57:28 +09:00
Dan Balasescu
44b1102241
Merge branch 'master' into autoplay-pause-support 2021-06-03 13:26:00 +09:00
smoogipoo
d3d8941ec8 Make method internal 2021-06-02 11:11:41 +09:00
smoogipoo
8ee2b3a2d2 Merge branch 'master' into fix-scrolling-lifetime 2021-06-02 11:08:28 +09:00
Dan Balasescu
ac83450791
Merge pull request #13256 from ekrctb/update-lifetime-2
Update DHO lifetime on entry lifetime change
2021-06-02 11:07:54 +09:00
Dean Herbert
8a76d97b63 Remove replay logic from DrawableRuleset (and implement in DrawableEditorRulesetWrapper) 2021-06-02 11:06:30 +09:00
Dean Herbert
f14c0eae99 Fix editor no longer creating autoplay frames 2021-06-01 17:28:41 +09:00
ekrctb
40949f6c1b Simplify lifetime setter
Setting entry lifetime will cause `LifetimeChanged` event and `base.LifetimeStart`/`End` will be modified in the callback.
2021-06-01 14:46:43 +09:00
ekrctb
0f381f7758 Fix wrong code 2021-06-01 14:38:02 +09:00
ekrctb
86020adf64 Revert invalid code transformation 2021-06-01 14:28:23 +09:00
Dean Herbert
14570b6fb1 Merge branch 'master' into autoplay-pause-support 2021-06-01 14:19:21 +09:00
ekrctb
d5714e63b9 Apply code styling suggestions
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2021-06-01 13:17:30 +09:00
ekrctb
86d1ba7ef2 Remove unused IScrollingHitObject interface 2021-05-31 23:17:26 +09:00
ekrctb
ff04942295 Change timing of HitObjectContainer.OnAdd/OnRemove
Now, `OnAdd` is always invoked after the DHO is added to the container.
This change is required by `ScrollingHitObjectContainer` to compute origin adjusted lifetime when origin position is relative to the parent drawable size.
2021-05-31 20:56:25 +09:00
ekrctb
948a14a627 Merge branch 'simplify-shoc' into fix-scrolling-lifetime
# Conflicts:
#	osu.Game/Rulesets/UI/Scrolling/ScrollingHitObjectContainer.cs
2021-05-31 16:50:47 +09:00
ekrctb
86d1225aad Reset lifetime to initial lifetime when layout is invalidated 2021-05-31 16:47:10 +09:00
ekrctb
6d96846776 Remove scrollLength caching field
It was not clear when the field is updated.
2021-05-31 16:28:02 +09:00
ekrctb
742c5b442b Remove delay of lifetime update
The scheduling is no longer necessary because `OnAdd` is changed to not invoked immediately for non-pooled DHOs.
2021-05-31 16:24:13 +09:00
ekrctb
3cedc0824d Don't add nested hit objects to the sets
Only top-level hit objects are checked for layout computation caching.
Also, lifetime of nested hit objects are not managed by the HitObjectContainer.
2021-05-31 16:20:35 +09:00
ekrctb
56a0a24cba Make SetInitialLifetime public 2021-05-31 15:33:28 +09:00
ekrctb
e25cca6fbe Update drawable lifetime on entry lifetime change 2021-05-31 14:45:29 +09:00
Dan Balasescu
8c6277f0d8
Merge pull request #13235 from ekrctb/update-lifetime-1
Update hit object lifetime on `HitObject.DefaultsApplied`
2021-05-31 14:44:40 +09:00
ekrctb
0c101d2859
Apply comment rewording suggestion
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
2021-05-31 13:41:49 +09:00
ekrctb
abb77b95b4 Fix comment grammar 2021-05-30 13:06:28 +09:00
ekrctb
265dfe5416 Add test case of DHO setting LifetimeStart in OnApply 2021-05-28 21:51:48 +09:00
ekrctb
43bf734816 Reset lifetime on HitObject.DefaultsApplied 2021-05-28 21:35:26 +09:00
ekrctb
1d5e8f4a91 Fix wrong/misleading comment of InitialLifetimeOffset 2021-05-28 17:19:36 +09:00
Dean Herbert
122bb05aa8 Add a mention that OnApply/OnFree is performed after ApplyDefaults 2021-05-27 15:20:35 +09:00
Dean Herbert
a3c78674a1 Add new interface for autoplay mods 2021-05-25 18:09:24 +09:00
Dean Herbert
a249bb9e69 Merge branch 'master' into realm-key-binding-store 2021-05-25 17:18:33 +09:00
Dan Balasescu
774611f142
Merge pull request #12933 from peppy/fix-scroll-wheel-gameplay-bindings
Disallow using scroll wheel for gameplay bindings
2021-05-25 16:04:18 +09:00
Dean Herbert
57640810b5 Ignore certain banned InputKeys for gameplay purposes 2021-05-24 18:40:40 +09:00
Dan Balasescu
7a343c1576
Merge pull request #12915 from peppy/regenerate-replay-less
Ensure `RegenerateAutoplay` is only run once per frame
2021-05-24 17:25:42 +09:00
smoogipoo
7494ddeef4 Fix DHOs not receiving initial skin changed events 2021-05-24 14:07:40 +09:00
Dean Herbert
bbfd7ea23f Ensure RegenerateAutoplay is only run once per frame 2021-05-23 21:20:08 +09:00
Dan Balasescu
5ad41ded94
Merge branch 'master' into fix-dho-lmc 2021-05-21 19:11:57 +09:00
smoogipoo
6beeb7f7c4 Rename SpectatorStreamingClient -> SpectatorClient 2021-05-20 15:55:07 +09:00
ekrctb
0489ae719d Don't couple PoolableDrawableWithLifetime lifetime with its entry
It turns out the incompatibility with `LifetimeManagementContainer` causes more issues than anticipated.
2021-05-20 14:56:15 +09:00
Dean Herbert
6c4709e7b4 Fix PlacementBlueprint using the wrong beatmap when applying defaults
Closes #12855.
2021-05-19 18:34:07 +09:00
Dan Balasescu
ef81bdf63f
Merge branch 'master' into always-use-lifetime-entry 2021-05-18 20:10:12 +09:00
ekrctb
84a1a86c63 Revert "Use entry to calculate lifetime in ScrollingHOC"
This reverts commit 632bb70e
2021-05-18 19:55:31 +09:00
ekrctb
2c65b8fa93 Revert "Fix uninitialized scrollLength value is used"
This reverts commit 73dfb04d
2021-05-18 19:55:25 +09:00
Dean Herbert
a96603f025
Merge pull request #12782 from smoogipoo/rework-hitobject-blueprints
Rename hitobject blueprints and tie them to HitObjects
2021-05-18 16:30:58 +09:00
smoogipoo
882d54a8f8 Remove now unnecessary Apply() method 2021-05-18 14:26:26 +09:00
smoogipoo
e621cfc4ea Add Apply() method for applying new DHOs 2021-05-18 14:14:10 +09:00
smoogipoo
f1f3606fd0 Fix unresolved xmldocs 2021-05-18 13:11:58 +09:00
Dan Balasescu
9d423245d8
Fix up xmldocs
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2021-05-18 13:02:23 +09:00
Dean Herbert
a32f1ef35a
Merge pull request #12811 from PercyDan54/hidden-code-cleanup
Remove obsolete methods in `ModHidden` and apply few touches
2021-05-16 22:07:45 +09:00
Dean Herbert
bdcb1a624e
Merge pull request #12759 from Naxesss/beatmap-verifier-context
Encapsulate check arguments in context object
2021-05-15 15:39:12 +09:00
PercyDan54
166974506e
Duplicate implementions 2021-05-15 11:55:50 +08:00
PercyDan54
6e5c4ed7c6
Revert "Remove empty override"
This reverts commit a86a4bab91.
2021-05-15 11:45:14 +08:00
Bartłomiej Dach
628e7a71ed Ignore possible nulls in Type.GetType() calls
They're mostly used in extensibility scenarios, so everything happens in
runtime. There is no better resolution than to crash with a null
reference exception.
2021-05-15 00:09:34 +02:00
PercyDan54
a86a4bab91
Remove empty override 2021-05-14 21:55:32 +08:00
PercyDan54
67dfeeb1b7
Cleanup code in ModHidden 2021-05-14 21:29:13 +08:00
Dean Herbert
fcb226bd20 Add local variable for regular access to HitObjects 2021-05-14 16:23:45 +09:00
Naxess
a447f20095 Fix formatting of #nullable enable 2021-05-14 03:38:35 +02:00
Naxess
90e0b3374e
Add #nullable enable
Co-authored-by: Dean Herbert <pe@ppy.sh>
2021-05-14 03:34:50 +02:00
smoogipoo
ffb6135a1b Rework hitobject blueprints to take in hitobject models 2021-05-13 19:53:32 +09:00
Naxess
19800f5f7f Move IBeatmap arg into context 2021-05-13 11:24:22 +02:00
Naxess
b37cb3bdbe Change interpreted difficulty from bindable to regular value
There's no reason for why checks would need this to be bindable. A 1-directional binding is more appropriate.
2021-05-13 09:00:30 +02:00
Naxess
e7c7786db3
Merge branch 'master' into beatmap-verifier-context 2021-05-13 07:40:33 +02:00
Dean Herbert
5b71d8ca37
Merge pull request #12758 from Naxesss/verify-settings-ui
Add setting UI components to the verify screen
2021-05-13 14:35:35 +09:00
Bartłomiej Dach
1b579dd838 Extract invariant instantiation info extension method 2021-05-12 23:23:51 +02:00
Naxess
b7bc42e0d3 Rename "playableBeatmap" check arg to "beatmap"
The working beatmap is now in the context, so it's easier to distinguish beatmap type, hence no need for this prefix.
2021-05-12 02:34:16 +02:00
Naxess
64d96b06a6 Add interpreted difficulty info to BeatmapVerifierContext
Enables checks to make use of the difficulty level as shown in the settings UI.
2021-05-12 02:30:21 +02:00
Naxess
c13b93e6f1 Replace IWorkingBeatmap arg with BeatmapVerifierContext in checks
This simplifies passing of contextual information by enabling addition without needing to refactor lots of classes.

See next commit for example.
2021-05-12 02:29:18 +02:00
Naxess
75adec57eb Remove negligible default hidden TODO 2021-05-12 01:31:16 +02:00
Dean Herbert
2ecd638f7f Merge branch 'master' into skin-components-list 2021-05-10 18:13:10 +09:00
ekrctb
111b501ced Revert accidental removal of UTF-8 BOM 2021-05-07 18:04:38 +09:00
ekrctb
207f7f1e56 Rename FramedAutoGenerator<T> -> AutoGenerator<T> 2021-05-07 00:31:12 +09:00
ekrctb
ea35b72436 Remove unused IAutoGenerator interface 2021-05-06 22:57:07 +09:00
ekrctb
9be36230f9 Introduce AutoGenerator subclass for frame based replay generation 2021-05-06 21:59:11 +09:00
Dean Herbert
aff32b0d19 Merge branch 'master' into skin-components-list 2021-05-06 14:17:33 +09:00
Salman Ahmed
cd6d070b4a Consider "combo offsets" as legacy logic and separate from combo information 2021-05-05 07:43:08 +03:00
Salman Ahmed
eeeb001d62 Refactor combo colour retrieval logic to request skin lookups instead 2021-05-05 07:17:27 +03:00
ekrctb
aa42cf2fc0 Fix setting lifetime during KeepAlive is ignored 2021-05-04 16:56:48 +09:00
ekrctb
913fc8c3bc Revert the change of not adding non-pooled DHO to HOC until alive 2021-05-04 16:44:48 +09:00
ekrctb
36438175a0 Throw an exception if try to modify lifetime of PoolableDrawableWithLifetime without lifetime 2021-05-04 16:04:58 +09:00
Salman Ahmed
943c497397 Return back removed using 2021-05-03 02:02:14 +03:00
Salman Ahmed
b2130fc600 Fix replay frames sort instability 2021-05-03 01:58:44 +03:00
Dean Herbert
a551958eeb Move caching of IBeatmap to base DrawableRuleset 2021-05-01 21:32:45 +09:00
Justus Franklin Tumacder
fdf8c12947 Replace BeatDivisorFinder with GetClosestBeatDivisor 2021-05-01 11:57:47 +08:00
Justus Franklin Tumacder
ecb053b0de Merge branch 'master' of https://github.com/ppy/osu into justusft/mania-color-snap 2021-05-01 11:20:28 +08:00
Bartłomiej Dach
9cb55ca245
Merge branch 'master' into barrel-roll 2021-04-30 22:27:27 +02:00
Salman Ahmed
b145f46a0a
Merge branch 'master' into skin-components-list 2021-04-30 21:10:55 +03:00
Dan Balasescu
e6eea73b8b
Merge branch 'master' into basic-compose-checks 2021-04-30 23:41:46 +09:00
Dean Herbert
a1e64f4e3c Use the existing toolbox design 2021-04-30 14:41:06 +09:00
Dean Herbert
e69ec91c07 Add xmldoc for CurrentRotation 2021-04-30 11:25:39 +09:00
Andrei Zavatski
7bf3498e2a Calculate playfield scale locally 2021-04-30 02:49:19 +03:00
Andrei Zavatski
25e0fb1cf9 Refactor OsuModBarrelRoll to allow it's usage by other rulesets 2021-04-30 01:59:59 +03:00
Dean Herbert
9c62c90cfc Refactor SelectionBlueprint and MoveSelectionEvent to work in screen-space coordinates
Until now, the implementation of the overrides in `SelectionBlueprint`
have been confusing to the point where I would just implement by
trial-and-error (or copying from an existing implementation). This was
due to a combination of using "object" space coordinates
(ie. the thing the `Blueprint` is operating on) and screen-space coordinates.

This change switches all event related coordinates to screen-space,
which is how we already handle rotation/scale operations. With the
introduction of other editor types where the related objects are
drawables, this also makes a lot more sense.
2021-04-29 16:10:42 +09:00
Dean Herbert
5b009c21bb Merge branch 'master' into abstract-blueprint-handling 2021-04-29 16:10:22 +09:00
ekrctb
73dfb04df8 Fix uninitialized scrollLength value is used 2021-04-29 15:17:30 +09:00
ekrctb
632bb70e0f Use entry to calculate lifetime in ScrollingHOC
DHOs cannot be used to calculate lifetime, it is not created before the entry became alive.
2021-04-29 15:04:32 +09:00
ekrctb
c83c804057 Expose lifetime entries from HOC 2021-04-29 14:42:41 +09:00
ekrctb
5aa522b1c2 Completely delegate DHO lifetime to Entry lifetime
A downside is lifetime update is not caught by LifetimeManagementContainer if used.
2021-04-29 14:38:01 +09:00
ekrctb
799d2a3300 Replace failed mania test (pooling not accounted) with a more robust test
Also fix null reference in Playfield
2021-04-29 14:38:01 +09:00
ekrctb
d262956146 Always use LifetimeEntry to manage hit objects in HitObjectContainer
Previously, non-pooled DHOs were immediately added as children of the HOC when Add is called. Also, non-pooled DHOs were always attached to the HOC as children.
New behavior is that non-pooled DHOs are only added after CheckChildLifetime, and only attached to the HOC while the DHOs are alive.

- LifetimeManagementContainer inheritance of HOC is removed, as it is now all DHOs are "unmanaged" (previously `AddInternal(false)`).
- The signature of `Clear` is changed, and it is now always not disposing the children immediately.
2021-04-29 14:38:01 +09:00
Dean Herbert
f3c7694eeb Rename methods to match generally how these find-methods are named elsewhere 2021-04-28 16:57:52 +09:00
Dean Herbert
48d6c9ac4b Move snap/divisor helper methods to inside ControlPointInfo 2021-04-28 16:47:30 +09:00
smoogipoo
61b7dc1e06 Fix bonus-only maps having 700K base score 2021-04-28 03:42:29 +09:00
Dan Balasescu
5fc731967b
Merge pull request #12592 from ekrctb/fix-entry-lifetime
Fix Setting DHO's lifetime doesn't update its entry lifetime
2021-04-28 01:38:19 +09:00
smoogipoo
1281993f1f Fix bonus score not calculated from the correct statistics 2021-04-27 22:42:58 +09:00
Naxess
200352b750 Rename unsnap check templates 2021-04-27 13:56:05 +02:00
ekrctb
b87446a577 Simplify HitObjectLifetimeEntry logic a bit 2021-04-27 19:37:01 +09:00
Dean Herbert
2adc751e04
Merge pull request #12585 from LumpBloom7/Reset-DHO-Transforms-method
Add method to safely refresh DrawableHitObject transforms
2021-04-27 19:15:12 +09:00
Dean Herbert
7ec5ea1eb5 Remove hitobject terminology from base classes 2021-04-27 19:01:29 +09:00
Dean Herbert
dd3d8e5d03 Make SelectionHandler abstract to ensure things get implemented 2021-04-27 19:01:29 +09:00
Dean Herbert
f2e56bd306 Refactor editor selection/blueprint components to be generic 2021-04-27 19:01:29 +09:00
Derrick Timmermans
3ea55314f2
Update osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
2021-04-27 11:29:16 +02:00
ekrctb
3899e500d3 Adopt framework change of LifetimeEntry
Override SetLifetimeStart/SetLifetimeEnd separately to track individual assignment. It is necessary to ensure real lifetime is not lost when lifetime is partially updated.
2021-04-27 17:54:18 +09:00
ekrctb
c9e6ca5378 Use now-public Entry.SetLifetime method 2021-04-27 15:25:05 +09:00
ekrctb
a2c0951d94 Use overriding instead of hiding in HitObjectLifetimeEntry
Hidden properties are used when the type is the base class. It caused issues when `DrawableHitObject` logic is factored out to `PoolableDrawableWithLifetime` because it is using the base `LifetimeEntry`, not `HitObjectLifetimeEntry`.
2021-04-27 15:23:33 +09:00
Dean Herbert
ec1c336b0a Fix a couple of inspections 2021-04-27 13:23:14 +09:00
Naxess
7a6e9e5070 Change category of unsnap check to timing
Makes more sense, as this is typically the result of timing changes.
2021-04-27 02:32:57 +02:00
Naxess
9e49ecb573 Remove unused virtual keywords
Added these in a previous iteration, where I had the mania variant inherit this class.

No longer necessary as `IHasColumn` was used to make this check more generic.
2021-04-27 02:23:06 +02:00
Naxess
a3c1b1fd52 Fix accessibility of areConcurrent 2021-04-27 01:24:38 +02:00
Naxess
ce258febf6 Rename CheckUnsnaps -> CheckUnsnappedObjects
Will potentially have `CheckUnsnappedKiai` or similar later, so this is worth specifying.

Also consistent with `CheckConcurrentObjects`, which will likely have a `CheckConcurrentLines` later.
2021-04-26 20:32:44 +02:00
Naxess
b9e4f73f78 Add concurrent objects check to BeatmapVerifier 2021-04-26 20:28:59 +02:00
Naxess
a3570e18dd Add concurrent objects check
Here we use `IHasColumn` to support rulesets with columns, and so I moved that interface out into `osu.Game` from `osu.Game.Rulesets.Mania`.

We also use the same threshold as the unsnap check to ensure that no problems slip through. Specifically where an object is simultaneously not concurrent and not unsnapped but still on the same tick.
2021-04-26 20:17:18 +02:00
Derrick Timmermans
08a232f7fa
Add method to safely refresh DrawableHitObject transforms 2021-04-26 20:08:40 +02:00
Naxess
9b9c473616 Remove redundant string formatting 2021-04-26 16:17:38 +02:00
Naxess
7b9ed924be Rename snapping methods
Further separates them from `IBeatSnapProvider`'s `SnapTime`, and groups them together more, to prevent confusion between the two interfaces.

Also changes the xmldoc of the reference time to that of `IBeatSnapProvider` for consistency.
2021-04-26 16:07:30 +02:00
Dan Balasescu
6d2a5b614c
Merge branch 'master' into drawable-object 2021-04-26 18:33:44 +09:00
smoogipoo
fd5fbaf0db Rename ruleset wrapper class 2021-04-26 15:37:42 +09:00
Naxess
049e42fa85 Move snapping responsibility to IBeatmap
Seems `EditorBeatmap` already implements a different kind of `SnapTime` from `IBeatSnapProvider`, so method names here aren't great.

This is very similar to what https://github.com/ppy/osu/pull/12558 is doing, so may need to do some duplicate resolution later, especially surrounding `ClosestBeatSnapDivisor`.

Worth noting that this change makes 1/7, 1/5, etc unsupported for now, as we now rely on `BindableBeatDivisor.VALID_DIVISORS`.
2021-04-26 05:07:24 +02:00
ekrctb
6561a7c7d6 Rename DrawableObject -> PoolableDrawableWithLifetime 2021-04-26 12:06:21 +09:00
ekrctb
20e3cadd30 freeIfInUse -> free, and add comments 2021-04-26 12:04:59 +09:00
ekrctb
e6474e6ff7 Remove redundant statement (lifetime is set in base) 2021-04-26 11:47:38 +09:00
Justus Franklin Tumacder
8bb1fcd39b Add tests for BeatDivisorFinder 2021-04-26 07:07:32 +08:00
Bartłomiej Dach
33a5c156a1 Use existing snap list from BindableBeatDivisor 2021-04-25 17:52:11 +02:00
Bartłomiej Dach
e14255f395 Rename {Snap -> BeatDivisor}Finder 2021-04-25 17:44:26 +02:00
Naxess
6fd77e536d Add unsnap check 2021-04-25 05:34:54 +02:00
Justus Franklin Tumacder
211bff6a8f Fix cake errors 2021-04-25 09:21:25 +08:00
Justus Franklin Tumacder
1f48378ce7 Add xmldoc to SnapFinder 2021-04-25 08:53:45 +08:00
Justus Franklin Tumacder
e0ca44c908 Move SnapFinder from mania ruleset to osu.Game 2021-04-25 07:35:53 +08:00
Dan Balasescu
739d83da2a
Merge pull request #12515 from frenzibyte/legacy-scores-classic-mod
Apply "classic" mod to all legacy scores
2021-04-22 19:52:09 +09:00
smoogipoo
d4d78f7434 Merge branch 'master' into legacy-scores-classic-mod 2021-04-22 18:44:20 +09:00
Dean Herbert
9a7bf8109f Allow certain mouse input to pass through PlacementBlueprints to the selection logic 2021-04-22 15:44:12 +09:00
ekrctb
b877a29737 Factor out pooling and lifetime management logic of DHO to a base class 2021-04-21 17:37:42 +09:00
ekrctb
bbf2ec369b Remove SkinReloadableDrawable inheritance from DHO 2021-04-21 17:34:57 +09:00
Dan Balasescu
cf55383fff
Merge pull request #12486 from ekrctb/unmanaged-hit-object-entry
Associate DrawableHitObject with HitObjectLifetimeEntry rather than HitObject
2021-04-21 17:08:21 +09:00
Salman Ahmed
e90d791754 Add base "classic" mod 2021-04-21 09:14:19 +03:00
ekrctb
3fbeadf318 Deprecate old overload of Apply 2021-04-21 14:32:37 +09:00
ekrctb
73d3da1687 Fix wrong InitialLifetimeOffset is used for a non-pooled DHO.
HitObjectLifetimeEntry's InitialLifetimeOffset is different from DrawableHitObject's InitialLifetimeOffset.
2021-04-21 11:32:01 +09:00
ekrctb
44ff08cce4 Revert "Fix wrong InitialLifetimeOffset is used for a non-pooled DHO."
This reverts commit 67fcfd9d
2021-04-21 10:02:50 +09:00
ekrctb
67fcfd9dbc Fix wrong InitialLifetimeOffset is used for a non-pooled DHO.
HitObjectLifetimeEntry's InitialLifetimeOffset is different from DrawableHitObject's InitialLifetimeOffset.
2021-04-21 09:48:16 +09:00
ekrctb
e80c3c317a Rename UnmanagedHitObjectEntry -> SyntheticHitObjectEntry
"Unmanaged" was confusing because its lifetime is still managed by the HitObjectContainer.
2021-04-21 09:23:23 +09:00
ekrctb
c6ee4e900e Ensure a non-null hitobject entry has a non-null Result 2021-04-20 15:18:36 +09:00
ekrctb
8a8b9084ef Make single-argument overloead of DHO.Apply public 2021-04-20 10:11:36 +09:00
Naxess
0e6b66f457
Merge branch 'master' into bg-audio-quality-checks 2021-04-20 02:36:13 +02:00
ekrctb
1bc63a4c61 Now, DHO.lifetimeEntry can be non-null even it is not fully applied 2021-04-20 09:22:16 +09:00
Naxess
4510e795e1 Fix category of audio quality check 2021-04-20 02:13:26 +02:00
ekrctb
c1b4aaaa03 Add doc comment 2021-04-20 08:38:02 +09:00
Naxess
c633f15565 Add audio quality check 2021-04-20 01:36:03 +02:00
Naxess
40ae856dfc Show 2 decimals for background filesize 2021-04-20 01:34:05 +02:00
Naxess
14c626ffcb Use the playable beatmap for file presence checks 2021-04-20 01:33:19 +02:00
Naxess
8656176ab8 Add the playable beatmap as check argument
This is different from the working beatmap's `.Beatmap` property in that it is mutated by the ruleset/editor.

So hit objects, for example, are actually of type `Slider` and such instead of the legacy `ConvertSlider`.

This should be preferred over `workingBeatmap.Beatmap`.
2021-04-20 01:31:51 +02:00
Dean Herbert
fc41ad65f8
Merge pull request #12447 from smoogipoo/fix-non-60fps-recording
Record every 60fps interval
2021-04-19 23:26:58 +09:00
ekrctb
2c487ddb70 Create synthetic LifetimeEntry for a DHO when not supplied
Now, a DHO is always associated with a HitObjectLifetimeEntry while used.
Result is always stored in the entry, and not in the DHO.
2021-04-19 21:54:19 +09:00
ekrctb
5afdc3ff66 Make DHO application logic clearer with Entry/HitObject separation 2021-04-19 19:56:17 +09:00
Naxess
9a69ca34a6 Add audio presence check 2021-04-18 02:07:57 +02:00
Naxess
010720de74 Factor out general file presence checking
This allows us to use the same method of checking for other files that should exist, for example the audio file.

By using the same method, they all share test cases too.
2021-04-18 02:07:33 +02:00
Naxess
56bf49c85c Take IWorkingBeatmap instead of WorkingBeatmap
This makes testing much easier, and allows for checking of any class deriving from that interface, including `WorkingBeatmap`.
2021-04-18 01:21:20 +02:00
Naxess
abf512532e Clean up check logic
Makes use of the new `BeatmapSet.GetPathForFile` method and removes dependency on `WorkingBeatmap` specifically, allowing us to switch to `IWorkingBeatmap` later.
2021-04-18 01:19:25 +02:00
Naxess
cb41c89935 Don't return low res and too low res at the same time 2021-04-17 20:10:07 +02:00
Naxess
62c54e00cb Add check for background resolution and filesize 2021-04-17 18:01:04 +02:00
Naxess
448574e7e6 Use WorkingBeatmap instead of IBeatmap
This lets us access things like the background, track, etc. which are necessary for quality and filesize checks.

Also improves the structure of the `CheckBackgroundTest` class in the process.
2021-04-17 17:33:53 +02:00
smoogipoo
d26fa46ef2 Record every 60fps interval 2021-04-16 19:42:44 +09:00
Dean Herbert
f824105075 Merge branch 'master' into fix-slider-zero-length 2021-04-16 18:47:22 +09:00
Dean Herbert
9b95cf227e Merge branch 'master' into apply-ibindable-interface-change 2021-04-16 17:30:35 +09:00
Dan Balasescu
5ad2d0e759
Merge pull request #12439 from ekrctb/further-refactor-framed-replay
Further refactor FrameReplayInputHandler, simplify the template code
2021-04-16 17:16:09 +09:00
Dean Herbert
d38e294d96 Centralise length validation function 2021-04-16 15:45:24 +09:00
smoogipoo
8c4804dd7a Use nameof 2021-04-16 15:40:06 +09:00
smoogipoo
d1c72f5e13 Apply changes resulting from IBindable interface updates 2021-04-16 15:10:53 +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
936bde28a3 Remove manual handling of IsActive in RulesetInputManager
Now it is supported in framework
2021-04-16 14:13:41 +09:00
Dean Herbert
119c9b4294 Fix placement blueprints not being correctly removed after a rolled back placement 2021-04-16 14:11:33 +09:00
Dan Balasescu
ac8e462d32
Merge branch 'master' into refactor-framed-replay-input-hander 2021-04-15 21:48:58 +09:00
Dan Balasescu
98e2245d83
Merge pull request #12422 from ekrctb/no-lazy-list
Remove usage of Lazy<List<...>> by always allocating an empty list
2021-04-15 20:09:39 +09:00
ekrctb
d8aa436e81 Remove usage of Lazy<List<...>> in NestedPlayfields 2021-04-15 18:26:01 +09:00
ekrctb
50fad47ebc Remove usage of Lazy<List<...>> for NestedHitObjects 2021-04-15 18:26:01 +09:00
Dean Herbert
346e36d32a Make Mod.Description abstract and add missing descriptions 2021-04-15 14:36:26 +09:00
Dean Herbert
ba325de595 Merge conditionals for readability 2021-04-15 14:19:59 +09:00
Dean Herbert
5eaf3ea576 Reorganise and reword comments to make time override behaviour a bit clearer 2021-04-15 14:19:06 +09:00
Dean Herbert
7654df94f6
Merge pull request #12395 from frenzibyte/fix-cinema-ignore-settings
Fix beatmap background displayed if storyboard is hidden on "Cinema" mod
2021-04-14 14:31:03 +09:00
Dean Herbert
cb4f64133e Add xmldoc to interfaces 2021-04-13 23:30:20 +09:00
Dean Herbert
1ff4e2076f Merge branch 'master' into verify-tab 2021-04-13 23:05:48 +09:00
Naxess
69da804f81 Add missing period 2021-04-13 13:57:56 +02:00
Dean Herbert
0d6890243f Fix typo in xmldoc 2021-04-13 20:18:18 +09:00
Dean Herbert
03ba04e8ce Split out general checks into its own verifier class (and remove static usage) 2021-04-13 19:50:22 +09:00
Naxess
aa5fe2e9fc Rename BeatmapVerifier -> IBeatmapVerifier 2021-04-13 11:02:01 +02:00
Naxess
60c2494b31 Make BeatmapVerifier an interface 2021-04-13 10:40:56 +02:00
Salman Ahmed
36510309d1 Merge EnableUserDim and IgnoreUserSettings to one bindable 2021-04-13 10:58:56 +03:00
ekrctb
57ba7b7cbb Partially revert the changes of CurrentFrame and NextFrame for compatibility
Making those always non-null is postponed as when a replay's frame contains keypress the behavior is changed.
Previously, the key is pressed at the time of the first frame. But using non-null frames means the key is pressed at negative infinity.
However, I think the new way of always using non-null frames makes the client code so I plan to bundle the change to more breaking changes.
2021-04-13 15:55:23 +09:00
ekrctb
d0f30b7b42 Delay map completion one frame after the last judgment
This is a workaround of a timing issue.
KeyCounter is disabled while break time (`HasCompleted == true`).
When the last keypress is exactly at the same time the map ends, the last frame was considered in a break time while forward play but considered not in a break time while rewinding. This inconsistency made the last keypress not decremented in the key counter when a replay is rewound.
The situation regularly happens in osu!standard because the map ends right after the player hits the last hit circle. It was caught by `TestSceneGameplayRewinding`.

This commit makes the update of the map completion delayed one frame. The problematic keypress frame is now processed strictly before the map completion, and the map completion status is correctly rewound before the keypress frame.
2021-04-13 14:29:47 +09:00
ekrctb
38d10755cb Merge branch 'master' into refactor-framed-replay-input-hander 2021-04-13 13:47:22 +09:00
Naxess
6d3f9fa9ce Use is class instead of Equals with template index
Ensures ordering of `PossibleTemplates` does not affect tests.
2021-04-13 02:29:25 +02:00
Naxess
d8088777ea Add Equals method to IssueTemplate
This will be useful in tests.
2021-04-13 01:21:34 +02:00
Salman Ahmed
9679bdfed2 Merge branch 'master' into mod-using-reference-equality 2021-04-12 20:56:24 +03:00
Salman Ahmed
92fab653e1 Take current mod settings value into account on equality comparsion 2021-04-12 20:51:13 +03:00
Naxess
19a154ddf1 Rename checkOrigin -> check
More consistent with `Issue.ctor`'s "template".
2021-04-12 17:28:12 +02:00
Naxess
bb720c23a0 Remove check ctors and locals 2021-04-12 17:12:37 +02:00
Dean Herbert
62c1812282 Remove redundant parameter naming 2021-04-12 23:37:47 +09:00
Dean Herbert
36bd235021 Move nested classes to bottom of file 2021-04-12 23:36:10 +09:00
Naxess
6d50d01186 Make IssueTemplate.Check readonly 2021-04-12 16:23:05 +02:00
Naxess
caaaba5950 Rename Check -> ICheck 2021-04-12 16:20:53 +02:00
Naxess
008dbc7dd6 Reverse IssueType ordering
Reversed both in the enum and where it's displayed, so ends up the same in the end.
2021-04-12 15:49:13 +02:00
Naxess
7c4f6d2b62 Rework template usage
Includes moving the origin check back to templates, constructing nested template classes in each check, and making parameterized template usage.
2021-04-12 15:47:26 +02:00
ekrctb
31d3607105 Add TODO comment 2021-04-12 18:54:36 +09:00
ekrctb
359fae895f Rename property 2021-04-12 18:50:25 +09:00
ekrctb
6d18b3db00 Avoid empty list allocation 2021-04-12 18:49:38 +09:00
Dean Herbert
b5954a55ad Remove empty <returns> xmldoc 2021-04-12 17:46:14 +09:00
ekrctb
f1b8171e38 Remove #nullable true for now to suppress inspector 2021-04-12 17:13:48 +09:00