diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index eb96d6c..06ecc0e 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -148,18 +148,18 @@ namespace Sledgemapper } } - private void AddItemToToolGrid(Grid grid, EventHandler eventAction, SpriteSheet spriteSheet, string e="") + private void AddItemToToolGrid(Grid grid, EventHandler eventAction, SpriteSheet spriteSheet, string e = "") { var indexX = 0; var indexY = 0; //foreach (var item in spriteSheet.index) grid.Widgets.Clear(); _mainWidget.ScrOverlay.ResetScroll(); - foreach (var item in spriteSheet.index.Where(t=>String.IsNullOrWhiteSpace(e) || t.Key.ToLower().Contains(e.ToLower()))) + foreach (var item in spriteSheet.index.Where(t => String.IsNullOrWhiteSpace(e) || t.Key.ToLower().Contains(e.ToLower()))) { var tileButton = new ImageButton { Image = new TextureRegion(spriteSheet.Texture, item.Value), GridColumn = indexY, GridRow = indexX, Id = item.Key, Width = 40, Height = 40 }; tileButton.Click += eventAction; - tileButton.MouseMoved+=OnTileButtonTouchEntered; + tileButton.MouseMoved += OnTileButtonTouchEntered; tileButton.MouseLeft += OnTileButtonTouchLeft; grid.Widgets.Add(tileButton); indexY++; @@ -173,20 +173,20 @@ namespace Sledgemapper private void OnTileButtonTouchLeft(object sender, EventArgs e) { - _desktop.HideContextMenu(); - _lblOverlayName.Visible=false; + _desktop.HideContextMenu(); + _lblOverlayName.Visible = false; } Label _lblOverlayName; private void OnTileButtonTouchEntered(object sender, EventArgs e) { - var mouseState = Mouse.GetState().Position; -mouseState.X+=10; -mouseState.Y+=10; - _lblOverlayName.Visible=true; - _lblOverlayName.Text=((ImageButton)sender).Id; - _desktop.ShowContextMenu(_lblOverlayName, mouseState); + var mouseState = Mouse.GetState().Position; + mouseState.X += 10; + mouseState.Y += 10; + _lblOverlayName.Visible = true; + _lblOverlayName.Text = ((ImageButton)sender).Id; + _desktop.ShowContextMenu(_lblOverlayName, mouseState); // _lblOverlayName.true; } @@ -222,10 +222,10 @@ mouseState.Y+=10; _spriteSheet = new SpriteSheet(); _spriteSheet.LoadContent(Content); -_lblOverlayName = new Label(); -_lblOverlayName.Background=new SolidBrush(Color.SlateGray); -_lblOverlayName.Padding=new Myra.Graphics2D.Thickness(4); - + _lblOverlayName = new Label(); + _lblOverlayName.Background = new SolidBrush(Color.SlateGray); + _lblOverlayName.Padding = new Myra.Graphics2D.Thickness(4); + AddItemToToolGrid(_mainWidget.GridWalls, OnWallButtonClicked, _wallsContent); AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet); @@ -262,7 +262,7 @@ _lblOverlayName.Padding=new Myra.Graphics2D.Thickness(4); // } AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet, e.NewValue); - + } private void OnBtnToolbarDeleteClicked(object sender, EventArgs e) @@ -796,25 +796,94 @@ _lblOverlayName.Padding=new Myra.Graphics2D.Thickness(4); break; } + var ffont = _fonts.FirstOrDefault(m => int.Parse(m.Key.Replace("font", "")) > _state.TileSize / 3).Value ?? _fonts.Last().Value; + var fscale = 1.2f; + var width = Math.Abs((endposX - posX)); + var height = Math.Abs((posY - endposY)); + var tilesWidth = width / (double)_state.TileSize; + var tilesHeight = height / (double)_state.TileSize; + tilesWidth = Math.Round(tilesWidth * 2, MidpointRounding.AwayFromZero) / 2; + tilesHeight = Math.Round(tilesHeight * 2, MidpointRounding.AwayFromZero) / 2; + var xmeasure = ffont.MeasureString($"{tilesWidth}"); + var ymeasure = ffont.MeasureString($"{tilesHeight}"); + float widthX = 0, widthY = 0, heightX = 0, heightY = 0; + + Rectangle area = new Rectangle(); if (posX != endposX && posY != endposY) { - if ((posX > endposX && posY > endposY) || (posX < endposX && posY < endposY)) { - _spriteBatch.Draw(_transparentRedRectangle, new Rectangle(posX, posY, endposX - posX, endposY - posY), null, Color.White, 0, new Vector2(0, 0), SpriteEffects.None, 1); + area = new Rectangle(posX, posY, endposX - posX, endposY - posY); + + if (posX > endposX && posY > endposY) + { + widthX = endposX + (width / 2) - xmeasure.X / 2; + widthY = endposY - ymeasure.Y * 1.2f; + + heightX = posX + xmeasure.X / 2; + heightY = endposY + (height / 2) - ymeasure.Y / 2; + } + else if (posX < endposX && posY < endposY) + { + widthX = posX + (width / 2) - xmeasure.X / 2; + widthY = posY - ymeasure.Y * 1.2f; + + heightX = endposX + xmeasure.X / 2; + heightY = posY + (height / 2) - ymeasure.Y / 2; + } } else { if (endposY < posY) { - _spriteBatch.Draw(_transparentRedRectangle, new Rectangle(posX, endposY, endposX - posX, posY - endposY), null, Color.White, 0, new Vector2(0, 0), SpriteEffects.None, 1); + area = new Rectangle(posX, endposY, endposX - posX, posY - endposY); + + widthX = posX + (width / 2) - xmeasure.X / 2; + widthY = endposY - ymeasure.Y * 1.2f; + + heightX = endposX + xmeasure.X / 2; + heightY = endposY + (height / 2) - ymeasure.Y / 2; } if (endposX < posX) { - _spriteBatch.Draw(_transparentRedRectangle, new Rectangle(endposX, posY, posX - endposX, endposY - posY), null, Color.White, 0, new Vector2(0, 0), SpriteEffects.None, 1); + area = new Rectangle(endposX, posY, posX - endposX, endposY - posY); + + widthX = endposX + (width / 2) - xmeasure.X / 2; + widthY = posY - ymeasure.Y * 1.2f; + + heightX = posX + xmeasure.X / 2; + heightY = posY + (height / 2) - ymeasure.Y / 2; } } + + _spriteBatch.Draw(_transparentRedRectangle, area, null, Color.White, 0, new Vector2(0, 0), SpriteEffects.None, 1); + + _spriteBatch.DrawString(ffont, + $"{tilesWidth}", + new Vector2( + widthX, + widthY + ), + Color.Red, + 0, + Vector2.Zero, + fscale, + SpriteEffects.None, + 0); + + _spriteBatch.DrawString(ffont, + $"{tilesHeight}", + new Vector2( + heightX, heightY + ), + Color.Red, + 0, + Vector2.Zero, + fscale, + SpriteEffects.None, + 0); + } } }