Bartłomiej Dach
2e3daf0a54
Fix leak of ModSettingChangeTracker
instances
...
The `SelectedMods.BindValueChanged()` callback in `ModSelectOverlay` can
in some instances run recursively. This is most heavily leaned on in
scenarios where `SelectedMods` is updated by an external component. In
such cases, the mod select overlay needs to replace the mod instances
received externally with mod instances which it owns, so that the changes
made on the overlay can propagate outwards.
This in particular means that prior to this commit, it was possible to
encounter the following scenario:
modSettingChangeTracker?.Dispose();
updateFromExternalSelection(); // mutates SelectedMods to perform the replacement
// therefore causing a recursive call
modSettingChangeTracker?.Dispose();
// inner call continues
modSettingChangeTracker = new ModSettingChangeTracker(SelectedMods.Value);
// outer call continues
modSettingChangeTracker = new ModSettingChangeTracker(SelectedMods.Value);
This leaks one `modSettingChangeTracker` instance from the inner call,
which is never disposed.
To avoid this, move the disposal to the same side of the recursion that
the creation happens on, changing the call pattern to:
updateFromExternalSelection(); // mutates SelectedMods to perform the replacement
// therefore causing a recursive call
modSettingChangeTracker?.Dispose();
// inner call continues
modSettingChangeTracker = new ModSettingChangeTracker(SelectedMods.Value);
modSettingChangeTracker?.Dispose();
// outer call continues
modSettingChangeTracker = new ModSettingChangeTracker(SelectedMods.Value);
which, while slightly wasteful, does not cause any leaks.
The solution is definitely suboptimal, but addressing this properly
would entail a major rewrite of the mod instance management in the mods
overlay, which is probably not the wisest move to make right now.
2023-04-30 17:31:41 +02:00
Cootz
b795e8ac5a
Use ModSearch
in ModeSelectOverlay
2023-04-27 17:26:35 +03:00
Cootz
3c6141f233
Add ModSearch
2023-04-27 17:08:29 +03:00
Hy0tic
56ab029a58
fix issue where multipler does not update when adjusting speed for preset mod
2023-04-22 13:30:08 -04:00
Dan Balasescu
7bc8908ca9
Partial everything
2022-11-27 00:00:27 +09:00
ansel
b056cac10a
Remove generic and add default implementation for CalculateEffect
2022-09-10 08:34:29 +03:00
ansel
545e0bbcef
Adjust inheritors and test
2022-08-29 22:49:25 +03:00
ansel
039f009562
Inherit difficulty multiplier display from ModsEffectDiplay
2022-08-27 20:26:05 +03:00
Bartłomiej Dach
3109066e34
Rename {Requires -> Pending}Configuration
2022-08-16 22:45:24 +02:00
Bartłomiej Dach
10daac6752
Only open mod customisation panel on explicit selection of single mod
2022-08-15 20:38:23 +02:00
Bartłomiej Dach
f860bc11ee
Fix several schedule-related issues arising from new column addition
2022-08-15 20:38:16 +02:00
Bartłomiej Dach
5ff2e41a55
Add preset column to mod select test scene
2022-08-15 18:38:37 +02:00
Bartłomiej Dach
839409d7ac
Add preset column to solo mod select overlay
2022-08-07 16:20:31 +02:00
Bartłomiej Dach
b318bbd5e6
Allow non-homogenous column types in mod select overlay
2022-08-07 16:20:31 +02:00
Salman Ahmed
89653b74c7
Only add setting tracker when customisation is permitted
2022-07-19 19:21:16 +03:00
Salman Ahmed
eddae7b143
Fix mod overlay and footer not updating multiplayer on settings change
2022-07-18 07:38:56 +03:00
Dean Herbert
a03abc747b
Tidy up comments and simplify bounding box centre logic
2022-07-02 12:58:34 +09:00
Jamie Taylor
9d28d5f8ee
Update SFX for mod overlay show/hide
2022-07-01 20:43:12 +09:00
Dean Herbert
31a447fda0
Update parameter discards
2022-06-24 21:26:19 +09:00
Bartłomiej Dach
73124d2b1f
Encapsulate mod hotkey selection logic in strategy pattern
2022-06-21 12:49:01 +02:00
Dan Balasescu
f8830c6850
Automated #nullable processing
2022-06-17 16:37:17 +09:00
Bartłomiej Dach
071e158a29
Expose available mod state outwardly as a bindable
2022-05-25 23:06:12 +02:00
Bartłomiej Dach
f0303d76e8
Split off "select all mods" button to separate class
2022-05-25 22:18:30 +02:00
Bartłomiej Dach
a4bd399b0c
Split off "deselect all mods" button to separate class
2022-05-25 22:14:45 +02:00
Dean Herbert
062ffe64ac
Remove delay on pop in
2022-05-17 18:21:19 +09:00
Bartłomiej Dach
170df01b46
Adjust difficulty multiplier scale transition on mod overlay
...
The previous transition was supposed to be a center-anchored elastic
scale-in, but this didn't work as intended - because the multiplier
ended up inside of an auto-sized right-aligned container, the animation
itself would end up being anchored right.
Attempts to remove the scale transition resulted in a rather
jarring-looking result, so swap out the elastic scale-in for a sweep-in
effect from the top, to match the header and avoid introducing too many
directions of movement.
Delay values tweaked "to taste" - can be adjusted further if there is an
alternative set of values that feels better.
2022-05-15 20:44:50 +02:00
Dean Herbert
8a01050168
Refactor mod select button initialisation to allow shared usage of deselect button
2022-05-15 03:16:43 +09:00
Dean Herbert
a759cf2dab
Add key binding to deselect all mods
...
Defaults to `Backspace`.
2022-05-15 02:51:58 +09:00
Bartłomiej Dach
981ead68bf
Ensure local mods are constructed in time for Pop{In,Out}()
2022-05-11 22:31:27 +02:00
Bartłomiej Dach
93539160ad
Remove no-longer-necessary guard
2022-05-11 22:31:26 +02:00
Bartłomiej Dach
fc24a56478
Add protection from recursive updates from external selection
2022-05-11 22:31:25 +02:00
Bartłomiej Dach
83ba06e7af
Extract helper property for accessing all mods
2022-05-11 22:31:25 +02:00
Bartłomiej Dach
11ae1da65a
Hoist reference replacement logic to overlay level
2022-05-11 22:26:47 +02:00
Bartłomiej Dach
05a21fbbe0
Hoist ModState
to overlay level
2022-05-11 22:26:21 +02:00
Bartłomiej Dach
ddb2d4eef5
Rename FreeModSelect{Screen -> Overlay}
reference in inline comment
2022-05-11 18:06:09 +02:00
Bartłomiej Dach
a104277e7f
Rename ModSelect{Screen -> Overlay}Strings
2022-05-11 18:01:33 +02:00
Bartłomiej Dach
76c63f1d0a
Rename ModSelect{Screen -> Overlay}
in place of removed old design
2022-05-10 22:56:50 +02:00
Bartłomiej Dach
128468e13d
Remove old base mod select overlay
2022-05-10 21:52:30 +02:00
Dean Herbert
3eead5a6a3
Rename FlushAnimation
to FlushPendingSelections
to better match purpose
2022-05-04 19:40:08 +09:00
Joseph Madamba
5e5c8e78a6
Use existing web localisation for most hardcoded strings
2022-04-20 16:31:11 -07:00
smoogipoo
f9d5abff8a
Update with keybinding changes
2021-09-16 18:26:12 +09:00
Dean Herbert
bf0a1167ec
Improve update flow and ensure selected mods is read from local context
2021-08-24 13:35:39 +09:00
Dean Herbert
9b9dacf3fe
Update usages of Drawable.Click()
2021-08-04 17:30:33 +09:00
Dean Herbert
3c028ce05c
Add IDeepCloneable
interface and update existing CreateCopy
methods to use it
2021-07-19 12:54:17 +09:00
Dean Herbert
af270cccc4
Fix cross talk between ModSelectOverlay
s
2021-07-08 17:59:04 +09:00
PercyDan54
e1c646b9b2
Remove redundant arguments
2021-07-05 23:52:39 +08:00
Dean Herbert
5883922177
Remove mod multiplier completely
2021-06-25 16:36:31 +09:00
aitani9
62566f2a4a
Remove "Score Multiplier" text
2021-06-24 14:29:47 -07:00
Dean Herbert
abc96057b2
Remove relative height specification and use constant height
2021-05-21 17:55:46 +09:00
Dean Herbert
7fc450c620
Fix mod settings blocking input outside its visible area
...
Closes #12502 .
2021-04-20 23:42:56 +09:00
smoogipoo
ccb83ef3a3
Fix checkbox not being updated
2021-02-22 15:47:47 +09:00
smoogipoo
d3f0c0730d
Merge branch 'master' into non-concurrent-sample-playback
2021-02-12 17:22:15 +09:00
Dean Herbert
98c5b0220c
Merge pull request #11725 from smoogipoo/freemods-user-settings
...
Add local user customisation for freemod mod settings
2021-02-11 16:02:24 +09:00
smoogipoo
822c66033f
Add local-user freemod configuration
2021-02-10 19:56:59 +09:00
Dean Herbert
b3b0d97354
Avoid potential feedback from bindable event binds
2021-02-10 15:33:04 +09:00
Dean Herbert
435c85a2e7
Avoid executing selection twice on ModSelectOverlay load
2021-02-10 15:13:09 +09:00
Dean Herbert
75bc9f607e
Rename wrongly named method
2021-02-10 14:55:15 +09:00
Dean Herbert
bf239f8bef
Flush animation on closing mod overlay
2021-02-04 19:12:37 +09:00
Dean Herbert
f23ca7c7cf
Centralise selection animation logic
2021-02-04 18:10:55 +09:00
Dean Herbert
4bfe3aabdc
Simplify sound debounce logic
2021-02-04 17:06:11 +09:00
smoogipoo
f25535548a
Fix buzzing on select all/deselect all
2021-02-02 21:20:16 +09:00
smoogipoo
643c0605d8
Implement the freemod selection overlay
2021-02-02 21:14:38 +09:00
smoogipoo
8b3a85daa7
Merge branch 'refactor-mod-sections' into freemod-select-overlay
2021-02-02 21:09:51 +09:00
smoogipoo
728f8599b2
Move incompatible mod deselection to SoloModOverlay
2021-02-02 21:06:32 +09:00
smoogipoo
e58ece9e10
Make ModSelectOverlay abstract
2021-02-02 21:06:04 +09:00
smoogipoo
50e92bd0ed
Fix selection not being preserved when IsValidMod changes
2021-02-02 20:50:54 +09:00
smoogipoo
10ceddf3ff
Make IsValidMod adjustable
2021-02-02 20:47:50 +09:00
smoogipoo
75f81bfa06
Add back mod validation
2021-02-02 20:35:41 +09:00
smoogipoo
6d620264f4
Allow mod buttons to not be stacked
2021-02-02 20:27:41 +09:00
smoogipoo
3741f05ab3
Refactor mod sections and make them overridable
2021-02-02 20:11:40 +09:00
Dean Herbert
bb8113fb51
Fix mod select footer not animating correctly on first reveal
2021-01-25 14:47:47 +09:00
smoogipoo
de9d075f94
Initial sample + samplechannel rework
2021-01-19 17:11:40 +09:00
Dean Herbert
0b165dce4b
Fix multiplayer mod select showing autoplay as a choice
2021-01-18 17:50:32 +09:00
Salman Ahmed
375ecf92ed
Merge remote-tracking branch 'upstream/master' into fix-mod-buttons-not-copying-settings
2021-01-09 00:26:18 +03:00
Dean Herbert
4d6c13f169
Privatise ModSelectOverlay methods that may be unsafe to be called externally
2021-01-05 16:18:13 +09:00
Salman Ahmed
2ce9599957
Copy selected mods properties into overlay's buttons
2021-01-01 03:47:13 +03:00
Dean Herbert
7253866e17
Move customisation panel to be in same area as main content
2020-12-07 16:42:55 +09:00
Joehu
0f9b38da08
Add fade in/out animations to mod settings container
2020-12-06 11:35:14 -08:00
Dean Herbert
3e326a9234
Use bindable flow for event propagation
2020-10-14 15:22:17 +09:00
Dean Herbert
24eff8c66d
Rename container to match "settings" term used everywhere
2020-10-14 15:13:49 +09:00
Leon Gebler
3fd913b13f
rename customisation container class
2020-10-13 19:38:25 +02:00
Leon Gebler
663b806974
move ModSettingsContainer to seperate component
2020-10-13 17:45:40 +02:00
Leon Gebler
1a85123b89
rename container class to be more descriptive
2020-10-12 21:24:42 +02:00
Leon Gebler
7df9282727
CodeAnalysis fixes
2020-10-12 15:58:34 +02:00
Leon Gebler
e5548a1216
Move ModSettingsContainer class inside ModSelectOverlay
2020-10-12 00:16:18 +02:00
Joehu
4dacdb9994
Fix mod select overlay absorbing input from toolbar ruleset selector
2020-09-13 11:50:21 -07:00
smoogipoo
d8ebb8e3eb
Move override to a bit better location
2020-07-15 13:17:22 +09:00
Joehu
79f6092344
Fix back button not glowing when closing mod select with escape
2020-07-14 13:31:15 -07:00
Dean Herbert
832fa74a5e
Reword comment slightly
2020-04-28 13:26:42 +09:00
Joseph Madamba
a34ec03efc
Reword width comment
...
Co-Authored-By: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2020-04-27 12:44:20 -07:00
Joehu
1b9362041a
Revert multiplier number changes and set width
...
Safe arbitrary width taken from "0.00x" (highest width of 67), rounded to the nearest tenth.
2020-04-26 19:50:11 -07:00
Joehu
8a47a615db
Remove unranked label from footer
2020-04-26 19:29:22 -07:00
Joehu
4b60be87b5
Move unranked label under multiplier number to avoid width changes
2020-04-24 16:34:41 -07:00
Joehu
0f6ec274f9
Add transitions to footer when flowing to another row
2020-04-23 22:44:17 -07:00
Joehu
118db03b56
Fix vertical spacing and score multiplier splitting apart
...
Also cleans up margin and its hacks (alignment done with anchor/origin now).
2020-04-23 22:41:38 -07:00
Joehu
abb687286b
Fix score multiplier being cut off in mod select at higher ui scales
2020-04-23 22:34:00 -07:00
Dean Herbert
ed837d3115
Use framework extension method for FromHex
2020-03-11 10:18:41 +09:00
Dan Balasescu
3600b0daf0
Merge branch 'master' into fix-mod-select-overflowing
2020-02-04 11:57:54 +09:00
Joehu
22e3150f68
Fix comment and remove magic numbers
2020-02-03 17:21:06 -08:00
Joehu
609ee26030
Fix mod select overlay not showing up in test
2020-02-01 11:41:41 -08:00
Joehu
2d42a83bb9
Fix mod select overlay overflowing toolbar at max ui scale
2020-02-01 11:24:29 -08:00
Dean Herbert
7bf2e9b369
Decouple ModSelectOverlay from global SelectedMods
2020-01-30 17:38:15 +09:00
ProTheory8
61d7b63914
Readability Improvement
2020-01-21 09:30:11 +05:00
ProTheory8
41295bc27c
Difficulty Adjust mod customisation menu opens automatically now
2020-01-20 21:06:36 +05:00
Dean Herbert
8052aeb238
Fix potential nullref in disposal logic
2019-12-13 21:36:50 +09:00
Dean Herbert
440a8470e1
Move available mods to global context
...
This also tidies up ModSelectOverlay and setting creation flow in general.
2019-12-13 21:36:50 +09:00
Dean Herbert
5624b9fd3f
Fix US english
2019-12-11 13:19:13 +09:00
Dean Herbert
a37af311d0
Simplify settings update logic
2019-12-11 13:19:02 +09:00
Dean Herbert
46d055604a
Customize -> Customise
2019-12-06 18:59:45 +09:00
Dean Herbert
a5d5099868
Use SettingsSource for mod cusomisation
2019-12-06 17:09:48 +09:00
Dean Herbert
af35df4077
Add multiple mod testing and update test code style
2019-12-06 15:42:11 +09:00
unknown
a92b32f6dc
add basic tests
2019-11-05 00:56:09 +08:00
LeNitrous
9375ef5eea
clear settings controls when changing rulesets
2019-10-08 19:42:15 +08:00
LeNitrous
59b2f02828
initial implementation of customizable mods
2019-10-08 18:34:09 +08:00
andy840119
3a14794c43
use show/hide instead because FillFlowContainer's spacing
2019-06-14 01:43:20 +09:00
Dean Herbert
609a82bc94
Update VisibilityContainer usage in line with framework
2019-06-11 15:13:58 +09:00
Dean Herbert
8f30c9b0a3
Fix file layout of ModSelectOverlay
2019-06-07 15:58:24 +09:00
Dean Herbert
7ffc08b187
Merge branch 'master' into master
2019-06-07 15:34:14 +09:00
Dean Herbert
b914bb1e2e
Remove key hints for now
...
A proper design for this will come in the future.
2019-06-07 15:32:48 +09:00
Dean Herbert
0ce5c7468f
Use switch and consume/block input
2019-06-07 15:31:23 +09:00
Welsar55
c04c6693c2
Change close action from PopOut to Hide and switched to TriangleButton.Click()
2019-06-05 13:01:21 -05:00
Welsar55
194bb80354
Added close button and indictors of hotkeys to buttons
2019-06-03 11:09:21 -05:00
Dean Herbert
4ca34bd5e8
Update osu! in line with audio subsystem refactor
2019-05-28 17:06:01 +09:00
smoogipoo
0222424aef
Make mods IReadOnlyList<Mod> gamewide
...
Prevents potential multiple evaluations of enumerable.
2019-04-10 17:20:36 +09:00
smoogipoo
4310f07a5c
Rename SelectedMods -> Mods
2019-04-10 12:03:57 +09:00
Dean Herbert
b7126b3efb
Fix mod select overlay dimming itself
2019-03-02 14:48:05 +09:00
Dean Herbert
26d53d06a9
Fix remaining issues
2019-02-28 13:31:40 +09:00
Dean Herbert
3015d40f8f
Merge branch 'master' into osu-fontusage
2019-02-22 18:09:23 +09:00
smoogipoo
d8c55bc729
Adjust namespaces
2019-02-21 19:05:52 +09:00
smoogipoo
bca347427f
Update with framework bindable changes
2019-02-21 18:56:34 +09:00
smoogipoo
4db5531e4b
Replace copy-constructor/method with extension method
2019-02-20 19:32:30 +09:00
smoogipoo
a2aa3ec5cb
Adjust sprite texts in-line with framework changes
2019-02-20 15:03:20 +09:00
Dean Herbert
a25dce53cd
Fix logical regression
2019-01-25 15:03:32 +09:00
Dean Herbert
787d4da153
Combine constant
2019-01-25 14:10:59 +09:00
Dean Herbert
8617aaa2a7
Update licence header (and remove year)
2019-01-24 17:43:03 +09:00
Unknown
6eff79913b
remove blank lines
2019-01-11 10:34:56 +01:00
smoogipoo
f27bd3ef3e
OpenTK -> osuTK
2018-11-20 17:14:59 +09:00
smoogipoo
a8f156584b
Update framework with positional/non-positional changes
2018-09-26 14:01:15 +09:00
Dean Herbert
03084aa04b
Revert async changes
2018-08-31 07:07:10 +09:00
smoogipoo
e7a5816d27
Use GetAsync for all samples
2018-08-27 17:30:16 +09:00
smoogipoo
aa3f6337a2
Add comment
2018-08-15 09:14:07 +09:00
smoogipoo
f69bc23ab8
Overflow mod select to account for parallax
2018-08-14 17:26:25 +09:00
Dean Herbert
4cb7063801
Add automated testing of mod preservation/removal
2018-08-07 16:45:18 +09:00
Dean Herbert
7b8bd7f21c
Fix mod selection not restoring when re-entering song select
2018-08-07 14:49:44 +09:00
Dean Herbert
3c06655672
Split out Special mods into Automation and Conversion
2018-07-31 18:00:42 +09:00
Dean Herbert
e28a610757
Fix mods not correctly resetting when changing ruleset at song select
2018-07-05 13:22:52 +09:00
smoogipoo
b61fe10f62
Adapt to IBindables
2018-07-02 15:07:18 +09:00
Dean Herbert
4bcc05a7fc
Remove null checks on ruleset
...
Add a default ruleset to `OsuTestCase` to cover testing scenarios.
2018-06-26 18:24:34 +09:00
Dean Herbert
b0a1b25983
Privatise game ruleset and access via DI
...
Also decouples the bindable at SongSelect, where it is debounced in line with the carousel being updated.
2018-06-26 16:32:32 +09:00
Dean Herbert
0f6c623ebb
Tidy up some unnecessary lines
2018-05-31 12:44:59 +09:00