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, }); }
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); }
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); }
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); }
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); }
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, }); }
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); }
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); }
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); }
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)); }
private void textBoxOpacity_EnterAction() { SetOpacity(ParsingUtilities.ParseFloatNullable(textBoxOpacity.Text), false); }
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(); }
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, }); }
private void textBoxOutlineWidth_EnterAction() { SetOutlineWidth(ParsingUtilities.ParseFloatNullable(textBoxOutlineWidth.Text)); }
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); }