From 2a5d4b903cdea9766e7b82069b5ee946af17b307 Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Mon, 8 Jul 2024 07:09:49 +1000 Subject: [PATCH] Add Analyzer to disallow `^= true` --- .global.editorconfig.ini | 2 + .../UseSimplerBoolFlipAnalyzer.cs | 79 ++++++++++++++++++ .../UseSimplerBoolFlipAnalyzerTests.cs | 40 +++++++++ References/BizHawk.Analyzer.dll | Bin 36864 -> 38912 bytes src/BizHawk.Client.Common/Controller.cs | 5 +- src/BizHawk.Client.Common/RecentFiles.cs | 4 +- src/BizHawk.Client.Common/SaveSlotManager.cs | 2 +- src/BizHawk.Client.Common/tools/Cheat.cs | 2 +- .../CustomControls/InputRoll/InputRoll.cs | 7 +- .../Extensions/ToolExtensions.cs | 2 +- src/BizHawk.Client.EmuHawk/MainForm.Events.cs | 60 +++++-------- src/BizHawk.Client.EmuHawk/MainForm.Hotkey.cs | 11 ++- src/BizHawk.Client.EmuHawk/MainForm.Movie.cs | 2 +- src/BizHawk.Client.EmuHawk/MainForm.cs | 64 +++++++------- src/BizHawk.Client.EmuHawk/PlatformChooser.cs | 4 +- .../RetroAchievements/RAIntegration.cs | 6 +- .../RCheevos.Achievements.cs | 4 +- .../RetroAchievements/RCheevos.cs | 17 ++-- .../config/AnalogRangeConfig.cs | 2 +- .../config/DisplayConfig.cs | 4 +- .../tools/BasicBot/BasicBot.cs | 12 +-- src/BizHawk.Client.EmuHawk/tools/CDL.cs | 12 +-- .../tools/Cheats/Cheats.cs | 14 +--- .../tools/Debugger/BreakpointControl.cs | 12 +-- .../tools/HexEditor/HexEditor.cs | 2 +- .../tools/Lua/LuaConsole.cs | 11 +-- .../tools/Lua/LuaFunctionsForm.cs | 6 +- .../tools/NES/NESPPU.cs | 4 +- .../tools/SNES/SNESGraphicsDebugger.cs | 8 +- .../tools/TAStudio/PlaybackBox.cs | 15 +--- .../tools/TAStudio/TAStudio.MenuItems.cs | 44 +++------- .../tools/TAStudio/TAStudio.cs | 2 +- .../tools/TI83/TI83KeyPad.cs | 3 +- .../tools/VirtualPads/VirtualpadsTool.cs | 8 +- .../VirtualPads/controls/VirtualPadButton.cs | 2 +- .../tools/Watch/RamSearch.cs | 20 ++--- .../tools/Watch/RamWatch.cs | 5 +- .../BizHawk.Emulation.Cores.csproj | 2 +- 38 files changed, 257 insertions(+), 242 deletions(-) create mode 100644 ExternalProjects/BizHawk.Analyzer/UseSimplerBoolFlipAnalyzer.cs create mode 100644 ExternalProjects/BizHawk.AnalyzersTests/BizHawk.Analyzer/UseSimplerBoolFlipAnalyzerTests.cs diff --git a/.global.editorconfig.ini b/.global.editorconfig.ini index 4af46f526ea..321b5b618e7 100644 --- a/.global.editorconfig.ini +++ b/.global.editorconfig.ini @@ -22,6 +22,8 @@ dotnet_diagnostic.BHI1101.severity = error dotnet_diagnostic.BHI1102.severity = error # Don't call typeof(T).ToString(), use nameof operator or typeof(T).FullName dotnet_diagnostic.BHI1103.severity = error +# Don't use ^= (XOR-assign) for inverting the value of booleans +dotnet_diagnostic.BHI1104.severity = error # Brackets of collection expression should be separated with spaces dotnet_diagnostic.BHI1110.severity = warning # Expression-bodied member should be flowed to next line correctly diff --git a/ExternalProjects/BizHawk.Analyzer/UseSimplerBoolFlipAnalyzer.cs b/ExternalProjects/BizHawk.Analyzer/UseSimplerBoolFlipAnalyzer.cs new file mode 100644 index 00000000000..32b83543ebc --- /dev/null +++ b/ExternalProjects/BizHawk.Analyzer/UseSimplerBoolFlipAnalyzer.cs @@ -0,0 +1,79 @@ +namespace BizHawk.Analyzers; + +using System.Collections.Immutable; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Operations; + +/// shoutouts to SimpleFlips +[DiagnosticAnalyzer(LanguageNames.CSharp)] +public sealed class UseSimplerBoolFlipAnalyzer : DiagnosticAnalyzer +{ + private const string ERR_MSG_SIMPLE = "Use e.g. `b = !b;` instead of `b ^= true;`"; + + private const string ERR_MSG_COMPLEX = $"{ERR_MSG_SIMPLE} (you may want to store part of the expression in a local variable to avoid repeated side-effects or computation)"; + + private static readonly DiagnosticDescriptor DiagUseSimplerBoolFlip = new( + id: "BHI1104", + title: "Don't use ^= (XOR-assign) for inverting the value of booleans", + messageFormat: "{0}", + category: "Usage", + defaultSeverity: DiagnosticSeverity.Error, + isEnabledByDefault: true); + + public override ImmutableArray SupportedDiagnostics { get; } = ImmutableArray.Create(DiagUseSimplerBoolFlip); + + public override void Initialize(AnalysisContext context) + { + context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); + context.EnableConcurrentExecution(); + ISymbol? boolSym = null; + context.RegisterOperationAction( + oac => + { + static bool IsZeroWorkLocalOrFieldRef(IOperation trunk) + { + while (trunk.Kind is OperationKind.FieldReference) + { + if (trunk.ChildOperations.Count is 0) return true; // in the unit test, the node(s) for the implicit `this.` are missing for some reason + trunk = trunk.ChildOperations.First(); + } + return trunk.Kind is OperationKind.InstanceReference or OperationKind.LocalReference; + } + var operation = (ICompoundAssignmentOperation) oac.Operation; + if (operation.OperatorKind is not BinaryOperatorKind.ExclusiveOr) return; + boolSym ??= oac.Compilation.GetTypeByMetadataName("System.Boolean")!; + if (!boolSym.Matches(operation.Type)) return; + if (operation.Value.Kind is not OperationKind.Literal) return; + var lhsOp = operation.Target; + bool lhsIsSimpleExpr; + switch (lhsOp.Kind) + { + case OperationKind.PropertyReference: + lhsIsSimpleExpr = false; + break; + case OperationKind.FieldReference: + lhsIsSimpleExpr = IsZeroWorkLocalOrFieldRef(lhsOp); + break; + case OperationKind.LocalReference: + lhsIsSimpleExpr = true; + break; + case OperationKind.ArrayElementReference: + lhsIsSimpleExpr = false; + break; + default: + oac.ReportDiagnostic(Diagnostic.Create(DiagUseSimplerBoolFlip, operation.Syntax.GetLocation(), $"Left-hand side of XOR-assign was of an unexpected kind: {lhsOp.GetType().FullName}")); + return; + } + oac.ReportDiagnostic(Diagnostic.Create( + DiagUseSimplerBoolFlip, + operation.Syntax.GetLocation(), + lhsIsSimpleExpr ? DiagnosticSeverity.Error : DiagnosticSeverity.Warning, + additionalLocations: null, + properties: null, + lhsIsSimpleExpr ? ERR_MSG_SIMPLE : ERR_MSG_COMPLEX)); + }, + OperationKind.CompoundAssignment); + } +} diff --git a/ExternalProjects/BizHawk.AnalyzersTests/BizHawk.Analyzer/UseSimplerBoolFlipAnalyzerTests.cs b/ExternalProjects/BizHawk.AnalyzersTests/BizHawk.Analyzer/UseSimplerBoolFlipAnalyzerTests.cs new file mode 100644 index 00000000000..9caf862c974 --- /dev/null +++ b/ExternalProjects/BizHawk.AnalyzersTests/BizHawk.Analyzer/UseSimplerBoolFlipAnalyzerTests.cs @@ -0,0 +1,40 @@ +namespace BizHawk.Tests.Analyzers; + +using System.Threading.Tasks; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using Verify = Microsoft.CodeAnalysis.CSharp.Testing.CSharpAnalyzerVerifier< + BizHawk.Analyzers.UseSimplerBoolFlipAnalyzer, + Microsoft.CodeAnalysis.Testing.DefaultVerifier>; + +[TestClass] +public sealed class UseSimplerBoolFlipAnalyzerTests +{ + [TestMethod] + public Task CheckMisuseOfXORAssignment() + => Verify.VerifyAnalyzerAsync(""" + public static class Cases { + private static int _z = default; + private static bool _a = default; + private static void CasesMethod() { + _z ^= 0xA5A5; + _a ^= DummyMethod(); + {|BHI1104:_a ^= true|}; + var b = false; + {|BHI1104:b ^= true|}; + bool c = default; + {|BHI1104:c ^= false|}; // this is effectively a no-op so there's no reason it would be used in the first place, but it was easier to flag both + {|BHI1104:AnotherClass.GetInstance().Prop ^= true|}; // care needs to be taken with non-trivial expressions like this; a different message will be given + } + private static bool DummyMethod() + => default; + } + public sealed class AnotherClass { + public static AnotherClass GetInstance() + => new(); + public bool Prop { get; set; } + private AnotherClass() {} + } + """); +} diff --git a/References/BizHawk.Analyzer.dll b/References/BizHawk.Analyzer.dll index 7ab18256e5fde39927fe5840aa4bc5bc2f2f3526..c72f054f260358605974d0b5352f3ba3aa2920ce 100644 GIT binary patch delta 15724 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 diff --git a/src/BizHawk.Client.Common/Controller.cs b/src/BizHawk.Client.Common/Controller.cs index 506a4560726..e359e2349a1 100644 --- a/src/BizHawk.Client.Common/Controller.cs +++ b/src/BizHawk.Client.Common/Controller.cs @@ -147,10 +147,7 @@ public void Overrides(OverrideAdapter controller) _axes[button] = controller.AxisValue(button); } - foreach (var button in controller.InversedButtons) - { - _buttons[button] ^= true; - } + foreach (var button in controller.InversedButtons) _buttons[button] = !_buttons[button]; } public void BindMulti(string button, string controlString) diff --git a/src/BizHawk.Client.Common/RecentFiles.cs b/src/BizHawk.Client.Common/RecentFiles.cs index 741a9738834..5f37582d1b0 100644 --- a/src/BizHawk.Client.Common/RecentFiles.cs +++ b/src/BizHawk.Client.Common/RecentFiles.cs @@ -74,8 +74,6 @@ public bool Remove(string newFile) } public void ToggleAutoLoad() - { - AutoLoad ^= true; - } + => AutoLoad = !AutoLoad; } } diff --git a/src/BizHawk.Client.Common/SaveSlotManager.cs b/src/BizHawk.Client.Common/SaveSlotManager.cs index 0d396f73d63..5760e218015 100644 --- a/src/BizHawk.Client.Common/SaveSlotManager.cs +++ b/src/BizHawk.Client.Common/SaveSlotManager.cs @@ -67,7 +67,7 @@ public void ClearRedoList() public void ToggleRedo(IMovie movie, int slot) { - if (slot is >= 1 and <= 10 && movie is not ITasMovie) _redo[slot - 1] ^= true; + if (slot is >= 1 and <= 10 && movie is not ITasMovie) _redo[slot - 1] = !_redo[slot - 1]; } public bool IsRedo(IMovie movie, int slot) diff --git a/src/BizHawk.Client.Common/tools/Cheat.cs b/src/BizHawk.Client.Common/tools/Cheat.cs index e91f720b02d..fc64c3242b1 100644 --- a/src/BizHawk.Client.Common/tools/Cheat.cs +++ b/src/BizHawk.Client.Common/tools/Cheat.cs @@ -149,7 +149,7 @@ public void Toggle(bool handleChange = true) { if (!IsSeparator) { - _enabled ^= true; + _enabled = !_enabled; if (handleChange) { Changes(); diff --git a/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.cs b/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.cs index 75a5fe67360..ede55f46d6e 100644 --- a/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.cs +++ b/src/BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.cs @@ -988,7 +988,7 @@ public IEnumerable GenerateContextMenuItems() ShortcutKeyDisplayString = RotateHotkeyStr }; - rotate.Click += (o, ev) => { HorizontalOrientation ^= true; }; + rotate.Click += (_, _) => HorizontalOrientation = !HorizontalOrientation; yield return rotate; } @@ -1372,10 +1372,7 @@ protected override void OnKeyDown(KeyEventArgs e) } else if (e.IsCtrlShift(Keys.F)) { - if (Rotatable) - { - HorizontalOrientation ^= true; - } + if (Rotatable) HorizontalOrientation = !HorizontalOrientation; } // Scroll else if (e.IsPressed(Keys.PageUp)) diff --git a/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs b/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs index a765b61d8ef..c5b23998473 100644 --- a/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs +++ b/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs @@ -189,7 +189,7 @@ public static ToolStripItem[] RecentMenu( Text = recent.Frozen ? "&Unfreeze" : "&Freeze", Image = recent.Frozen ? Properties.Resources.Unfreeze : Properties.Resources.Freeze }; - freezeItem.Click += (o, ev) => recent.Frozen ^= true; + freezeItem.Click += (_, _) => recent.Frozen = !recent.Frozen; items.Add(freezeItem); if (!noAutoload) diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs index 5c03d6e7f4c..b33ee1f654c 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -359,13 +359,10 @@ private void QuickLoadstateMenuItem_Click(object sender, EventArgs e) private void LoadNamedStateMenuItem_Click(object sender, EventArgs e) => LoadStateAs(); private void AutoloadLastSlotMenuItem_Click(object sender, EventArgs e) - { - Config.AutoLoadLastSaveSlot ^= true; - } + => Config.AutoLoadLastSaveSlot = !Config.AutoLoadLastSaveSlot; + private void AutosaveLastSlotMenuItem_Click(object sender, EventArgs e) - { - Config.AutoSaveLastSaveSlot ^= true; - } + => Config.AutoSaveLastSaveSlot = !Config.AutoSaveLastSaveSlot; private void SelectSlotMenuItems_Click(object sender, EventArgs e) { @@ -510,14 +507,10 @@ private void StopMovieWithoutSavingMenuItem_Click(object sender, EventArgs e) } private void AutomaticMovieBackupMenuItem_Click(object sender, EventArgs e) - { - Config.Movies.EnableBackupMovies ^= true; - } + => Config.Movies.EnableBackupMovies = !Config.Movies.EnableBackupMovies; private void FullMovieLoadstatesMenuItem_Click(object sender, EventArgs e) - { - Config.Movies.VBAStyleMovieLoadState ^= true; - } + => Config.Movies.VBAStyleMovieLoadState = !Config.Movies.VBAStyleMovieLoadState; private void MovieEndFinishMenuItem_Click(object sender, EventArgs e) { @@ -601,9 +594,7 @@ private void ScreenshotClientClipboardMenuItem_Click(object sender, EventArgs e) } private void ScreenshotCaptureOSDMenuItem_Click(object sender, EventArgs e) - { - Config.ScreenshotCaptureOsd ^= true; - } + => Config.ScreenshotCaptureOsd = !Config.ScreenshotCaptureOsd; private void ExitMenuItem_Click(object sender, EventArgs e) { @@ -728,25 +719,19 @@ private void DisplayInputMenuItem_Click(object sender, EventArgs e) } private void DisplayRerecordsMenuItem_Click(object sender, EventArgs e) - { - Config.DisplayRerecordCount ^= true; - } + => Config.DisplayRerecordCount = !Config.DisplayRerecordCount; private void DisplaySubtitlesMenuItem_Click(object sender, EventArgs e) - { - Config.DisplaySubtitles ^= true; - } + => Config.DisplaySubtitles = !Config.DisplaySubtitles; private void DisplayStatusBarMenuItem_Click(object sender, EventArgs e) { - Config.DispChromeStatusBarWindowed ^= true; + Config.DispChromeStatusBarWindowed = !Config.DispChromeStatusBarWindowed; SetStatusBar(); } private void DisplayMessagesMenuItem_Click(object sender, EventArgs e) - { - Config.DisplayMessages ^= true; - } + => Config.DisplayMessages = !Config.DisplayMessages; private void DisplayLogWindowMenuItem_Click(object sender, EventArgs e) { @@ -959,7 +944,7 @@ private void ProfilesMenuItem_Click(object sender, EventArgs e) private void ClockThrottleMenuItem_Click(object sender, EventArgs e) { - Config.ClockThrottle ^= true; + Config.ClockThrottle = !Config.ClockThrottle; if (Config.ClockThrottle) { var old = Config.SoundThrottle; @@ -982,7 +967,7 @@ private void ClockThrottleMenuItem_Click(object sender, EventArgs e) private void AudioThrottleMenuItem_Click(object sender, EventArgs e) { - Config.SoundThrottle ^= true; + Config.SoundThrottle = !Config.SoundThrottle; RewireSound(); if (Config.SoundThrottle) { @@ -1000,7 +985,7 @@ private void AudioThrottleMenuItem_Click(object sender, EventArgs e) private void VsyncThrottleMenuItem_Click(object sender, EventArgs e) { - Config.VSyncThrottle ^= true; + Config.VSyncThrottle = !Config.VSyncThrottle; _presentationPanel.Resized = true; if (Config.VSyncThrottle) { @@ -1024,7 +1009,7 @@ private void VsyncThrottleMenuItem_Click(object sender, EventArgs e) private void VsyncEnabledMenuItem_Click(object sender, EventArgs e) { - Config.VSync ^= true; + Config.VSync = !Config.VSync; if (!Config.VSyncThrottle) // when vsync throttle is on, vsync is forced to on, so no change to make here { _presentationPanel.Resized = true; @@ -1038,14 +1023,12 @@ private void UnthrottledMenuItem_Click(object sender, EventArgs e) private void ToggleUnthrottled() { - Config.Unthrottled ^= true; + Config.Unthrottled = !Config.Unthrottled; ThrottleMessage(); } private void MinimizeSkippingMenuItem_Click(object sender, EventArgs e) - { - Config.AutoMinimizeSkipping ^= true; - } + => Config.AutoMinimizeSkipping = !Config.AutoMinimizeSkipping; private void NeverSkipMenuItem_Click(object sender, EventArgs e) { Config.FrameSkip = 0; FrameSkipMessage(); } private void Frameskip1MenuItem_Click(object sender, EventArgs e) { Config.FrameSkip = 1; FrameSkipMessage(); } @@ -1781,9 +1764,7 @@ private void N64ControllerSettingsMenuItem_Click(object sender, EventArgs e) } private void N64CircularAnalogRangeMenuItem_Click(object sender, EventArgs e) - { - Config.N64UseCircularAnalogConstraint ^= true; - } + => Config.N64UseCircularAnalogConstraint = !Config.N64UseCircularAnalogConstraint; private static void Mupen64PlusSetMupenStyleLag(bool newValue, ISettingsAdapter settable) { @@ -2450,7 +2431,7 @@ private void ClearSramContextMenuItem_Click(object sender, EventArgs e) private void ShowMenuContextMenuItem_Click(object sender, EventArgs e) { - MainMenuStrip.Visible ^= true; + MainMenuStrip.Visible = !MainMenuStrip.Visible; FrameBufferResized(); } @@ -2558,8 +2539,9 @@ private void LinkConnectStatusBarButton_Click(object sender, EventArgs e) // toggle Link status (only outside of a movie session) if (!MovieSession.Movie.IsPlaying()) { - Emulator.AsLinkable().LinkConnected ^= true; - Console.WriteLine("Cable connect status to {0}", Emulator.AsLinkable().LinkConnected); + var core = Emulator.AsLinkable(); + core.LinkConnected = !core.LinkConnected; + Console.WriteLine($"Cable connect status to {core.LinkConnected}"); } } diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Hotkey.cs b/src/BizHawk.Client.EmuHawk/MainForm.Hotkey.cs index 071c942098f..9df8e26fc4a 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.Hotkey.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.Hotkey.cs @@ -151,7 +151,7 @@ void ToggleGambatteSyncSetting( RebootCore(); break; case "Toggle Skip Lag Frame": - Config.SkipLagFrame ^= true; + Config.SkipLagFrame = !Config.SkipLagFrame; AddOnScreenMessage($"Skip Lag Frames toggled {(Config.SkipLagFrame ? "On" : "Off")}"); break; case "Toggle Key Priority": @@ -382,15 +382,18 @@ void ToggleGambatteSyncSetting( break; case "Toggle Follow Cursor": if (!Tools.IsLoaded()) return false; - Tools.TAStudio.TasPlaybackBox.FollowCursor ^= true; + var playbackBox = Tools.TAStudio.TasPlaybackBox; + playbackBox.FollowCursor = !playbackBox.FollowCursor; break; case "Toggle Auto-Restore": if (!Tools.IsLoaded()) return false; - Tools.TAStudio.TasPlaybackBox.AutoRestore ^= true; + var playbackBox1 = Tools.TAStudio.TasPlaybackBox; + playbackBox1.AutoRestore = !playbackBox1.AutoRestore; break; case "Toggle Turbo Seek": if (!Tools.IsLoaded()) return false; - Tools.TAStudio.TasPlaybackBox.TurboSeek ^= true; + var playbackBox2 = Tools.TAStudio.TasPlaybackBox; + playbackBox2.TurboSeek = !playbackBox2.TurboSeek; break; case "Undo": if (!Tools.IsLoaded()) return false; diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Movie.cs b/src/BizHawk.Client.EmuHawk/MainForm.Movie.cs index ff10c7230d4..a4e8564e7b4 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.Movie.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.Movie.cs @@ -129,7 +129,7 @@ private void ToggleReadOnly() { if (MovieSession.Movie.IsActive()) { - MovieSession.ReadOnly ^= true; + MovieSession.ReadOnly = !MovieSession.ReadOnly; AddOnScreenMessage(MovieSession.ReadOnly ? "Movie read-only mode" : "Movie read+write mode"); } else diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 868585eba80..9a747a827d3 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -120,7 +120,7 @@ ToolStripItem[] CreateWindowSizeFactorSubmenus() var GBInSGBMenuItem = new ToolStripMenuItem { Text = "GB in SGB" }; GBInSGBMenuItem.Click += (_, _) => { - Config.GbAsSgb ^= true; + Config.GbAsSgb = !Config.GbAsSgb; if (Emulator.SystemId is VSystemID.Raw.GB or VSystemID.Raw.GBC or VSystemID.Raw.SGB) FlagNeedsReboot(); }; CoresSubMenu.DropDownItems.Add(GBInSGBMenuItem); @@ -1298,7 +1298,7 @@ public void UnpauseEmulator() public void TogglePause() { - EmulatorPaused ^= true; + EmulatorPaused = !EmulatorPaused; SetPauseStatusBarIcon(); // TODO: have tastudio set a pause status change callback, or take control over pause @@ -1626,16 +1626,16 @@ private void SNES_ToggleBg(int layer) switch (layer) { case 1: - result = s.ShowBG1_0 = s.ShowBG1_1 ^= true; + result = s.ShowBG1_0 = s.ShowBG1_1 = !s.ShowBG1_1; break; case 2: - result = s.ShowBG2_0 = s.ShowBG2_1 ^= true; + result = s.ShowBG2_0 = s.ShowBG2_1 = !s.ShowBG2_1; break; case 3: - result = s.ShowBG3_0 = s.ShowBG3_1 ^= true; + result = s.ShowBG3_0 = s.ShowBG3_1 = !s.ShowBG3_1; break; case 4: - result = s.ShowBG4_0 = s.ShowBG4_1 ^= true; + result = s.ShowBG4_0 = s.ShowBG4_1 = !s.ShowBG4_1; break; } @@ -1648,16 +1648,16 @@ private void SNES_ToggleBg(int layer) switch (layer) { case 1: - result = s.ShowBG1_0 = s.ShowBG1_1 ^= true; + result = s.ShowBG1_0 = s.ShowBG1_1 = !s.ShowBG1_1; break; case 2: - result = s.ShowBG2_0 = s.ShowBG2_1 ^= true; + result = s.ShowBG2_0 = s.ShowBG2_1 = !s.ShowBG2_1; break; case 3: - result = s.ShowBG3_0 = s.ShowBG3_1 ^= true; + result = s.ShowBG3_0 = s.ShowBG3_1 = !s.ShowBG3_1; break; case 4: - result = s.ShowBG4_0 = s.ShowBG4_1 ^= true; + result = s.ShowBG4_0 = s.ShowBG4_1 = !s.ShowBG4_1; break; } @@ -1670,16 +1670,16 @@ private void SNES_ToggleBg(int layer) switch (layer) { case 1: - result = s.ShowBg0 ^= true; + result = s.ShowBg0 = !s.ShowBg0; break; case 2: - result = s.ShowBg1 ^= true; + result = s.ShowBg1 = !s.ShowBg1; break; case 3: - result = s.ShowBg2 ^= true; + result = s.ShowBg2 = !s.ShowBg2; break; case 4: - result = s.ShowBg3 ^= true; + result = s.ShowBg3 = !s.ShowBg3; break; } @@ -1704,10 +1704,10 @@ private void SNES_ToggleObj(int layer) var s = bsnes.GetSettings(); result = layer switch { - 1 => (s.ShowOBJ_0 ^= true), - 2 => (s.ShowOBJ_1 ^= true), - 3 => (s.ShowOBJ_2 ^= true), - 4 => (s.ShowOBJ_3 ^= true), + 1 => s.ShowOBJ_0 = !s.ShowOBJ_0, + 2 => s.ShowOBJ_1 = !s.ShowOBJ_1, + 3 => s.ShowOBJ_2 = !s.ShowOBJ_2, + 4 => s.ShowOBJ_3 = !s.ShowOBJ_3, _ => result }; @@ -1719,10 +1719,10 @@ private void SNES_ToggleObj(int layer) var s = snes9X.GetSettings(); result = layer switch { - 1 => (s.ShowSprites0 ^= true), - 2 => (s.ShowSprites1 ^= true), - 3 => (s.ShowSprites2 ^= true), - 4 => (s.ShowSprites3 ^= true), + 1 => s.ShowSprites0 = !s.ShowSprites0, + 2 => s.ShowSprites1 = !s.ShowSprites1, + 3 => s.ShowSprites2 = !s.ShowSprites2, + 4 => s.ShowSprites3 = !s.ShowSprites3, _ => result }; @@ -2646,28 +2646,20 @@ private void SaveConfig(string path = "") } private void ToggleFps() - { - Config.DisplayFps ^= true; - } + => Config.DisplayFps = !Config.DisplayFps; private void ToggleFrameCounter() - { - Config.DisplayFrameCounter ^= true; - } + => Config.DisplayFrameCounter = !Config.DisplayFrameCounter; private void ToggleLagCounter() - { - Config.DisplayLagCounter ^= true; - } + => Config.DisplayLagCounter = !Config.DisplayLagCounter; private void ToggleInputDisplay() - { - Config.DisplayInput ^= true; - } + => Config.DisplayInput = !Config.DisplayInput; public void ToggleSound() { - Config.SoundEnabled ^= true; + Config.SoundEnabled = !Config.SoundEnabled; Sound.StopSound(); Sound.StartSound(); } @@ -2945,7 +2937,7 @@ private void UpdateKeyPriorityIcon() private void ToggleBackgroundInput() { - Config.AcceptBackgroundInput ^= true; + Config.AcceptBackgroundInput = !Config.AcceptBackgroundInput; AddOnScreenMessage($"Background Input {(Config.AcceptBackgroundInput ? "enabled" : "disabled")}"); } diff --git a/src/BizHawk.Client.EmuHawk/PlatformChooser.cs b/src/BizHawk.Client.EmuHawk/PlatformChooser.cs index 6ee47342369..5a47d7b5eb7 100644 --- a/src/BizHawk.Client.EmuHawk/PlatformChooser.cs +++ b/src/BizHawk.Client.EmuHawk/PlatformChooser.cs @@ -73,8 +73,6 @@ private void OkBtn_Click(object sender, EventArgs e) } private void label4_Click(object sender, EventArgs e) - { - AlwaysCheckbox.Checked ^= true; - } + => AlwaysCheckbox.Checked = !AlwaysCheckbox.Checked; } } diff --git a/src/BizHawk.Client.EmuHawk/RetroAchievements/RAIntegration.cs b/src/BizHawk.Client.EmuHawk/RetroAchievements/RAIntegration.cs index 1d34cdccd5e..6ece2ed1c6d 100644 --- a/src/BizHawk.Client.EmuHawk/RetroAchievements/RAIntegration.cs +++ b/src/BizHawk.Client.EmuHawk/RetroAchievements/RAIntegration.cs @@ -67,7 +67,11 @@ private void RebuildMenu() Checked = _getConfig().RAAutostart, CheckOnClick = true, }; - tsi.CheckedChanged += (_, _) => _getConfig().RAAutostart ^= true; + tsi.CheckedChanged += (_, _) => + { + var config = _getConfig(); + config.RAAutostart = !config.RAAutostart; + }; _raDropDownItems.Add(tsi); var tss = new ToolStripSeparator(); diff --git a/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Achievements.cs b/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Achievements.cs index 5823a37598f..bd4fe51082c 100644 --- a/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Achievements.cs +++ b/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Achievements.cs @@ -147,14 +147,14 @@ private void ToggleUnofficialCheevos() { if (_gameData.GameID == 0) { - AllowUnofficialCheevos ^= true; + AllowUnofficialCheevos = !AllowUnofficialCheevos; return; } _activeModeUnlocksRequest.Wait(); DeactivateCheevos(HardcoreMode); - AllowUnofficialCheevos ^= true; + AllowUnofficialCheevos = !AllowUnofficialCheevos; ActivateCheevos(HardcoreMode); } diff --git a/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.cs b/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.cs index bb08325a646..a386aa4258e 100644 --- a/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.cs +++ b/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.cs @@ -72,7 +72,11 @@ private void BuildMenu(ToolStripItemCollection raDropDownItems) Checked = _getConfig().RAAutostart, CheckOnClick = true, }; - autoStartRAItem.CheckedChanged += (_, _) => _getConfig().RAAutostart ^= true; + autoStartRAItem.CheckedChanged += (_, _) => + { + var config = _getConfig(); + config.RAAutostart = !config.RAAutostart; + }; raDropDownItems.Add(autoStartRAItem); var loginItem = new ToolStripMenuItem("Login") @@ -110,7 +114,7 @@ private void BuildMenu(ToolStripItemCollection raDropDownItems) Checked = CheevosActive, CheckOnClick = true }; - enableCheevosItem.CheckedChanged += (_, _) => CheevosActive ^= true; + enableCheevosItem.CheckedChanged += (_, _) => CheevosActive = !CheevosActive; raDropDownItems.Add(enableCheevosItem); var enableLboardsItem = new ToolStripMenuItem("Enable Leaderboards") @@ -119,7 +123,7 @@ private void BuildMenu(ToolStripItemCollection raDropDownItems) CheckOnClick = true, Enabled = HardcoreMode }; - enableLboardsItem.CheckedChanged += (_, _) => LBoardsActive ^= true; + enableLboardsItem.CheckedChanged += (_, _) => LBoardsActive = !LBoardsActive; raDropDownItems.Add(enableLboardsItem); var enableRichPresenceItem = new ToolStripMenuItem("Enable Rich Presence") @@ -127,7 +131,7 @@ private void BuildMenu(ToolStripItemCollection raDropDownItems) Checked = RichPresenceActive, CheckOnClick = true }; - enableRichPresenceItem.CheckedChanged += (_, _) => RichPresenceActive ^= true; + enableRichPresenceItem.CheckedChanged += (_, _) => RichPresenceActive = !RichPresenceActive; raDropDownItems.Add(enableRichPresenceItem); var enableHardcoreItem = new ToolStripMenuItem("Enable Hardcore Mode") @@ -137,8 +141,7 @@ private void BuildMenu(ToolStripItemCollection raDropDownItems) }; enableHardcoreItem.CheckedChanged += (_, _) => { - _hardcoreMode ^= true; - + _hardcoreMode = !_hardcoreMode; if (HardcoreMode) { _hardcoreMode = _mainForm.RebootCore(); // unset hardcore mode if we fail to reboot core somehow @@ -159,7 +162,7 @@ private void BuildMenu(ToolStripItemCollection raDropDownItems) Checked = EnableSoundEffects, CheckOnClick = true }; - enableSoundEffectsItem.CheckedChanged += (_, _) => EnableSoundEffects ^= true; + enableSoundEffectsItem.CheckedChanged += (_, _) => EnableSoundEffects = !EnableSoundEffects; raDropDownItems.Add(enableSoundEffectsItem); var enableUnofficialCheevosItem = new ToolStripMenuItem("Test Unofficial Achievements") diff --git a/src/BizHawk.Client.EmuHawk/config/AnalogRangeConfig.cs b/src/BizHawk.Client.EmuHawk/config/AnalogRangeConfig.cs index 9a0aa23098c..c9a4e222c85 100644 --- a/src/BizHawk.Client.EmuHawk/config/AnalogRangeConfig.cs +++ b/src/BizHawk.Client.EmuHawk/config/AnalogRangeConfig.cs @@ -121,7 +121,7 @@ protected override void OnMouseDown(MouseEventArgs e) } else if (e.Button == MouseButtons.Right) { - Radial ^= true; + Radial = !Radial; } base.OnMouseDown(e); diff --git a/src/BizHawk.Client.EmuHawk/config/DisplayConfig.cs b/src/BizHawk.Client.EmuHawk/config/DisplayConfig.cs index 121c2c04757..587cc15070a 100755 --- a/src/BizHawk.Client.EmuHawk/config/DisplayConfig.cs +++ b/src/BizHawk.Client.EmuHawk/config/DisplayConfig.cs @@ -366,9 +366,7 @@ private void LinkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs } private void Label13_Click(object sender, EventArgs e) - { - cbAllowTearing.Checked ^= true; - } + => cbAllowTearing.Checked = !cbAllowTearing.Checked; private void BtnDefaults_Click(object sender, EventArgs e) { diff --git a/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs b/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs index 5a4396de132..bb9a77c0514 100644 --- a/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs +++ b/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs @@ -387,9 +387,7 @@ private void MemoryDomainsMenuItem_DropDownOpened(object sender, EventArgs e) => MemoryDomainsMenuItem.ReplaceDropDownItems(MemoryDomains.MenuItems(SetMemoryDomain, _currentDomain.Name).ToArray()); private void BigEndianMenuItem_Click(object sender, EventArgs e) - { - _bigEndian ^= true; - } + => _bigEndian = !_bigEndian; private void DataSizeMenuItem_DropDownOpened(object sender, EventArgs e) { @@ -414,9 +412,7 @@ private void FourByteMenuItem_Click(object sender, EventArgs e) } private void TurboWhileBottingMenuItem_Click(object sender, EventArgs e) - { - Settings.TurboWhenBotting ^= true; - } + => Settings.TurboWhenBotting = !Settings.TurboWhenBotting; private void RunBtn_Click(object sender, EventArgs e) { @@ -1300,9 +1296,7 @@ private void HelpToolStripMenuItem_Click(object sender, EventArgs e) } private void InvisibleEmulationCheckBox_CheckedChanged(object sender, EventArgs e) - { - Settings.InvisibleEmulation ^= true; - } + => Settings.InvisibleEmulation = !Settings.InvisibleEmulation; private void MaximizeAddressBox_TextChanged(object sender, EventArgs e) { diff --git a/src/BizHawk.Client.EmuHawk/tools/CDL.cs b/src/BizHawk.Client.EmuHawk/tools/CDL.cs index 9b8a5e3b2ed..1f054552704 100644 --- a/src/BizHawk.Client.EmuHawk/tools/CDL.cs +++ b/src/BizHawk.Client.EmuHawk/tools/CDL.cs @@ -575,18 +575,12 @@ private void TsbExportText_Click(object sender, EventArgs e) } private void MiAutoSave_Click(object sender, EventArgs e) - { - CDLAutoSave ^= true; - } + => CDLAutoSave = !CDLAutoSave; private void MiAutoStart_Click(object sender, EventArgs e) - { - CDLAutoStart ^= true; - } + => CDLAutoStart = !CDLAutoStart; private void MiAutoResume_Click(object sender, EventArgs e) - { - CDLAutoResume ^= true; - } + => CDLAutoResume = !CDLAutoResume; } } diff --git a/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs b/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs index 40fc5346be4..0c6ed44be97 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs @@ -505,19 +505,13 @@ private void SettingsSubMenu_DropDownOpened(object sender, EventArgs e) } private void AlwaysLoadCheatsMenuItem_Click(object sender, EventArgs e) - { - Config.Cheats.LoadFileByGame ^= true; - } + => Config.Cheats.LoadFileByGame = !Config.Cheats.LoadFileByGame; private void AutoSaveCheatsMenuItem_Click(object sender, EventArgs e) - { - Config.Cheats.AutoSaveOnClose ^= true; - } + => Config.Cheats.AutoSaveOnClose = !Config.Cheats.AutoSaveOnClose; private void CheatsOnOffLoadMenuItem_Click(object sender, EventArgs e) - { - Config.Cheats.DisableOnLoad ^= true; - } + => Config.Cheats.DisableOnLoad = !Config.Cheats.DisableOnLoad; [RestoreDefaults] private void RestoreDefaults() @@ -574,7 +568,7 @@ private void CheatListView_ColumnClick(object sender, InputRoll.ColumnClickEvent MainForm.CheatList.Sort(column.Name, _sortReverse); _sortedColumn = column.Name; - _sortReverse ^= true; + _sortReverse = !_sortReverse; GeneralUpdate(); } diff --git a/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs b/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs index a54330acdb1..cf352002333 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs @@ -218,11 +218,7 @@ private void BreakpointView_ItemActivate(object sender, EventArgs e) var items = EditableItems.ToList(); if (items.Any()) { - foreach (var item in items) - { - item.Active ^= true; - } - + foreach (var item in items) item.Active = !item.Active; BreakpointView.VirtualListSize = _breakpoints.Count; UpdateBreakpointRemoveButton(); UpdateStatsLabel(); @@ -245,11 +241,7 @@ private void UpdateStatsLabel() private void ToggleButton_Click(object sender, EventArgs e) { - foreach (var item in SelectedItems) - { - item.Active ^= true; - } - + foreach (var item in SelectedItems) item.Active = !item.Active; BreakpointView.VirtualListSize = _breakpoints.Count; UpdateStatsLabel(); } diff --git a/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs b/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs index 5cc1ef92470..03a06fdaa33 100644 --- a/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs +++ b/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs @@ -1574,7 +1574,7 @@ private void DataSizeDWordMenuItem_Click(object sender, EventArgs e) private void BigEndianMenuItem_Click(object sender, EventArgs e) { - BigEndian ^= true; + BigEndian = !BigEndian; GeneralUpdate(); } diff --git a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs index 7cff5ff83b2..099183583a9 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs @@ -1094,19 +1094,14 @@ private void OptionsSubMenu_DropDownOpened(object sender, EventArgs e) } private void DisableScriptsOnLoadMenuItem_Click(object sender, EventArgs e) - { - Settings.DisableLuaScriptsOnLoad ^= true; - } + => Settings.DisableLuaScriptsOnLoad = !Settings.DisableLuaScriptsOnLoad; private void ToggleAllIfNoneSelectedMenuItem_Click(object sender, EventArgs e) - { - Settings.ToggleAllIfNoneSelected ^= true; - } + => Settings.ToggleAllIfNoneSelected = !Settings.ToggleAllIfNoneSelected; private void ReloadWhenScriptFileChangesMenuItem_Click(object sender, EventArgs e) { - Settings.ReloadOnScriptFileChange ^= true; - + Settings.ReloadOnScriptFileChange = !Settings.ReloadOnScriptFileChange; if (Settings.ReloadOnScriptFileChange) { AddFileWatches(); diff --git a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaFunctionsForm.cs b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaFunctionsForm.cs index 921de8263f9..aa379733b95 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaFunctionsForm.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaFunctionsForm.cs @@ -99,11 +99,7 @@ public int Column get => _column; set { - if (_column == value) - { - Descending ^= true; - } - + if (_column == value) Descending = !Descending; _column = value; } } diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs b/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs index 9a6443fc259..5918435672b 100644 --- a/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs +++ b/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs @@ -804,9 +804,7 @@ private void NesPPU_FormClosed(object sender, FormClosedEventArgs e) private readonly byte[] _chrRomCache = new byte[8192]; private void ChrROMTileViewerToolStripMenuItem_Click(object sender, EventArgs e) - { - ChrRomView ^= true; - } + => ChrRomView = !ChrRomView; private void CalculateFormSize() { diff --git a/src/BizHawk.Client.EmuHawk/tools/SNES/SNESGraphicsDebugger.cs b/src/BizHawk.Client.EmuHawk/tools/SNES/SNESGraphicsDebugger.cs index 0d893ad13c0..71858075f23 100644 --- a/src/BizHawk.Client.EmuHawk/tools/SNES/SNESGraphicsDebugger.cs +++ b/src/BizHawk.Client.EmuHawk/tools/SNES/SNESGraphicsDebugger.cs @@ -1376,14 +1376,10 @@ private void lblEnPrio1_Click(object sender, EventArgs e) } private void lblEnPrio2_Click(object sender, EventArgs e) - { - checkEN2_OBJ.Checked ^= true; - } + => checkEN2_OBJ.Checked = !checkEN2_OBJ.Checked; private void lblEnPrio3_Click(object sender, EventArgs e) - { - checkEN3_OBJ.Checked ^= true; - } + => checkEN3_OBJ.Checked = !checkEN3_OBJ.Checked; } //class SNESGraphicsDebugger } //namespace BizHawk.Client.EmuHawk diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs index 6e96b576f1d..defe37d0293 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.cs @@ -95,26 +95,19 @@ private void NextMarkerButton_Click(object sender, EventArgs e) private void TurboSeekCheckbox_CheckedChanged(object sender, EventArgs e) { - if (!_loading) - { - Tastudio.Config.TurboSeek ^= true; - } + if (!_loading) Tastudio.Config.TurboSeek = !Tastudio.Config.TurboSeek; } private void AutoRestoreCheckbox_CheckedChanged(object sender, EventArgs e) { - if (!_loading) - { - Tastudio.Settings.AutoRestoreLastPosition ^= true; - } + if (!_loading) Tastudio.Settings.AutoRestoreLastPosition = !Tastudio.Settings.AutoRestoreLastPosition; } private void FollowCursorCheckbox_CheckedChanged(object sender, EventArgs e) { if (!_loading) { - Tastudio.Settings.FollowCursor ^= true; - + Tastudio.Settings.FollowCursor = !Tastudio.Settings.FollowCursor; if (Tastudio.Settings.FollowCursor) { Tastudio.SetVisibleFrame(); @@ -125,7 +118,7 @@ private void FollowCursorCheckbox_CheckedChanged(object sender, EventArgs e) private void RecordingModeCheckbox_MouseClick(object sender, MouseEventArgs e) { - RecordingMode ^= true; + RecordingMode = !RecordingMode; Tastudio.WasRecording = RecordingMode; // hard reset at manual click and hotkey } diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs index 4d2e9d8fea3..7304fb8d4ac 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs @@ -868,9 +868,7 @@ private void SetSeekingCutoffIntervalMenuItem_Click(object sender, EventArgs e) } private void CopyIncludesFrameNoMenuItem_Click(object sender, EventArgs e) - { - Settings.CopyIncludesFrameNo ^= true; - } + => Settings.CopyIncludesFrameNo = !Settings.CopyIncludesFrameNo; private void SetAutosaveIntervalMenuItem_Click(object sender, EventArgs e) { @@ -895,19 +893,13 @@ private void SetAutosaveIntervalMenuItem_Click(object sender, EventArgs e) } private void AutosaveAsBk2MenuItem_Click(object sender, EventArgs e) - { - Settings.AutosaveAsBk2 ^= true; - } + => Settings.AutosaveAsBk2 = !Settings.AutosaveAsBk2; private void AutosaveAsBackupFileMenuItem_Click(object sender, EventArgs e) - { - Settings.AutosaveAsBackupFile ^= true; - } + => Settings.AutosaveAsBackupFile = !Settings.AutosaveAsBackupFile; private void BackupPerFileSaveMenuItem_Click(object sender, EventArgs e) - { - Settings.BackupPerFileSave ^= true; - } + => Settings.BackupPerFileSave = !Settings.BackupPerFileSave; private void ApplyPatternToPaintedInputMenuItem_CheckedChanged(object sender, EventArgs e) { @@ -915,9 +907,7 @@ private void ApplyPatternToPaintedInputMenuItem_CheckedChanged(object sender, Ev } private void SingleClickAxisEditMenuItem_Click(object sender, EventArgs e) - { - Settings.SingleClickAxisEdit ^= true; - } + => Settings.SingleClickAxisEdit = !Settings.SingleClickAxisEdit; private void BindMarkersToInputMenuItem_Click(object sender, EventArgs e) { @@ -925,14 +915,10 @@ private void BindMarkersToInputMenuItem_Click(object sender, EventArgs e) } private void EmptyNewMarkerNotesMenuItem_Click(object sender, EventArgs e) - { - Settings.EmptyMarkers ^= true; - } + => Settings.EmptyMarkers = !Settings.EmptyMarkers; private void AutoPauseAtEndMenuItem_Click(object sender, EventArgs e) - { - Settings.AutoPause ^= true; - } + => Settings.AutoPause = !Settings.AutoPause; private void AutoHoldMenuItem_CheckedChanged(object sender, EventArgs e) { @@ -985,14 +971,10 @@ private void SetCustomsMenuItem_Click(object sender, EventArgs e) } private void OldControlSchemeForBranchesMenuItem_Click(object sender, EventArgs e) - { - Settings.OldControlSchemeForBranches ^= true; - } + => Settings.OldControlSchemeForBranches = !Settings.OldControlSchemeForBranches; private void LoadBranchOnDoubleClickMenuItem_Click(object sender, EventArgs e) - { - Settings.LoadBranchOnDoubleClick ^= true; - } + => Settings.LoadBranchOnDoubleClick = !Settings.LoadBranchOnDoubleClick; private void HeaderMenuItem_Click(object sender, EventArgs e) { @@ -1090,7 +1072,7 @@ private void FollowCursorMenuItem_DropDownOpened(object sender, EventArgs e) private void RotateMenuItem_Click(object sender, EventArgs e) { - TasView.HorizontalOrientation ^= true; + TasView.HorizontalOrientation = !TasView.HorizontalOrientation; CurrentTasMovie.FlagChanges(); } @@ -1102,9 +1084,7 @@ private void HideLagFramesX_Click(object sender, EventArgs e) } private void HideWasLagFramesMenuItem_Click(object sender, EventArgs e) - { - TasView.HideWasLagFrames ^= true; - } + => TasView.HideWasLagFrames = !TasView.HideWasLagFrames; private void AlwaysScrollMenuItem_Click(object sender, EventArgs e) { @@ -1287,7 +1267,7 @@ private void SetUpToolStripColumns() { foreach (ToolStripMenuItem menuItem in dummyObject1.DropDownItems) { - menuItem.Checked ^= true; + menuItem.Checked = !menuItem.Checked; } CurrentTasMovie.FlagChanges(); diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 239bbaa10e6..69e31a5dded 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -703,7 +703,7 @@ private void DummyLoadMacro(string path) private void TastudioToggleReadOnly() { - TasPlaybackBox.RecordingMode ^= true; + TasPlaybackBox.RecordingMode = !TasPlaybackBox.RecordingMode; WasRecording = TasPlaybackBox.RecordingMode; // hard reset at manual click and hotkey } diff --git a/src/BizHawk.Client.EmuHawk/tools/TI83/TI83KeyPad.cs b/src/BizHawk.Client.EmuHawk/tools/TI83/TI83KeyPad.cs index bc47f274308..7facceb6e13 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TI83/TI83KeyPad.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TI83/TI83KeyPad.cs @@ -114,8 +114,7 @@ private void OptionsSubMenu_DropDownOpened(object sender, EventArgs e) private void ShowHotkeysMenuItem_Click(object sender, EventArgs e) { - TI83ToolTips ^= true; - + TI83ToolTips = !TI83ToolTips; if (TI83ToolTips) { SetToolTips(); diff --git a/src/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs b/src/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs index fc12bd66ffa..06a05a219db 100644 --- a/src/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs +++ b/src/BizHawk.Client.EmuHawk/tools/VirtualPads/VirtualpadsTool.cs @@ -224,9 +224,7 @@ private void ClearAllMenuItem_Click(object sender, EventArgs e) } private void StickyMenuItem_Click(object sender, EventArgs e) - { - StickyPads ^= true; - } + => StickyPads = !StickyPads; private void PadBoxContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e) { @@ -244,8 +242,6 @@ private void OptionsSubMenu_DropDownOpened(object sender, EventArgs e) } private void ClearClearsAnalogInputMenuItem_Click(object sender, EventArgs e) - { - ClearAlsoClearsAnalog ^= true; - } + => ClearAlsoClearsAnalog = !ClearAlsoClearsAnalog; } } diff --git a/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs b/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs index ea421ed6575..7d620da1a41 100644 --- a/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs +++ b/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadButton.cs @@ -82,7 +82,7 @@ protected override void WndProc(ref Message m) if (!ReadOnly) { RightClicked = true; - Checked ^= true; + Checked = !Checked; } return; case 0x0205: // WM_RBUTTONUP diff --git a/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs b/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs index 3d766ea7330..f6166455af8 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs @@ -1125,7 +1125,7 @@ private void DWordMenuItem_Click_Click(object sender, EventArgs e) private void CheckMisalignedMenuItem_Click(object sender, EventArgs e) { - _settings.CheckMisAligned ^= true; + _settings.CheckMisAligned = !_settings.CheckMisAligned; SetReboot(true); } @@ -1146,7 +1146,7 @@ private void Previous_LastChangeMenuItem_Click(object sender, EventArgs e) private void BigEndianMenuItem_Click(object sender, EventArgs e) { - _settings.BigEndian ^= true; + _settings.BigEndian = !_settings.BigEndian; _searches.SetEndian(_settings.BigEndian); } @@ -1268,13 +1268,11 @@ private void SettingsSubMenu_DropDownOpened(object sender, EventArgs e) } private void PreviewModeMenuItem_Click(object sender, EventArgs e) - { - Settings.PreviewMode ^= true; - } + => Settings.PreviewMode = !Settings.PreviewMode; private void AutoSearchMenuItem_Click(object sender, EventArgs e) { - _autoSearch ^= true; + _autoSearch = !_autoSearch; AutoSearchCheckBox.Checked = _autoSearch; DoSearchToolButton.Enabled = SearchButton.Enabled = @@ -1282,13 +1280,11 @@ private void AutoSearchMenuItem_Click(object sender, EventArgs e) } private void AutoSearchAccountForLagMenuItem_Click(object sender, EventArgs e) - { - Settings.AutoSearchTakeLagFramesIntoAccount ^= true; - } + => Settings.AutoSearchTakeLagFramesIntoAccount = !Settings.AutoSearchTakeLagFramesIntoAccount; private void ExcludeRamWatchMenuItem_Click(object sender, EventArgs e) { - Settings.AlwaysExcludeRamWatch ^= true; + Settings.AlwaysExcludeRamWatch = !Settings.AlwaysExcludeRamWatch; if (Settings.AlwaysExcludeRamWatch) { RemoveRamWatchesFromList(); @@ -1297,7 +1293,7 @@ private void ExcludeRamWatchMenuItem_Click(object sender, EventArgs e) private void UseUndoHistoryMenuItem_Click(object sender, EventArgs e) { - _searches.UndoEnabled ^= true; + _searches.UndoEnabled = !_searches.UndoEnabled; Settings.UseUndoHistory = _searches.UndoEnabled; } @@ -1626,7 +1622,7 @@ private void WatchListView_ColumnClick(object sender, InputRoll.ColumnClickEvent _searches.Sort(column.Name, _sortReverse); _sortedColumn = column.Name; - _sortReverse ^= true; + _sortReverse = !_sortReverse; WatchListView.Refresh(); } diff --git a/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs b/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs index 1a0bd4d6be2..4a994474abc 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs @@ -580,7 +580,7 @@ private void OrderColumn(RollColumn column) _watches.OrderWatches(column.Name, _sortReverse); _sortedColumn = column.Name; - _sortReverse ^= true; + _sortReverse = !_sortReverse; WatchListView.Refresh(); } @@ -1041,8 +1041,7 @@ private void OriginalMenuItem_Click(object sender, EventArgs e) private void WatchesOnScreenMenuItem_Click(object sender, EventArgs e) { - Config.DisplayRamWatch ^= true; - + Config.DisplayRamWatch = !Config.DisplayRamWatch; if (!Config.DisplayRamWatch) { DisplayManager.OSD.ClearRamWatches(); diff --git a/src/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/src/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj index 3d97f35cd78..d7b08cadde0 100644 --- a/src/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj +++ b/src/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj @@ -5,7 +5,7 @@ true - $(NoWarn);CA1806;CA1825;CA2214;MA0060;MA0084;MA0090;MA0140;SA1100;SA1120;SA1129;SA1137;SA1205;SA1208;SA1400;SA1514;SA1517 + $(NoWarn);BHI1104;CA1806;CA1825;CA2214;MA0060;MA0084;MA0090;MA0140;SA1100;SA1120;SA1129;SA1137;SA1205;SA1208;SA1400;SA1514;SA1517 disable