protected List <ToolStripMenuItem> GetGridlinesToolStripMenuItems()
        {
            string suffix = string.Format(" ({0})", _imageSize);

            _itemSetIconSize        = new ToolStripMenuItem(SET_ICON_SIZE_TEXT + suffix);
            _itemSetIconSize.Click += (sender, e) =>
            {
                string text         = DialogUtilities.GetStringFromDialog(labelText: "Enter icon size.");
                float? sizeNullable = ParsingUtilities.ParseFloatNullable(text);
                if (!sizeNullable.HasValue)
                {
                    return;
                }
                MapObjectSettings settings = new MapObjectSettings(
                    changeIconSize: true, newIconSize: sizeNullable.Value);
                GetParentMapTracker().ApplySettings(settings);
            };

            _itemUseExtendedLevelBoundaries        = new ToolStripMenuItem("Use Extended Level Boundaries");
            _itemUseExtendedLevelBoundaries.Click += (sender, e) =>
            {
                MapObjectSettings settings = new MapObjectSettings(
                    changeUseExtendedLevelBoundaries: true,
                    newUseExtendedLevelBoundaries: !_useExtendedLevelBoundaries);
                GetParentMapTracker().ApplySettings(settings);
            };

            return(new List <ToolStripMenuItem>()
            {
                _itemSetIconSize,
                _itemUseExtendedLevelBoundaries,
            });
        }
Example #2
0
        public override ContextMenuStrip GetContextMenuStrip()
        {
            if (_contextMenuStrip == null)
            {
                _itemUseSpeedForArrowLength        = new ToolStripMenuItem("Use Recommended Arrow Size");
                _itemUseSpeedForArrowLength.Click += (sender, e) =>
                {
                    MapObjectSettings settings = new MapObjectSettings(
                        arrowChangeUseRecommendedLength: true,
                        arrowNewUseRecommendedLength: !_useRecommendedArrowLength);
                    GetParentMapTracker().ApplySettings(settings);
                };
                _itemUseSpeedForArrowLength.Checked = _useRecommendedArrowLength;

                ToolStripMenuItem itemSetArrowHeadSideLength = new ToolStripMenuItem("Set Arrow Head Side Length");
                itemSetArrowHeadSideLength.Click += (sender, e) =>
                {
                    string text = DialogUtilities.GetStringFromDialog(labelText: "Enter the side length of the arrow head:");
                    float? arrowHeadSideLength = ParsingUtilities.ParseFloatNullable(text);
                    if (!arrowHeadSideLength.HasValue)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        arrowChangeHeadSideLength: true, arrowNewHeadSideLength: arrowHeadSideLength.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(_itemUseSpeedForArrowLength);
                _contextMenuStrip.Items.Add(itemSetArrowHeadSideLength);
            }

            return(_contextMenuStrip);
        }
Example #3
0
        protected override ContextMenuStrip GetContextMenuStrip(MapTracker targetTracker)
        {
            if (_contextMenuStrip == null)
            {
                _itemRecommendedArrowLength        = new ToolStripMenuItem("Use Recommended Arrow Size");
                _itemRecommendedArrowLength.Click += (sender, e) => _itemRecommendedArrowLength.Checked = !_itemRecommendedArrowLength.Checked;

                ToolStripMenuItem itemSetArrowHeadSideLength = new ToolStripMenuItem("Set Arrow Head Side Length");
                itemSetArrowHeadSideLength.Click += (sender, e) =>
                {
                    string text = DialogUtilities.GetStringFromDialog(labelText: "Enter the side length of the arrow head:");
                    float? arrowHeadSideLength = ParsingUtilities.ParseFloatNullable(text);
                    if (arrowHeadSideLength.HasValue)
                    {
                        _arrowHeadSideLength = arrowHeadSideLength.Value;
                    }
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(_itemRecommendedArrowLength);
                _contextMenuStrip.Items.Add(itemSetArrowHeadSideLength);
            }

            return(_contextMenuStrip);
        }
Example #4
0
        public override ContextMenuStrip GetContextMenuStrip()
        {
            if (_contextMenuStrip == null)
            {
                string suffix = string.Format(" ({0})", _angleRadius);
                _itemSetAngleRadius        = new ToolStripMenuItem(SET_ANGLE_RADIUS_TEXT + suffix);
                _itemSetAngleRadius.Click += (sender, e) =>
                {
                    string text        = DialogUtilities.GetStringFromDialog(labelText: "Enter the angle radius for sector:");
                    float? angleRadius = ParsingUtilities.ParseFloatNullable(text);
                    if (!angleRadius.HasValue)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        changeSectorAngleRadius: true, newSectorAngleRadius: angleRadius.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(_itemSetAngleRadius);
            }

            return(_contextMenuStrip);
        }
Example #5
0
        public override ContextMenuStrip GetContextMenuStrip()
        {
            if (_contextMenuStrip == null)
            {
                string suffix = string.Format(" ({0})", _iconSize);
                _itemSetIconSize        = new ToolStripMenuItem(SET_ICON_SIZE_TEXT + suffix);
                _itemSetIconSize.Click += (sender, e) =>
                {
                    string text         = DialogUtilities.GetStringFromDialog(labelText: "Enter icon size.");
                    float? sizeNullable = ParsingUtilities.ParseFloatNullable(text);
                    if (!sizeNullable.HasValue)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        changeIconSize: true, newIconSize: sizeNullable.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(_itemSetIconSize);
            }

            return(_contextMenuStrip);
        }
Example #6
0
        protected List <ToolStripMenuItem> GetWallToolStripMenuItems()
        {
            _itemSetRelativeHeight        = new ToolStripMenuItem(SET_RELATIVE_HEIGHT_TEXT);
            _itemSetRelativeHeight.Click += (sender, e) =>
            {
                string text = DialogUtilities.GetStringFromDialog(labelText: "Enter relative height of wall hitbox compared to wall triangle.");
                float? relativeHeightNullable = ParsingUtilities.ParseFloatNullable(text);
                if (!relativeHeightNullable.HasValue)
                {
                    return;
                }
                MapObjectSettings settings = new MapObjectSettings(
                    changeWallRelativeHeight: true, newWallRelativeHeight: relativeHeightNullable.Value);
                GetParentMapTracker().ApplySettings(settings);
            };

            ToolStripMenuItem itemClearRelativeHeight = new ToolStripMenuItem("Clear Relative Height");

            itemClearRelativeHeight.Click += (sender, e) =>
            {
                MapObjectSettings settings = new MapObjectSettings(
                    changeWallRelativeHeight: true, newWallRelativeHeight: null);
                GetParentMapTracker().ApplySettings(settings);
            };

            _itemSetAbsoluteHeight        = new ToolStripMenuItem(SET_ABSOLUTE_HEIGHT_TEXT);
            _itemSetAbsoluteHeight.Click += (sender, e) =>
            {
                string text = DialogUtilities.GetStringFromDialog(labelText: "Enter the height at which you want to see the wall triangles.");
                float? absoluteHeightNullable =
                    text == "" ?
                    Config.Stream.GetFloat(MarioConfig.StructAddress + MarioConfig.YOffset) :
                    ParsingUtilities.ParseFloatNullable(text);
                if (!absoluteHeightNullable.HasValue)
                {
                    return;
                }
                MapObjectSettings settings = new MapObjectSettings(
                    changeWallAbsoluteHeight: true, newWallAbsoluteHeight: absoluteHeightNullable.Value);
                GetParentMapTracker().ApplySettings(settings);
            };

            ToolStripMenuItem itemClearAbsoluteHeight = new ToolStripMenuItem("Clear Absolute Height");

            itemClearAbsoluteHeight.Click += (sender, e) =>
            {
                MapObjectSettings settings = new MapObjectSettings(
                    changeWallAbsoluteHeight: true, newWallAbsoluteHeight: null);
                GetParentMapTracker().ApplySettings(settings);
            };

            return(new List <ToolStripMenuItem>()
            {
                _itemSetRelativeHeight,
                itemClearRelativeHeight,
                _itemSetAbsoluteHeight,
                itemClearAbsoluteHeight,
            });
        }
        public override ContextMenuStrip GetContextMenuStrip()
        {
            if (_contextMenuStrip == null)
            {
                _itemUseFixedSize        = new ToolStripMenuItem("Use Fixed Size");
                _itemUseFixedSize.Click += (sender, e) =>
                {
                    MapObjectSettings settings = new MapObjectSettings(
                        changeLineSegmentUseFixedSize: true, newLineSegmentUseFixedSize: !_useFixedSize);
                    GetParentMapTracker().ApplySettings(settings);
                };

                string suffix1 = string.Format(" ({0})", _backwardsSize);
                _itemSetBackwardsSize        = new ToolStripMenuItem(SET_BACKWARDS_SIZE_TEXT + suffix1);
                _itemSetBackwardsSize.Click += (sender, e) =>
                {
                    string text = DialogUtilities.GetStringFromDialog(labelText: "Enter backwards size.");
                    float? backwardsSizeNullable = ParsingUtilities.ParseFloatNullable(text);
                    if (!backwardsSizeNullable.HasValue)
                    {
                        return;
                    }
                    float             backwardsSize = backwardsSizeNullable.Value;
                    MapObjectSettings settings      = new MapObjectSettings(
                        changeLineSegmentBackwardsSize: true, newLineSegmentBackwardsSize: backwardsSize);
                    GetParentMapTracker().ApplySettings(settings);
                };

                string suffix2 = string.Format(" ({0})", _iconSize);
                _itemSetIconSize        = new ToolStripMenuItem(SET_ICON_SIZE_TEXT + suffix2);
                _itemSetIconSize.Click += (sender, e) =>
                {
                    string text             = DialogUtilities.GetStringFromDialog(labelText: "Enter icon size.");
                    float? iconSizeNullable = ParsingUtilities.ParseFloatNullable(text);
                    if (!iconSizeNullable.HasValue)
                    {
                        return;
                    }
                    float             iconSize = iconSizeNullable.Value;
                    MapObjectSettings settings = new MapObjectSettings(
                        changeIconSize: true, newIconSize: iconSize);
                    GetParentMapTracker().ApplySettings(settings);
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(_itemUseFixedSize);
                _contextMenuStrip.Items.Add(_itemSetBackwardsSize);
                _contextMenuStrip.Items.Add(_itemSetIconSize);
            }

            return(_contextMenuStrip);
        }
        protected List <ToolStripMenuItem> GetHorizontalTriangleToolStripMenuItems(MapTracker targetTracker)
        {
            ToolStripMenuItem itemSetMinHeight = new ToolStripMenuItem("Set Min Height");

            itemSetMinHeight.Click += (sender, e) =>
            {
                string text = DialogUtilities.GetStringFromDialog(labelText: "Enter the min height.");
                float? minHeightNullable =
                    text == "" ?
                    Config.Stream.GetSingle(MarioConfig.StructAddress + MarioConfig.YOffset) :
                    ParsingUtilities.ParseFloatNullable(text);
                if (minHeightNullable.HasValue)
                {
                    _minHeight = minHeightNullable.Value;
                }
            };

            ToolStripMenuItem itemClearMinHeight = new ToolStripMenuItem("Clear Min Height");

            itemClearMinHeight.Click += (sender, e) => _minHeight = null;

            ToolStripMenuItem itemSetMaxHeight = new ToolStripMenuItem("Set Max Height");

            itemSetMaxHeight.Click += (sender, e) =>
            {
                string text = DialogUtilities.GetStringFromDialog(labelText: "Enter the max height.");
                float? maxHeightNullable =
                    text == "" ?
                    Config.Stream.GetSingle(MarioConfig.StructAddress + MarioConfig.YOffset) :
                    ParsingUtilities.ParseFloatNullable(text);
                if (maxHeightNullable.HasValue)
                {
                    _maxHeight = maxHeightNullable.Value;
                }
            };

            ToolStripMenuItem itemClearMaxHeight = new ToolStripMenuItem("Clear Max Height");

            itemClearMaxHeight.Click += (sender, e) => _maxHeight = null;

            return(new List <ToolStripMenuItem>()
            {
                itemSetMinHeight,
                itemClearMinHeight,
                itemSetMaxHeight,
                itemClearMaxHeight,
            });
        }
Example #9
0
        public override ContextMenuStrip GetContextMenuStrip()
        {
            if (_contextMenuStrip == null)
            {
                string suffixMin = string.Format(" ({0})", _relativeMinY);
                _itemSetRelativeMinY        = new ToolStripMenuItem(SET_RELATIVE_MIN_Y_TEXT + suffixMin);
                _itemSetRelativeMinY.Click += (sender, e) =>
                {
                    string text         = DialogUtilities.GetStringFromDialog(labelText: "Enter the relative min y.");
                    float? relativeMinY = ParsingUtilities.ParseFloatNullable(text);
                    if (!relativeMinY.HasValue)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        changeCustomCylinderRelativeMinY: true, newCustomCylinderRelativeMinY: relativeMinY.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                string suffixMax = string.Format(" ({0})", _relativeMaxY);
                _itemSetRelativeMaxY        = new ToolStripMenuItem(SET_RELATIVE_MAX_Y_TEXT + suffixMax);
                _itemSetRelativeMaxY.Click += (sender, e) =>
                {
                    string text         = DialogUtilities.GetStringFromDialog(labelText: "Enter the relative max y.");
                    float? relativeMaxY = ParsingUtilities.ParseFloatNullable(text);
                    if (!relativeMaxY.HasValue)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        changeCustomCylinderRelativeMaxY: true, newCustomCylinderRelativeMaxY: relativeMaxY.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(_itemSetRelativeMinY);
                _contextMenuStrip.Items.Add(_itemSetRelativeMaxY);
                _contextMenuStrip.Items.Add(new ToolStripSeparator());
                GetCircleToolStripMenuItems().ForEach(item => _contextMenuStrip.Items.Add(item));
            }

            return(_contextMenuStrip);
        }
Example #10
0
        protected override ContextMenuStrip GetContextMenuStrip(MapTracker targetTracker)
        {
            if (_contextMenuStrip == null)
            {
                ToolStripMenuItem itemSetAngleRadius = new ToolStripMenuItem("Set Angle Radius");
                itemSetAngleRadius.Click += (sender, e) =>
                {
                    string text        = DialogUtilities.GetStringFromDialog(labelText: "Enter the angle radius for sector:");
                    float? angleRadius = ParsingUtilities.ParseFloatNullable(text);
                    if (angleRadius.HasValue)
                    {
                        _angleRadius = angleRadius.Value;
                    }
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(itemSetAngleRadius);
            }

            return(_contextMenuStrip);
        }
        public override ContextMenuStrip GetContextMenuStrip()
        {
            if (_contextMenuStrip == null)
            {
                ToolStripMenuItem itemSetRelativeMinY = new ToolStripMenuItem("Set Relative Min Y...");
                itemSetRelativeMinY.Click += (sender, e) =>
                {
                    string text         = DialogUtilities.GetStringFromDialog(labelText: "Enter a number.");
                    float? relativeMinY = ParsingUtilities.ParseFloatNullable(text);
                    if (!relativeMinY.HasValue)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        customCylinderChangeRelativeMinY: true, customCylinderNewRelativeMinY: relativeMinY.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                ToolStripMenuItem itemSetRelativeMaxY = new ToolStripMenuItem("Set Relative Max Y...");
                itemSetRelativeMaxY.Click += (sender, e) =>
                {
                    string text         = DialogUtilities.GetStringFromDialog(labelText: "Enter a number.");
                    float? relativeMaxY = ParsingUtilities.ParseFloatNullable(text);
                    if (!relativeMaxY.HasValue)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        customCylinderChangeRelativeMaxY: true, customCylinderNewRelativeMaxY: relativeMaxY.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(itemSetRelativeMinY);
                _contextMenuStrip.Items.Add(itemSetRelativeMaxY);
            }

            return(_contextMenuStrip);
        }
Example #12
0
        public override ContextMenuStrip GetContextMenuStrip()
        {
            if (_contextMenuStrip == null)
            {
                ToolStripMenuItem itemSetAngleRadius = new ToolStripMenuItem("Set Angle Radius");
                itemSetAngleRadius.Click += (sender, e) =>
                {
                    string text        = DialogUtilities.GetStringFromDialog(labelText: "Enter the angle radius for sector:");
                    float? angleRadius = ParsingUtilities.ParseFloatNullable(text);
                    if (!angleRadius.HasValue)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        sectorChangeAngleRadius: true, sectorNewAngleRadius: angleRadius.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(itemSetAngleRadius);
            }

            return(_contextMenuStrip);
        }
Example #13
0
        public void Load()
        {
            // Create new graphics control
            _mapGraphics = new Map2Graphics(_mapGui.GLControl);
            _mapGraphics.Load();

            _isLoaded = true;

            // Set the default map
            ChangeCurrentMap(Config.MapAssociations.DefaultMap);

            // Add Mario's map object
            _mapGraphics.AddMapObject(_marioMapObj);
            _mapGraphics.AddMapObject(_holpMapObj);
            _mapGraphics.AddMapObject(_intendedNextPositionMapObj);
            _mapGraphics.AddMapObject(_cameraMapObj);
            _mapGraphics.AddMapObject(_floorTriangleMapObj);
            _mapGraphics.AddMapObject(_ceilingTriangleMapObj);

            _cogFloorTris.ForEach(tri => _mapGraphics.AddMapObject(tri));
            _cog2FloorTris.ForEach(tri => _mapGraphics.AddMapObject(tri));
            _cogWallTris.ForEach(tri => _mapGraphics.AddMapObject(tri));

            foreach (List <TriangleMap2Object> floorTris in _triObjectFloors)
            {
                foreach (TriangleMap2Object floorTri in floorTris)
                {
                    _mapGraphics.AddMapObject(floorTri);
                }
            }

            foreach (List <TriangleMap2Object> wallTris in _triObjectWalls)
            {
                foreach (TriangleMap2Object wallTri in wallTris)
                {
                    _mapGraphics.AddMapObject(wallTri);
                }
            }

            //----- Register events ------
            // Set image
            _mapGui.MapIconSizeTrackbar.ValueChanged += (sender, e) => _mapGraphics.IconSize = _mapGui.MapIconSizeTrackbar.Value;

            _mapGui.MapBoundsUpButton.Click        += (sender, e) => ChangeMapPosition(0, 1);
            _mapGui.MapBoundsDownButton.Click      += (sender, e) => ChangeMapPosition(0, -1);
            _mapGui.MapBoundsLeftButton.Click      += (sender, e) => ChangeMapPosition(-1, 0);
            _mapGui.MapBoundsRightButton.Click     += (sender, e) => ChangeMapPosition(1, 0);
            _mapGui.MapBoundsUpLeftButton.Click    += (sender, e) => ChangeMapPosition(-1, 1);
            _mapGui.MapBoundsUpRightButton.Click   += (sender, e) => ChangeMapPosition(1, 1);
            _mapGui.MapBoundsDownLeftButton.Click  += (sender, e) => ChangeMapPosition(-1, -1);
            _mapGui.MapBoundsDownRightButton.Click += (sender, e) => ChangeMapPosition(1, -1);

            _mapGui.MapBoundsZoomInButton.Click  += (sender, e) => ChangeMapZoom(1);
            _mapGui.MapBoundsZoomOutButton.Click += (sender, e) => ChangeMapZoom(-1);

            _mapGui.MapArtificialMarioYLabelTextBox.AddEnterAction(() =>
                                                                   _artificialMarioY = ParsingUtilities.ParseFloatNullable(
                                                                       _mapGui.MapArtificialMarioYLabelTextBox.Text));
        }
Example #14
0
 private void textBoxOpacity_EnterAction()
 {
     SetOpacity(ParsingUtilities.ParseFloatNullable(textBoxOpacity.Text), false);
 }
Example #15
0
        private bool ValueQualifies(object memoryObject, object oldMemoryObject, object searchObject1, object searchObject2, Type type)
        {
            if (type == typeof(byte))
            {
                byte?memoryValue = ParsingUtilities.ParseByteNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                byte?oldMemoryValue = ParsingUtilities.ParseByteNullable(oldMemoryObject);
                byte?searchValue1   = ParsingUtilities.ParseByteNullable(searchObject1);
                byte?searchValue2   = ParsingUtilities.ParseByteNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(sbyte))
            {
                sbyte?memoryValue = ParsingUtilities.ParseSByteNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                sbyte?            oldMemoryValue    = ParsingUtilities.ParseSByteNullable(oldMemoryObject);
                sbyte?            searchValue1      = ParsingUtilities.ParseSByteNullable(searchObject1);
                sbyte?            searchValue2      = ParsingUtilities.ParseSByteNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(short))
            {
                short?memoryValue = ParsingUtilities.ParseShortNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                short?            oldMemoryValue    = ParsingUtilities.ParseShortNullable(oldMemoryObject);
                short?            searchValue1      = ParsingUtilities.ParseShortNullable(searchObject1);
                short?            searchValue2      = ParsingUtilities.ParseShortNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(ushort))
            {
                ushort?memoryValue = ParsingUtilities.ParseUShortNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                ushort?           oldMemoryValue    = ParsingUtilities.ParseUShortNullable(oldMemoryObject);
                ushort?           searchValue1      = ParsingUtilities.ParseUShortNullable(searchObject1);
                ushort?           searchValue2      = ParsingUtilities.ParseUShortNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(int))
            {
                int?memoryValue = ParsingUtilities.ParseIntNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                int?oldMemoryValue = ParsingUtilities.ParseIntNullable(oldMemoryObject);
                int?searchValue1   = ParsingUtilities.ParseIntNullable(searchObject1);
                int?searchValue2   = ParsingUtilities.ParseIntNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(uint))
            {
                uint?memoryValue = ParsingUtilities.ParseUIntNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                uint?oldMemoryValue = ParsingUtilities.ParseUIntNullable(oldMemoryObject);
                uint?searchValue1   = ParsingUtilities.ParseUIntNullable(searchObject1);
                uint?searchValue2   = ParsingUtilities.ParseUIntNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(float))
            {
                float?memoryValue = ParsingUtilities.ParseFloatNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                float?            oldMemoryValue    = ParsingUtilities.ParseFloatNullable(oldMemoryObject);
                float?            searchValue1      = ParsingUtilities.ParseFloatNullable(searchObject1);
                float?            searchValue2      = ParsingUtilities.ParseFloatNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(double))
            {
                double?memoryValue = ParsingUtilities.ParseDoubleNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                double?           oldMemoryValue    = ParsingUtilities.ParseDoubleNullable(oldMemoryObject);
                double?           searchValue1      = ParsingUtilities.ParseDoubleNullable(searchObject1);
                double?           searchValue2      = ParsingUtilities.ParseDoubleNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            throw new ArgumentOutOfRangeException();
        }
Example #16
0
        public override ContextMenuStrip GetContextMenuStrip()
        {
            if (_contextMenuStrip == null)
            {
                _itemUseRecommendedArrowLength        = new ToolStripMenuItem("Use Recommended Arrow Size");
                _itemUseRecommendedArrowLength.Click += (sender, e) =>
                {
                    MapObjectSettings settings = new MapObjectSettings(
                        changeArrowUseRecommendedLength: true,
                        newArrowUseRecommendedLength: !_useRecommendedArrowLength);
                    GetParentMapTracker().ApplySettings(settings);
                };
                _itemUseRecommendedArrowLength.Checked = _useRecommendedArrowLength;

                _itemUseTruncatedAngle        = new ToolStripMenuItem("Use Truncated Angle");
                _itemUseTruncatedAngle.Click += (sender, e) =>
                {
                    MapObjectSettings settings = new MapObjectSettings(
                        changeArrowUseTruncatedAngle: true,
                        newArrowUseTruncatedAngle: !_useTruncatedAngle);
                    GetParentMapTracker().ApplySettings(settings);
                };
                _itemUseTruncatedAngle.Checked = _useTruncatedAngle;

                string suffix1 = string.Format(" ({0})", _arrowHeadSideLength);
                _itemSetArrowHeadSideLength        = new ToolStripMenuItem(SET_ARROW_HEAD_SIDE_LENGTH_TEXT + suffix1);
                _itemSetArrowHeadSideLength.Click += (sender, e) =>
                {
                    string text = DialogUtilities.GetStringFromDialog(labelText: "Enter the side length of the arrow head:");
                    float? arrowHeadSideLength = ParsingUtilities.ParseFloatNullable(text);
                    if (!arrowHeadSideLength.HasValue)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        changeArrowHeadSideLength: true, newArrowHeadSideLength: arrowHeadSideLength.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                string suffix2 = string.Format(" ({0})", _angleOffset);
                _itemSetAngleOffset        = new ToolStripMenuItem(SET_ANGLE_OFFSET_TEXT + suffix2);
                _itemSetAngleOffset.Click += (sender, e) =>
                {
                    string text = DialogUtilities.GetStringFromDialog(labelText: "Enter the angle offset:");
                    float? angleOffsetNullable = ParsingUtilities.ParseFloatNullable(text);
                    if (!angleOffsetNullable.HasValue)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        changeArrowAngleOffset: true, newArrowAngleOffset: angleOffsetNullable.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                _itemUsePitch        = new ToolStripMenuItem("Use Pitch");
                _itemUsePitch.Click += (sender, e) =>
                {
                    MapObjectSettings settings = new MapObjectSettings(
                        changeUsePitch: true, newUsePitch: !_usePitch);
                    GetParentMapTracker().ApplySettings(settings);
                };
                _itemUsePitch.Checked = _usePitch;

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(_itemUseRecommendedArrowLength);
                _contextMenuStrip.Items.Add(_itemUseTruncatedAngle);
                _contextMenuStrip.Items.Add(_itemSetArrowHeadSideLength);
                _contextMenuStrip.Items.Add(_itemSetAngleOffset);
                _contextMenuStrip.Items.Add(_itemUsePitch);
            }

            return(_contextMenuStrip);
        }
        protected List <ToolStripMenuItem> GetHorizontalTriangleToolStripMenuItems()
        {
            ToolStripMenuItem itemSetMinHeight = new ToolStripMenuItem("Set Min Height");

            itemSetMinHeight.Click += (sender, e) =>
            {
                string text = DialogUtilities.GetStringFromDialog(labelText: "Enter the min height.");
                float? minHeightNullable =
                    text == "" ?
                    Config.Stream.GetSingle(MarioConfig.StructAddress + MarioConfig.YOffset) :
                    ParsingUtilities.ParseFloatNullable(text);
                if (!minHeightNullable.HasValue)
                {
                    return;
                }
                MapObjectSettings settings = new MapObjectSettings(
                    horizontalTriangleChangeMinHeight: true, horizontalTriangleNewMinHeight: minHeightNullable.Value);
                GetParentMapTracker().ApplySettings(settings);
            };

            ToolStripMenuItem itemClearMinHeight = new ToolStripMenuItem("Clear Min Height");

            itemClearMinHeight.Click += (sender, e) =>
            {
                MapObjectSettings settings = new MapObjectSettings(
                    horizontalTriangleChangeMinHeight: true, horizontalTriangleNewMinHeight: null);
                GetParentMapTracker().ApplySettings(settings);
            };

            ToolStripMenuItem itemSetMaxHeight = new ToolStripMenuItem("Set Max Height");

            itemSetMaxHeight.Click += (sender, e) =>
            {
                string text = DialogUtilities.GetStringFromDialog(labelText: "Enter the max height.");
                float? maxHeightNullable =
                    text == "" ?
                    Config.Stream.GetSingle(MarioConfig.StructAddress + MarioConfig.YOffset) :
                    ParsingUtilities.ParseFloatNullable(text);
                if (!maxHeightNullable.HasValue)
                {
                    return;
                }
                MapObjectSettings settings = new MapObjectSettings(
                    horizontalTriangleChangeMaxHeight: true, horizontalTriangleNewMaxHeight: maxHeightNullable.Value);
                GetParentMapTracker().ApplySettings(settings);
            };

            ToolStripMenuItem itemClearMaxHeight = new ToolStripMenuItem("Clear Max Height");

            itemClearMaxHeight.Click += (sender, e) =>
            {
                MapObjectSettings settings = new MapObjectSettings(
                    horizontalTriangleChangeMaxHeight: true, horizontalTriangleNewMaxHeight: null);
                GetParentMapTracker().ApplySettings(settings);
            };

            return(new List <ToolStripMenuItem>()
            {
                itemSetMinHeight,
                itemClearMinHeight,
                itemSetMaxHeight,
                itemClearMaxHeight,
            });
        }
Example #18
0
 private void textBoxOutlineWidth_EnterAction()
 {
     SetOutlineWidth(ParsingUtilities.ParseFloatNullable(textBoxOutlineWidth.Text));
 }
Example #19
0
 private void textBoxSize_EnterAction()
 {
     SetSize(ParsingUtilities.ParseFloatNullable(textBoxSize.Text));
 }
        public override ContextMenuStrip GetContextMenuStrip()
        {
            if (_contextMenuStrip == null)
            {
                ToolStripMenuItem itemCopyBasePoints = new ToolStripMenuItem("Copy Base Points");
                itemCopyBasePoints.Click += (sender, e) =>
                {
                    List <string> pointStrings = new List <string>();
                    var           quadList     = GetQuadList(null);
                    foreach (var quad in quadList)
                    {
                        (int x, int z) = ((int, int))GetQuadMidpoint(quad);
                        pointStrings.Add(x + "\t" + z);
                    }
                    pointStrings = pointStrings.Distinct().ToList();
                    string combinedText = string.Join("\r\n", pointStrings);
                    Clipboard.SetText(combinedText);
                };

                ToolStripMenuItem itemCopyMidpoints = new ToolStripMenuItem("Copy Midpoints");
                itemCopyMidpoints.Click += (sender, e) =>
                {
                    List <string> pointStrings = new List <string>();
                    var           quadList     = GetQuadList(null);
                    foreach (var quad in quadList)
                    {
                        (float x, float z) = GetQuadMidpoint(quad);
                        pointStrings.Add(x + "\t" + z);
                    }
                    string combinedText = string.Join("\r\n", pointStrings);
                    Clipboard.SetText(combinedText);
                };

                _itemSetCustomHeight        = new ToolStripMenuItem(SET_CUSTOM_HEIGHT_TEXT);
                _itemSetCustomHeight.Click += (sender, e) =>
                {
                    string text           = DialogUtilities.GetStringFromDialog(labelText: "Enter a custom height:");
                    float? heightNullable = ParsingUtilities.ParseFloatNullable(text);
                    if (!heightNullable.HasValue)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        changeCustomHeight: true, newCustomHeight: heightNullable.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                ToolStripMenuItem itemClearCustomHeight = new ToolStripMenuItem("Clear Custom Height");
                itemClearCustomHeight.Click += (sender, e) =>
                {
                    MapObjectSettings settings = new MapObjectSettings(
                        changeCustomHeight: true, newCustomHeight: null);
                    GetParentMapTracker().ApplySettings(settings);
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(itemCopyBasePoints);
                _contextMenuStrip.Items.Add(itemCopyMidpoints);
                _contextMenuStrip.Items.Add(_itemSetCustomHeight);
                _contextMenuStrip.Items.Add(itemClearCustomHeight);
            }

            return(_contextMenuStrip);
        }