1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-17 20:32:56 +08:00
Commit Graph

650 Commits

Author SHA1 Message Date
Dean Herbert
0a584f0652 Simplify check logic and improve variable naming 2023-05-04 11:07:09 +09:00
cdwcgt
967e801f9c
code inspect 2023-05-03 23:26:58 +09:00
cdwcgt
debbd376bd
move scrollContent update logic to updateActiveState() 2023-05-03 23:24:14 +09:00
cdwcgt
f4b1264cc9
use button Enable status to ensure preset name is not null 2023-05-03 23:22:46 +09:00
cdwcgt
aa5a026c67
remove local button handle 2023-05-03 23:14:24 +09:00
cdwcgt
c609e6345c
remove Use Current Mods menu item 2023-05-03 23:02:50 +09:00
Cootz
152d2678d5 Fix ModSelectColumn completely disappear from ModSelectOverlay 2023-05-03 14:00:46 +03:00
Dean Herbert
e394b487e0
Merge branch 'master' into edit-mods-preset 2023-05-03 12:06:16 +09:00
Cootz
a6ca049739 Manually implement @bdach prototype 2023-05-02 14:15:33 +03:00
Dean Herbert
e808e7316b Mark delegate value unused and add comment to avoid future regression 2023-05-02 13:29:30 +09:00
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
cdwcgt
d025c441ca delay mod save after click save or not popover hidden 2023-03-16 19:48:45 +09:00
cdwcgt
42bcc8bafc revert mod store 2023-03-16 19:38:15 +09:00
cdwcgt
15f11bb1e8 scorll container and save mod after popover hidden
Requires manual handling of many visual effects
2023-03-11 12:31:33 +09:00
cdwcgt
1cd565193e public CheckCurrentModCanBeSave 2023-03-11 11:39:35 +09:00
cdwcgt
8b0f127ff2 split ModPresetRow 2023-03-11 11:25:52 +09:00
cdwcgt
f4e2620402 fix test 2023-03-10 00:56:22 +09:00
cdwcgt
ca416175bb remove useless property 2023-03-09 22:58:44 +09:00
cdwcgt
3d746e8dfb content Menu 2023-03-09 22:49:33 +09:00
cdwcgt
5a1316f0e5 split save logic 2023-03-09 22:43:06 +09:00
cdwcgt
54564e0557 new design 2023-03-07 21:13:35 +09:00
cdwcgt
4858d3fd42 Added ability to edit mod presets 2023-03-07 02:00:40 +09:00
mk56-spn
908651cc11 make ResetConfirmDialog properly utilise its parent's logic
Adjust name of `DeleteAction` to `DangerousAction`
2023-03-05 20:57:26 +01:00
mk56-spn
90227a6496 Rename DeleteConfirmationDialog.cs into DangerousActionDialog.cs 2023-02-27 21:57:59 +01:00
Andrei Zavatski
ffcca9fd89 Remove awkward width specification 2023-02-17 23:23:58 +03:00
Andrei Zavatski
51940133df Adjust width and add comment 2023-02-17 15:18:45 +03:00
Andrei Zavatski
0838fa636f Make triangles slower 2023-02-17 15:16:00 +03:00
Andrei Zavatski
a84f20bf32 Add triangles to ModSelectColumn 2023-02-17 03:09:32 +03:00
Dan Balasescu
7bc8908ca9 Partial everything 2022-11-27 00:00:27 +09:00
ansel
8cbc0502ae Inline CalculateEffect 2022-09-12 15:51:18 +03:00
ansel
324a3723a5 Rewrite DMD 2022-09-10 23:23:04 +03:00
ansel
3f93ec8538 Expose counter to inheritors 2022-09-10 23:20:28 +03:00
ansel
667854b034 Make effect display have a built-in counter 2022-09-10 23:18:48 +03: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
5343c26452 Control colour via Current bindable 2022-08-29 22:48:27 +03:00
ansel
7faeed88b0 Add ability to override width of value area 2022-08-29 22:08:43 +03:00
ansel
039f009562 Inherit difficulty multiplier display from ModsEffectDiplay 2022-08-27 20:26:05 +03:00
ansel
3e828c3416 Move base layout from DifficultyMultiplierDisplay to another class 2022-08-27 20:11:38 +03:00
Dan Balasescu
0815b01b75
Merge pull request #19783 from bdach/mod-select/presets-dont-open-customisation
Fix selecting preset containing Difficulty Adjust automatically opening customisation panel
2022-08-22 15:44:00 +09:00
Dan Balasescu
e1fa959f0b Fix language change removing mod column bold text 2022-08-22 13:00:47 +09:00
Bartłomiej Dach
aa15e84bea
Adjust rounding in mod select difficulty multiplier to match song select footer
The 0.01 `Precision` spec on `DifficultyMultiplierDisplay.Current` would
cause the difficulty multiplier to use a different midpoint rounding
strategy than `double.ToString()`, which is the one that the song select
footer relies on. For example, a value of 0.015 would be rounded down
to 0.01 by `double.ToString()`, but rounded up to 0.02
by `BindableDouble`.

Fix the discrepancy by just deleting the `Precision` spec. Since the
value of the bindable would go through `ToLocalisableString(@"N2")`
anyway, it was redundant as is.

Fixes #19889.
2022-08-21 23:15:49 +02:00
Bartłomiej Dach
3d14b14cfe
Use alternative method for checking panel readiness to eliminate bool flag 2022-08-17 21:56:11 +02:00
Bartłomiej Dach
3109066e34
Rename {Requires -> Pending}Configuration 2022-08-16 22:45:24 +02:00
Bartłomiej Dach
6bfdfeb153
Refactor mod panel selection logic to avoid overwriting 2022-08-16 22:41:35 +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
Dan Balasescu
76fea25668
Merge pull request #19646 from its5Q/settings-localisation
Add missing localisation for settings enums
2022-08-10 18:51:52 +09:00
its5Q
abca3d1b2a Prefix common strings for context 2022-08-10 00:35:19 +10:00
Bartłomiej Dach
f74fb3491e
Use alternative implementation of preset panel cleanup 2022-08-08 21:08:54 +02:00
Bartłomiej Dach
a0a6e1faee
Fix spurious sample playbacks from already-removed panels 2022-08-08 20:30:55 +02:00
Bartłomiej Dach
f21a51aa24
Simplify mirror copy of task logic in ModColumn 2022-08-08 19:20:50 +02:00
Bartłomiej Dach
00333fb0d2
Change ?? false test to == true for legibility 2022-08-08 19:19:13 +02:00
its5Q
5080d62e77 Add missing localisation for settings enums 2022-08-08 21:51:23 +10:00
Dean Herbert
070d156e89 Simplify task logic in ModPresetColumn 2022-08-08 16:13:52 +09: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
Bartłomiej Dach
0287c49ca8
Implement user selection logic for mod presets 2022-08-07 16:20:20 +02:00
Bartłomiej Dach
b1dcd7821c
Automatically toggle preset panels if selected mods match 2022-08-07 15:30:20 +02:00
Bartłomiej Dach
9b3183b2b4
Implement mod preset deletion flow 2022-08-06 21:58:55 +02:00
Bartłomiej Dach
ca1b4689cb
Automatically focus name textbox upon add preset popover open 2022-08-03 21:26:35 +02:00
Bartłomiej Dach
159d3b032c
Rename locals for legibility 2022-08-03 21:23:31 +02:00
Bartłomiej Dach
82d3fbd51b
Split AddPresetPopover to separate file 2022-08-03 21:22:55 +02:00
Bartłomiej Dach
add2971eb4
Implement preset creation flow with test coverage 2022-08-02 22:05:54 +02:00
Bartłomiej Dach
7251389e43
Add localisations for add preset button 2022-08-02 22:05:34 +02:00
Bartłomiej Dach
059a465fe8
Add border to popover for better visual contrast 2022-08-02 22:03:33 +02:00
Bartłomiej Dach
1b3074d098
Implement popover for creating mod presets 2022-08-02 22:03:33 +02:00
Bartłomiej Dach
085080576a
Add button for creating new mod presets 2022-08-02 22:03:32 +02:00
Bartłomiej Dach
85f77abee1
Fix code quality inspection about ambiguous equality 2022-07-31 23:53:46 +02:00
Bartłomiej Dach
345f103119
Migrate mod preset column to use realm 2022-07-31 23:53:45 +02:00
Bartłomiej Dach
446485f804
Move localisation string to common location 2022-07-24 23:30:52 +02:00
Bartłomiej Dach
8af9cfbe40
Add readonly modifier 2022-07-24 23:29:18 +02:00
Bartłomiej Dach
6a67d76d7c
Add basic mod preset column implementation 2022-07-24 16:39:04 +02:00
Bartłomiej Dach
b2f8934117
Extract base mod select column presentation logic 2022-07-24 16:39:03 +02:00
Bartłomiej Dach
f3ceabc53f
Rename ModSelect{Overlay -> }Panel 2022-07-22 19:17:22 +02:00
Bartłomiej Dach
a3090003de
Add tooltip showing contents of mod preset 2022-07-21 23:29:21 +02:00
Bartłomiej Dach
bdff7f1ef4
Implement basic appearance of mod preset panels 2022-07-21 23:29:21 +02:00
Bartłomiej Dach
6cd18fad99
Fix code inspections after base panel class extraction 2022-07-21 23:29:08 +02:00
Bartłomiej Dach
d796b7d53c
Extract base mod select overlay panel presentation logic 2022-07-21 22:37:00 +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
Dean Herbert
f71f6302fd Remove unnecessary null casts 2022-06-24 14:50:11 +09:00
Bartłomiej Dach
7013909322
Remove unnecessary protected virtual 2022-06-21 16:43:04 +02:00
Bartłomiej Dach
f564ed589f
Alter sequential hotkey style to always use visible index
Previous behaviour was once mentioned off-hand as unintuitive.
2022-06-21 15:22:18 +02:00
Bartłomiej Dach
9e5cc89edb
Fix classic hotkeys toggling filtered mods 2022-06-21 15:01:33 +02:00
Bartłomiej Dach
da1814e7c3
Restructure everything to fix free mod overlay issue 2022-06-21 14:48:41 +02:00
Bartłomiej Dach
7b7b8c1892
Implement behaviour for classic selection style 2022-06-21 14:24:30 +02:00
Bartłomiej Dach
234120ff43
Forward entire event to IModHotkeyHandler
Required for shift handling in the classic implementation.
2022-06-21 13:37:17 +02:00
Bartłomiej Dach
658f5341c7
Set up flow for switching between hotkey styles 2022-06-21 13:34:58 +02:00
Bartłomiej Dach
5abd8a07d2
Add setting for changing mod select hotkey style 2022-06-21 13:33:17 +02: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
a1b8fa0992
Disable "select all mods" button if all are selected 2022-05-25 23:06:12 +02:00