Commit Graph

603 Commits

Author SHA1 Message Date
0034124d79 Remove unnecessary content clear 2023-05-04 11:25:10 +09:00
26b8c5b852 Fix mod list display not updating after clicking "use current"
This is not a regression from my changes. It was broken before them.
2023-05-04 11:23:51 +09:00
49fb5da1a2 Stop passing preset panel to popover 2023-05-04 11:19:09 +09:00
b12d139317 Remove dead code 2023-05-04 11:16:52 +09:00
99d2616c34 Move drawable construction to load for simplicity 2023-05-04 11:14:51 +09:00
be995f1359 Add localisation support for new button string 2023-05-04 11:11:19 +09:00
b7abab6d8a More variable improvements 2023-05-04 11:10:05 +09:00
0a584f0652 Simplify check logic and improve variable naming 2023-05-04 11:07:09 +09:00
967e801f9c code inspect 2023-05-03 23:26:58 +09:00
debbd376bd move scrollContent update logic to updateActiveState() 2023-05-03 23:24:14 +09:00
f4b1264cc9 use button Enable status to ensure preset name is not null 2023-05-03 23:22:46 +09:00
aa5a026c67 remove local button handle 2023-05-03 23:14:24 +09:00
c609e6345c remove Use Current Mods menu item 2023-05-03 23:02:50 +09:00
e394b487e0 Merge branch 'master' into edit-mods-preset 2023-05-03 12:06:16 +09:00
e808e7316b Mark delegate value unused and add comment to avoid future regression 2023-05-02 13:29:30 +09:00
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
56ab029a58 fix issue where multipler does not update when adjusting speed for preset mod 2023-04-22 13:30:08 -04:00
d025c441ca delay mod save after click save or not popover hidden 2023-03-16 19:48:45 +09:00
42bcc8bafc revert mod store 2023-03-16 19:38:15 +09:00
15f11bb1e8 scorll container and save mod after popover hidden
Requires manual handling of many visual effects
2023-03-11 12:31:33 +09:00
1cd565193e public CheckCurrentModCanBeSave 2023-03-11 11:39:35 +09:00
8b0f127ff2 split ModPresetRow 2023-03-11 11:25:52 +09:00
f4e2620402 fix test 2023-03-10 00:56:22 +09:00
ca416175bb remove useless property 2023-03-09 22:58:44 +09:00
3d746e8dfb content Menu 2023-03-09 22:49:33 +09:00
5a1316f0e5 split save logic 2023-03-09 22:43:06 +09:00
54564e0557 new design 2023-03-07 21:13:35 +09:00
4858d3fd42 Added ability to edit mod presets 2023-03-07 02:00:40 +09:00
908651cc11 make ResetConfirmDialog properly utilise its parent's logic
Adjust name of `DeleteAction` to `DangerousAction`
2023-03-05 20:57:26 +01:00
90227a6496 Rename DeleteConfirmationDialog.cs into DangerousActionDialog.cs 2023-02-27 21:57:59 +01:00
ffcca9fd89 Remove awkward width specification 2023-02-17 23:23:58 +03:00
51940133df Adjust width and add comment 2023-02-17 15:18:45 +03:00
0838fa636f Make triangles slower 2023-02-17 15:16:00 +03:00
a84f20bf32 Add triangles to ModSelectColumn 2023-02-17 03:09:32 +03:00
7bc8908ca9 Partial everything 2022-11-27 00:00:27 +09:00
8cbc0502ae Inline CalculateEffect 2022-09-12 15:51:18 +03:00
324a3723a5 Rewrite DMD 2022-09-10 23:23:04 +03:00
3f93ec8538 Expose counter to inheritors 2022-09-10 23:20:28 +03:00
667854b034 Make effect display have a built-in counter 2022-09-10 23:18:48 +03:00
b056cac10a Remove generic and add default implementation for CalculateEffect 2022-09-10 08:34:29 +03:00
545e0bbcef Adjust inheritors and test 2022-08-29 22:49:25 +03:00
5343c26452 Control colour via Current bindable 2022-08-29 22:48:27 +03:00
7faeed88b0 Add ability to override width of value area 2022-08-29 22:08:43 +03:00
039f009562 Inherit difficulty multiplier display from ModsEffectDiplay 2022-08-27 20:26:05 +03:00
3e828c3416 Move base layout from DifficultyMultiplierDisplay to another class 2022-08-27 20:11:38 +03:00
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
e1fa959f0b Fix language change removing mod column bold text 2022-08-22 13:00:47 +09:00
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
3d14b14cfe Use alternative method for checking panel readiness to eliminate bool flag 2022-08-17 21:56:11 +02:00
3109066e34 Rename {Requires -> Pending}Configuration 2022-08-16 22:45:24 +02:00