/// <summary>The method invoked when the player presses an input button.</summary> /// <param name="sender">The event sender.</param> /// <param name="e">The event arguments.</param> private void OnButtonPressed(object sender, ButtonPressedEventArgs e) { if (this.Layers == null) { return; } // perform bound action this.Monitor.InterceptErrors("handling your input", $"handling input '{e.Button}'", () => { // check context if (!this.CanOverlayNow()) { return; } bool overlayVisible = this.CurrentOverlay != null; ModConfigKeys keys = this.Keys; // toggle overlay if (keys.ToggleLayer.JustPressedUnique()) { if (overlayVisible) { this.CurrentOverlay.Dispose(); this.CurrentOverlay = null; } else { this.CurrentOverlay = new DataLayerOverlay(this.Helper.Events, this.Helper.Input, this.Helper.Reflection, this.Layers, this.CanOverlayNow, this.Config.CombineOverlappingBorders, this.Config.ShowGrid); } this.Helper.Input.Suppress(e.Button); } // cycle layers else if (overlayVisible && keys.NextLayer.JustPressedUnique()) { this.CurrentOverlay.NextLayer(); this.Helper.Input.Suppress(e.Button); } else if (overlayVisible && keys.PrevLayer.JustPressedUnique()) { this.CurrentOverlay.PrevLayer(); this.Helper.Input.Suppress(e.Button); } // shortcut to layer else if (overlayVisible) { ILayer layer = this.ShortcutMap.Where(p => p.Key.JustPressedUnique()).Select(p => p.Value).FirstOrDefault(); if (layer != null && layer != this.CurrentOverlay.CurrentLayer) { this.CurrentOverlay.SetLayer(layer); this.Helper.Input.Suppress(e.Button); } } }); }
/// <summary>The method invoked when the player presses an input button.</summary> /// <param name="sender">The event sender.</param> /// <param name="e">The event arguments.</param> private void InputEvents_ButtonPressed(object sender, EventArgsInput e) { // perform bound action this.Monitor.InterceptErrors("handling your input", $"handling input '{e.Button}'", () => { // check context if (!this.CanOverlayNow()) { return; } bool overlayVisible = this.CurrentOverlay != null; var controls = this.Config.Controls; // toggle overlay if (controls.ToggleLayer.Contains(e.Button)) { if (overlayVisible) { this.CurrentOverlay.Dispose(); this.CurrentOverlay = null; } else { this.CurrentOverlay = new DataLayerOverlay(this.Layers, this.CanOverlayNow, this.Config.CombineOverlappingBorders); } e.SuppressButton(); } // cycle layers else if (overlayVisible && controls.NextLayer.Contains(e.Button)) { this.CurrentOverlay.NextLayer(); e.SuppressButton(); } else if (overlayVisible && controls.PrevLayer.Contains(e.Button)) { this.CurrentOverlay.PrevLayer(); e.SuppressButton(); } }); }
/// <summary>The method invoked when the player presses an input button.</summary> /// <param name="sender">The event sender.</param> /// <param name="e">The event arguments.</param> private void OnButtonPressed(object sender, ButtonPressedEventArgs e) { // perform bound action this.Monitor.InterceptErrors("handling your input", $"handling input '{e.Button}'", () => { // check context if (!this.CanOverlayNow()) { return; } bool overlayVisible = this.CurrentOverlay != null; ModConfigKeys keys = this.Keys; // toggle overlay if (keys.ToggleLayer.Contains(e.Button)) { if (overlayVisible) { this.CurrentOverlay.Dispose(); this.CurrentOverlay = null; } else { this.CurrentOverlay = new DataLayerOverlay(this.Helper.Events, this.Helper.Input, this.Layers, this.CanOverlayNow, this.Config.CombineOverlappingBorders, this.Config.ShowGrid); } this.Helper.Input.Suppress(e.Button); } // cycle layers else if (overlayVisible && keys.NextLayer.Contains(e.Button)) { this.CurrentOverlay.NextLayer(); this.Helper.Input.Suppress(e.Button); } else if (overlayVisible && keys.PrevLayer.Contains(e.Button)) { this.CurrentOverlay.PrevLayer(); this.Helper.Input.Suppress(e.Button); } }); }
/// <summary>The method invoked when the player returns to the title screen.</summary> /// <param name="sender">The event sender.</param> /// <param name="e">The event arguments.</param> private void OnReturnedToTitle(object sender, ReturnedToTitleEventArgs e) { this.CurrentOverlay?.Dispose(); this.CurrentOverlay = null; this.Layers = null; }
/// <summary>The method invoked when the player returns to the title screen.</summary> /// <param name="sender">The event sender.</param> /// <param name="e">The event arguments.</param> private void SaveEvents_AfterReturnToTitle(object sender, EventArgs e) { this.CurrentOverlay?.Dispose(); this.CurrentOverlay = null; }