diff --git a/Sledgemapper.Api/db/LocalDatabase.db b/Sledgemapper.Api/db/LocalDatabase.db index 22b8623..29abb43 100644 Binary files a/Sledgemapper.Api/db/LocalDatabase.db and b/Sledgemapper.Api/db/LocalDatabase.db differ diff --git a/Sledgemapper.Api/db/sledgemapper.db b/Sledgemapper.Api/db/sledgemapper.db index 3991092..6e14010 100644 Binary files a/Sledgemapper.Api/db/sledgemapper.db and b/Sledgemapper.Api/db/sledgemapper.db differ diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 4dfbe2a..eb96d6c 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -12,6 +12,7 @@ using Myra.Graphics2D.TextureAtlases; using Myra.Graphics2D.UI; using Myra.Graphics2D.UI.File; using Myra.Graphics2D.UI.Properties; +using Myra.Utility; using Newtonsoft.Json; using Sledgemapper.Shared.Entities; using Sledgemapper.UI; @@ -147,14 +148,19 @@ namespace Sledgemapper } } - private void AddItemToToolGrid(Grid grid, EventHandler eventAction, SpriteSheet spriteSheet) + private void AddItemToToolGrid(Grid grid, EventHandler eventAction, SpriteSheet spriteSheet, string e="") { var indexX = 0; var indexY = 0; - foreach (var item in spriteSheet.index) + //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()))) { 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.MouseLeft += OnTileButtonTouchLeft; grid.Widgets.Add(tileButton); indexY++; if (indexY == 4) @@ -165,6 +171,25 @@ namespace Sledgemapper } } + private void OnTileButtonTouchLeft(object sender, EventArgs e) + { + _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); + // _lblOverlayName.true; + } + protected override void LoadContent() { _spriteBatch = new SpriteBatch(GraphicsDevice); @@ -194,10 +219,13 @@ namespace Sledgemapper _mainWidget.BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; _wallsContent = Content.LoadContentFolder("walls"); - + _spriteSheet = new SpriteSheet(); _spriteSheet.LoadContent(Content); - +_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); @@ -208,6 +236,8 @@ namespace Sledgemapper _mainWidget.BtnToolbarLine.Image = new TextureRegion(Content.Load("icon_line")); _mainWidget.BtnToolbarRoom.Image = new TextureRegion(Content.Load("icon_room")); _mainWidget.BtnToolbarDelete.Image = new TextureRegion(Content.Load("icon_delete")); + _mainWidget.TxtOverlaySearch.TextChangedByUser += OnTxtOverlaySearchChange; + _desktop.Root = _mainWidget; _transparentRedRectangle = new Texture2D(GraphicsDevice, 1, 1); @@ -217,38 +247,54 @@ namespace Sledgemapper _whiteRectangle.SetData(new[] { Color.White }); } - + private void OnTxtOverlaySearchChange(object sender, ValueChangedEventArgs e) + { + // var filteredWidget = _mainWidget.GridOverlays.Widgets.Where(m => m.Id.ToLower().Contains(e.NewValue.ToLower())).ToArray(); + // foreach (var w in _mainWidget.GridOverlays.Widgets) + // { + // w. + // w.Visible = false; + // } + + // foreach (var w in filteredWidget) + // { + // w.Visible = true; + // } + + AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet, e.NewValue); + + } private void OnBtnToolbarDeleteClicked(object sender, EventArgs e) { _state.InsertMode = InsertMode.NewDelete; - - _mainWidget.ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + + _mainWidget.ClearSelection(); + ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); } private void OnBtnToolbarWallClicked(object sender, EventArgs e) { _state.InsertMode = InsertMode.NewWall; - _mainWidget.ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + _mainWidget.ClearSelection(); + ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); } private void OnBtnToolbarTileClicked(object sender, EventArgs e) { _state.InsertMode = InsertMode.NewTile; - _mainWidget.ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + _mainWidget.ClearSelection(); + ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); } private void OnBtnToolbarRoomClicked(object sender, EventArgs e) { _state.InsertMode = InsertMode.NewRoom; - _mainWidget.ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + _mainWidget.ClearSelection(); + ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); } @@ -256,8 +302,8 @@ namespace Sledgemapper private void OnBtnToolbarLinClicked(object sender, EventArgs e) { _state.InsertMode = InsertMode.NewLine; - _mainWidget.ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + _mainWidget.ClearSelection(); + ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); } @@ -1025,22 +1071,22 @@ namespace Sledgemapper private bool IsMapElementOffscreen(BaseMapEntity item) { - SnapPoint start,end; + SnapPoint start, end; - switch (item) - { - case Line l: - start=l.Start; - end=l.End; - break; + switch (item) + { + case Line l: + start = l.Start; + end = l.End; + break; - case Room room: - start = room.Start; - end=room.End; - break; - default: - return true; - } + case Room room: + start = room.Start; + end = room.End; + break; + default: + return true; + } var visibleTilesX = GraphicsDevice.Viewport.Width / _state.TileSize + 1; var visibleTilesY = GraphicsDevice.Viewport.Height / _state.TileSize + 1; @@ -1433,11 +1479,11 @@ namespace Sledgemapper } } } - Effect outlineShader; + Effect outlineShader; private Texture2D _transparentRedRectangle; private Texture2D _whiteRectangle; private Dictionary _wallsContent; - + private SpriteSheet _spriteSheet; private void DrawDelete(Room tile) diff --git a/Sledgemapper/UI/MainWidget.Generated.cs b/Sledgemapper/UI/MainWidget.Generated.cs index f7c1c35..321f7d2 100644 --- a/Sledgemapper/UI/MainWidget.Generated.cs +++ b/Sledgemapper/UI/MainWidget.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 03/02/2021 21:43:01 */ +/* Generated by MyraPad at 04/02/2021 10:36:48 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; @@ -206,15 +206,22 @@ namespace Sledgemapper.UI }; GridOverlays.Id = "GridOverlays"; - var scrollViewer2 = new ScrollViewer(); - scrollViewer2.Content = GridOverlays; + ScrOverlay = new ScrollViewer(); + ScrOverlay.Id = "ScrOverlay"; + ScrOverlay.Content = GridOverlays; + + TxtOverlaySearch = new TextBox(); + TxtOverlaySearch.Height = 40; + TxtOverlaySearch.Margin = new Thickness(0, 4); + TxtOverlaySearch.Id = "TxtOverlaySearch"; var verticalStackPanel2 = new VerticalStackPanel(); verticalStackPanel2.Proportions.Add(new Proportion { Type = Myra.Graphics2D.UI.ProportionType.Fill, }); - verticalStackPanel2.Widgets.Add(scrollViewer2); + verticalStackPanel2.Widgets.Add(ScrOverlay); + verticalStackPanel2.Widgets.Add(TxtOverlaySearch); var verticalSplitPane1 = new VerticalSplitPane(); verticalSplitPane1.Width = 200; @@ -308,6 +315,8 @@ namespace Sledgemapper.UI public HorizontalStackPanel Toolbar; public Grid GridWalls; public Grid GridOverlays; + public ScrollViewer ScrOverlay; + public TextBox TxtOverlaySearch; public Label lblConnectionStatus; public Label lblUsername; public Label lblSessionName; diff --git a/Sledgemapper/UI/mainwidget.xml b/Sledgemapper/UI/mainwidget.xml index 69d34c9..53e84c3 100644 --- a/Sledgemapper/UI/mainwidget.xml +++ b/Sledgemapper/UI/mainwidget.xml @@ -56,6 +56,9 @@ + + + diff --git a/Sledgemapper/UI/mainwidget.xml.xmmp b/Sledgemapper/UI/mainwidget.xml.xmmp new file mode 100644 index 0000000..aca05ef --- /dev/null +++ b/Sledgemapper/UI/mainwidget.xml.xmmp @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file