Example #1
0
        /// <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);
                    }
                }
            });
        }
Example #2
0
        /// <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();
                }
            });
        }
Example #3
0
        /// <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);
                }
            });
        }
Example #4
0
 /// <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;
 }
Example #5
0
 /// <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;
 }