more ui refactorin
This commit is contained in:
parent
e009ef07b0
commit
9d4fd1e6c0
6 changed files with 374 additions and 159 deletions
|
@ -33,6 +33,7 @@ namespace Sledgemapper
|
|||
private Dictionary<string, SpriteFont> _fonts;
|
||||
private Session _sessionData;
|
||||
private AuthenticateResponse _authResponse;
|
||||
private MainWidget _mainWidget;
|
||||
|
||||
public Sledgemapper()
|
||||
{
|
||||
|
@ -53,122 +54,49 @@ namespace Sledgemapper
|
|||
base.Initialize();
|
||||
}
|
||||
|
||||
private void AddItemToToolGrid(Grid grid, EventHandler eventAction, string folder)
|
||||
{
|
||||
var tilesFolderContent = Content.LoadContentFolder<Texture2D>(folder);
|
||||
var indexX = 0;
|
||||
var indexY = 0;
|
||||
foreach (var item in tilesFolderContent)
|
||||
{
|
||||
var tileButton = new ImageButton { Image = new TextureRegion(item.Value), GridColumn = indexY, GridRow = indexX, Id = item.Key, Width = 40, Height = 40 };
|
||||
tileButton.Click += eventAction;
|
||||
grid.Widgets.Add(tileButton);
|
||||
indexY++;
|
||||
if (indexY == 4)
|
||||
{
|
||||
indexY = 0;
|
||||
indexX++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void LoadContent()
|
||||
{
|
||||
_spriteBatch = new SpriteBatch(GraphicsDevice);
|
||||
MyraEnvironment.Game = this;
|
||||
|
||||
var mainPanel = new VerticalStackPanel();
|
||||
_mainWidget = new MainWidget();
|
||||
|
||||
var menu = BuildMenu();
|
||||
mainPanel.Widgets.Add(menu);
|
||||
_mainWidget.MenuConnectSync.Selected += OnMenuConnectSyncSelected;
|
||||
_mainWidget.MenuFileLoad.Selected += OnMenuFileLoadSelected;
|
||||
_mainWidget.MenuFileSave.Selected += OnMenuFileSaveSelected;
|
||||
_mainWidget.MenuConnectLogin.Selected += OnMenuConnectLoginSelected;
|
||||
_mainWidget.MenuConnectNew.Selected += OnMenuConnectNewSelected;
|
||||
_mainWidget.MenuConnectJoin.Selected += OnMenuConnectJoinSelected;
|
||||
_mainWidget.MenuConnectNew.Enabled = false;
|
||||
_mainWidget.MenuConnectJoin.Enabled = false;
|
||||
_mainWidget.MenuConnectSync.Enabled = false;
|
||||
|
||||
var sidePanel = new VerticalStackPanel { Layout2d = new Layout2D("this.w=200;this.h=W.h"), Background = new SolidBrush(Color.DarkGray) };
|
||||
|
||||
var tileScrollView = new ScrollViewer { Layout2d = new Layout2D("this.w=200;this.h=W.h/3") };
|
||||
var tileGrid = new Grid { ColumnSpacing = 3, RowSpacing = 3, Layout2d = new Layout2D("this.w=200"), Background = new SolidBrush(Color.DarkGray) };
|
||||
tileScrollView.Content = tileGrid;
|
||||
sidePanel.Widgets.Add(tileScrollView);
|
||||
|
||||
var wallScrollView = new ScrollViewer { Layout2d = new Layout2D("this.w=200;this.h=W.h/3") };
|
||||
var wallGrid = new Grid { ColumnSpacing = 3, RowSpacing = 3, Layout2d = new Layout2D("this.w=200"), Background = new SolidBrush(Color.DarkGray) };
|
||||
wallScrollView.Content = wallGrid;
|
||||
sidePanel.Widgets.Add(wallScrollView);
|
||||
|
||||
var overlayScrollView = new ScrollViewer { Layout2d = new Layout2D("this.w=200;this.h=W.h/3") };
|
||||
var overlayGrid = new Grid { ColumnSpacing = 3, RowSpacing = 3, Layout2d = new Layout2D("this.w=200"), Background = new SolidBrush(Color.DarkGray) };
|
||||
overlayScrollView.Content = overlayGrid;
|
||||
sidePanel.Widgets.Add(overlayScrollView);
|
||||
|
||||
mainPanel.Widgets.Add(sidePanel);
|
||||
|
||||
var tilesFolderContent = Content.LoadContentFolder<Texture2D>("tiles");
|
||||
var indexX = 0;
|
||||
var indexY = 0;
|
||||
|
||||
foreach (var item in tilesFolderContent)
|
||||
{
|
||||
var tileButton = new ImageButton { Image = new TextureRegion(item.Value), GridColumn = indexY, GridRow = indexX, Id = item.Key, Width = 40, Height = 40 };
|
||||
tileButton.Click += (s, e) =>
|
||||
{
|
||||
_state._currentTileId = ((ImageButton)s).Id;
|
||||
|
||||
ClearSelection(wallGrid);
|
||||
ClearSelection(tileGrid);
|
||||
ClearSelection(overlayGrid);
|
||||
|
||||
((ImageButton)s).Border = new SolidBrush(Color.Red);
|
||||
((ImageButton)s).BorderThickness = new Myra.Graphics2D.Thickness(2);
|
||||
_state._insertMode = InsertMode.Tile;
|
||||
};
|
||||
tileGrid.Widgets.Add(tileButton);
|
||||
indexY++;
|
||||
if (indexY == 4)
|
||||
{
|
||||
indexY = 0;
|
||||
indexX++;
|
||||
}
|
||||
}
|
||||
|
||||
var wallsFolderContent = Content.LoadContentFolder<Texture2D>("walls");
|
||||
indexX = 0;
|
||||
indexY = 0;
|
||||
|
||||
foreach (var item in wallsFolderContent)
|
||||
{
|
||||
var wallButton = new ImageButton { Image = new TextureRegion(item.Value), GridColumn = indexY, GridRow = indexX, Id = item.Key, Width = 40, Height = 40 };
|
||||
wallButton.Click += (s, e) =>
|
||||
{
|
||||
_state._currentWallId = ((ImageButton)s).Id;
|
||||
ClearSelection(wallGrid);
|
||||
ClearSelection(tileGrid);
|
||||
ClearSelection(overlayGrid);
|
||||
|
||||
|
||||
((ImageButton)s).Border = new SolidBrush(Color.Red);
|
||||
((ImageButton)s).BorderThickness = new Myra.Graphics2D.Thickness(2);
|
||||
_state._insertMode = InsertMode.Wall;
|
||||
|
||||
};
|
||||
wallGrid.Widgets.Add(wallButton);
|
||||
indexY++;
|
||||
if (indexY == 4)
|
||||
{
|
||||
indexY = 0;
|
||||
indexX++;
|
||||
}
|
||||
}
|
||||
|
||||
var overlayFolderContent = Content.LoadContentFolder<Texture2D>("overlays");
|
||||
indexX = 0;
|
||||
indexY = 0;
|
||||
|
||||
foreach (var item in overlayFolderContent)
|
||||
{
|
||||
var overlayButton = new ImageButton { Image = new TextureRegion(item.Value), GridColumn = indexY, GridRow = indexX, Id = item.Key, Width = 40, Height = 40 };
|
||||
overlayButton.Click += (s, e) =>
|
||||
{
|
||||
_state._currentOverlayId = ((ImageButton)s).Id;
|
||||
ClearSelection(wallGrid);
|
||||
ClearSelection(tileGrid);
|
||||
ClearSelection(overlayGrid);
|
||||
|
||||
((ImageButton)s).Border = new SolidBrush(Color.Red);
|
||||
((ImageButton)s).BorderThickness = new Myra.Graphics2D.Thickness(2);
|
||||
_state._insertMode = InsertMode.Overlay;
|
||||
};
|
||||
overlayGrid.Widgets.Add(overlayButton);
|
||||
indexY++;
|
||||
if (indexY == 4)
|
||||
{
|
||||
indexY = 0;
|
||||
indexX++;
|
||||
}
|
||||
}
|
||||
AddItemToToolGrid(_mainWidget.GridTiles, OnTileButtonClicked, "tiles");
|
||||
AddItemToToolGrid(_mainWidget.GridWalls, OnWallButtonClicked, "walls");
|
||||
AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, "overlays");
|
||||
|
||||
_fonts = Content.LoadContentFolder<SpriteFont>("fonts");
|
||||
|
||||
_desktop.Root = mainPanel;
|
||||
_desktop.Root = _mainWidget;
|
||||
}
|
||||
|
||||
protected override void Update(GameTime gameTime)
|
||||
|
@ -310,7 +238,7 @@ namespace Sledgemapper
|
|||
{
|
||||
return;
|
||||
}
|
||||
GraphicsDevice.Clear(Color.DarkGray);
|
||||
GraphicsDevice.Clear(new Color(24,118,157));
|
||||
|
||||
var visibleTilesX = GraphicsDevice.Viewport.Width / _state._tileSize + 1;
|
||||
var visibleTilesY = GraphicsDevice.Viewport.Height / _state._tileSize + 1;
|
||||
|
@ -324,7 +252,7 @@ namespace Sledgemapper
|
|||
|
||||
if (string.IsNullOrWhiteSpace(_sessionData.SessionName))
|
||||
{
|
||||
_spriteBatch.DrawRectangle(new Rectangle(_state._selectedTile.X * _state._tileSize, _state._selectedTile.Y * _state._tileSize, _state._tileSize - 1, _state._tileSize - 1), Color.Red, 2);
|
||||
_spriteBatch.DrawRectangle(new Rectangle((_state._selectedTile.X * _state._tileSize)-2,(_state._selectedTile.Y * _state._tileSize)-2, _state._tileSize + 3, _state._tileSize + 3), Color.Red, 2);
|
||||
}
|
||||
|
||||
DrawPlayers();
|
||||
|
@ -347,46 +275,6 @@ namespace Sledgemapper
|
|||
base.Draw(gameTime);
|
||||
}
|
||||
|
||||
private HorizontalMenu BuildMenu()
|
||||
{
|
||||
var menu = new HorizontalMenu();
|
||||
var menuFile = new MenuItem("_file", "File");
|
||||
var menuFileLoad = new MenuItem("_file_load", "Load");
|
||||
var menuFileSave = new MenuItem("_file_save", "Save");
|
||||
var menuConnect = new MenuItem("_connect", "Connect");
|
||||
var menuConnectLogin = new MenuItem("_connect_login", "Login");
|
||||
var menuConnectNew = new MenuItem("_connect_new", "New");
|
||||
var menuConnectJoin = new MenuItem("_connect_join", "Join");
|
||||
var menuConnectSync = new MenuItem("_connect_sync", "Sync");
|
||||
|
||||
menuConnectSync.Selected += OnMenuConnectSyncSelected;
|
||||
menuFileLoad.Selected += OnMenuFileLoadSelected;
|
||||
menuFileSave.Selected += OnMenuFileSaveSelected;
|
||||
menuConnectLogin.Selected += OnMenuConnectLoginSelected;
|
||||
menuConnectNew.Selected += OnMenuConnectNewSelected;
|
||||
menuConnectJoin.Selected += OnMenuConnectJoinSelected;
|
||||
|
||||
menuConnect.Items.Add(menuConnectLogin);
|
||||
menuConnect.Items.Add(menuConnectNew);
|
||||
menuConnect.Items.Add(menuConnectJoin);
|
||||
menuConnect.Items.Add(menuConnectSync);
|
||||
menu.Items.Add(menuConnect);
|
||||
menuFile.Items.Add(menuFileLoad);
|
||||
menuFile.Items.Add(menuFileSave);
|
||||
menu.Items.Add(menuFile);
|
||||
menu.Items.Add(menuConnect);
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
private void ClearSelection(Grid grid)
|
||||
{
|
||||
foreach (var widget in grid.Widgets)
|
||||
{
|
||||
widget.Border = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawGrid(int visibleTilesX, int visibleTilesY)
|
||||
{
|
||||
for (var i = -1; i < visibleTilesX + 2; i++)
|
||||
|
@ -404,7 +292,7 @@ namespace Sledgemapper
|
|||
posX1, posY1,
|
||||
posX2,
|
||||
posY2,
|
||||
Color.Black);
|
||||
Color.GhostWhite);
|
||||
}
|
||||
|
||||
for (var i = -1; i < visibleTilesY + 2; i++)
|
||||
|
@ -421,7 +309,7 @@ namespace Sledgemapper
|
|||
_spriteBatch.DrawLine(posX1, posY1,
|
||||
posX2,
|
||||
posY2,
|
||||
Color.Black);
|
||||
Color.GhostWhite);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -652,6 +540,9 @@ namespace Sledgemapper
|
|||
|
||||
if (successful)
|
||||
{
|
||||
_mainWidget.MenuConnectNew.Enabled = true;
|
||||
_mainWidget.MenuConnectJoin.Enabled = true;
|
||||
_mainWidget.MenuConnectSync.Enabled = true;
|
||||
localWindow.Close();
|
||||
}
|
||||
}
|
||||
|
@ -717,10 +608,40 @@ namespace Sledgemapper
|
|||
}
|
||||
if (successful)
|
||||
{
|
||||
_mainWidget.MenuConnectNew.Enabled = true;
|
||||
_mainWidget.MenuConnectJoin.Enabled = true;
|
||||
_mainWidget.MenuConnectSync.Enabled = true;
|
||||
localWindow.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnOverlayButtonClicked(object sender, EventArgs e)
|
||||
{
|
||||
_state._currentOverlayId = ((ImageButton)sender).Id;
|
||||
_mainWidget.ClearSelection();
|
||||
((ImageButton)sender).Border = new SolidBrush(Color.Red);
|
||||
((ImageButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2);
|
||||
_state._insertMode = InsertMode.Overlay;
|
||||
}
|
||||
|
||||
private void OnTileButtonClicked(object sender, EventArgs e)
|
||||
{
|
||||
_state._currentTileId = ((ImageButton)sender).Id;
|
||||
_mainWidget.ClearSelection();
|
||||
((ImageButton)sender).Border = new SolidBrush(Color.Red);
|
||||
((ImageButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2);
|
||||
_state._insertMode = InsertMode.Tile;
|
||||
}
|
||||
|
||||
private void OnWallButtonClicked(object sender, EventArgs e)
|
||||
{
|
||||
_state._currentWallId = ((ImageButton)sender).Id;
|
||||
_mainWidget.ClearSelection();
|
||||
((ImageButton)sender).Border = new SolidBrush(Color.Red);
|
||||
((ImageButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2);
|
||||
_state._insertMode = InsertMode.Wall;
|
||||
}
|
||||
|
||||
private void OnMenuConnectJoinSelected(object sender, EventArgs e)
|
||||
{
|
||||
Window window = new Window
|
||||
|
@ -796,8 +717,6 @@ namespace Sledgemapper
|
|||
window.Content = content;
|
||||
|
||||
window.ShowModal(_desktop);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void OnMenuFileSaveSelected(object sender, EventArgs e)
|
||||
|
@ -858,15 +777,9 @@ namespace Sledgemapper
|
|||
var valid = !string.IsNullOrWhiteSpace(textBox.Text);
|
||||
if (!valid)
|
||||
{
|
||||
textBox.Background = new SolidBrush(Color.Red);
|
||||
textBox.Background = new SolidBrush(Color.PaleVioletRed);
|
||||
}
|
||||
return valid;
|
||||
}
|
||||
}
|
||||
|
||||
public enum TileAction
|
||||
{
|
||||
Add,
|
||||
Delete
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue