searchable overlays, overlay name on hover
This commit is contained in:
parent
afc94fd698
commit
808c0538be
3 changed files with 172 additions and 42 deletions
|
@ -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<Texture2D>("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<Texture2D>("icon_line"));
|
||||
_mainWidget.BtnToolbarRoom.Image = new TextureRegion(Content.Load<Texture2D>("icon_room"));
|
||||
_mainWidget.BtnToolbarDelete.Image = new TextureRegion(Content.Load<Texture2D>("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<string> 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<string, Texture2D> _wallsContent;
|
||||
|
||||
|
||||
private SpriteSheet _spriteSheet;
|
||||
|
||||
private void DrawDelete(Room tile)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue