diff --git a/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs b/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs index 9ddcce4..4dbd961 100644 --- a/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs +++ b/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(DeleteOverlayNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.SessionName).DeleteOverlay(notification.Overlay); + await _hub.Clients.Groups(notification.Session.SessionName).DeleteOverlay(notification.Overlay); } } } diff --git a/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs b/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs index c44778a..90c70e4 100644 --- a/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs +++ b/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(DeleteTileNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.SessionName).DeleteTile(notification.Tile); + await _hub.Clients.Groups(notification.Session.SessionName).DeleteTile(notification.Tile); } } } diff --git a/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs b/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs index 5bc5429..eb97b76 100644 --- a/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs +++ b/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(DeleteWallNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.SessionName).DeleteWall(notification.Wall); + await _hub.Clients.Groups(notification.Session.SessionName).DeleteWall(notification.Wall); } } } diff --git a/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs b/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs index f52e898..43a9475 100644 --- a/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewOverlayNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.SessionName).NewOverlay(notification.Overlay); + await _hub.Clients.Groups(notification.Session.SessionName).NewOverlay(notification.Overlay); } } } diff --git a/Sledgemapper.Api/Notifications/BaseNotification.cs b/Sledgemapper.Api/Notifications/BaseNotification.cs index 30b075d..a577ce8 100644 --- a/Sledgemapper.Api/Notifications/BaseNotification.cs +++ b/Sledgemapper.Api/Notifications/BaseNotification.cs @@ -6,28 +6,15 @@ namespace Sledgemapper.Api.Notifications public abstract class BaseNotification : INotification { public double Timestamp { get; private set; } - public string SessionName { get; private set; } public int UserId { get; private set; } public int SessionId { get; set; } public Models.Session Session { get; set; } - public BaseNotification(string sessionName, int userId) + public BaseNotification(Models.Session session, int userId) { Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); - SessionName = sessionName; + Session = session; ; UserId = userId; } - - public BaseNotification(Models.Session session, int userId) - { - Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); - Session = session;; - UserId = userId; - } - - public BaseNotification(int sessionId, string sessionName, int userId) : this(sessionName, userId) - { - SessionId = sessionId; - } } } diff --git a/Sledgemapper.Api/Notifications/NewSessionNotification.cs b/Sledgemapper.Api/Notifications/NewSessionNotification.cs index e0fb0a9..af6bf84 100644 --- a/Sledgemapper.Api/Notifications/NewSessionNotification.cs +++ b/Sledgemapper.Api/Notifications/NewSessionNotification.cs @@ -2,8 +2,7 @@ namespace Sledgemapper.Api.Notifications { public class NewSessionNotification : BaseNotification { - - public NewSessionNotification(string sessionName, int userId) : base(sessionName, userId) - {} + public NewSessionNotification(string sessionName, int userId) : base(new Models.Session { SessionName = sessionName }, userId) + { } } } \ No newline at end of file diff --git a/Sledgemapper.Api/sledgemapper.db b/Sledgemapper.Api/sledgemapper.db index 892ac8b..c313cec 100644 Binary files a/Sledgemapper.Api/sledgemapper.db and b/Sledgemapper.Api/sledgemapper.db differ diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index abaac79..54533b9 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -87,7 +87,10 @@ namespace Sledgemapper Connection.On("RefreshPlayers", () => { - Connection?.SendAsync("UpdatePosition", SessionData.SessionName, SessionData.SessionId, SessionData.Players.First(p=>p.UserId==int.Parse(_authenticateResponse.Id))); + if (!string.IsNullOrWhiteSpace(SessionData.SessionName)) + { + Connection?.SendAsync("UpdatePosition", SessionData.SessionName, SessionData.SessionId, SessionData.Players.First(p => p.UserId == int.Parse(_authenticateResponse.Id))); + } }); Connection.On("NewWall", (tile) => diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index c29089d..6009b2e 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -146,24 +146,24 @@ namespace Sledgemapper var screenPosition = new Point(mouseState.Position.X - (int)_viewportCenter.X, mouseState.Position.Y - (int)_viewportCenter.Y); - _state._hoveredTile.X = screenPosition.X / _state._tileSize; - _state._hoveredTile.Y = screenPosition.Y / _state._tileSize; + _state.HoveredTile.X = screenPosition.X / _state.TileSize; + _state.HoveredTile.Y = screenPosition.Y / _state.TileSize; if (screenPosition.X < 0) { - _state._hoveredTile.X--; + _state.HoveredTile.X--; } if (screenPosition.Y < 0) { - _state._hoveredTile.Y--; + _state.HoveredTile.Y--; } - if (_state._insertMode == InsertMode.Wall) + if (_state.InsertMode == InsertMode.Wall) { _state.SelectClosestWall(screenPosition); } - if (_state._insertMode == InsertMode.Overlay) + if (_state.InsertMode == InsertMode.Overlay) { _state.SelectOverlay(screenPosition); } @@ -190,33 +190,33 @@ namespace Sledgemapper } else { - _state._selectedTile.X = _state._hoveredTile.X; - _state._selectedTile.Y = _state._hoveredTile.Y; - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _sessionData.SessionId, _state._selectedTile); + _state.SelectedTile.X = _state.HoveredTile.X; + _state.SelectedTile.Y = _state.HoveredTile.Y; + _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _sessionData.SessionId, _state.SelectedTile); } } if (newState.IsKeyDown(Keys.LeftControl) && mouseState.LeftButton == ButtonState.Pressed - && ((mouseState.LeftButton != oldMouseState.LeftButton) || (_state._selectedTile.X != _state._hoveredTile.X && _state._selectedTile.Y != _state._hoveredTile.Y))) + && ((mouseState.LeftButton != oldMouseState.LeftButton) || (_state.SelectedTile.X != _state.HoveredTile.X && _state.SelectedTile.Y != _state.HoveredTile.Y))) { - switch (_state._insertMode) + switch (_state.InsertMode) { case InsertMode.Tile: - _state._selectedTile.X = _state._hoveredTile.X; - _state._selectedTile.Y = _state._hoveredTile.Y; - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _sessionData.SessionId, _state._selectedTile); + _state.SelectedTile.X = _state.HoveredTile.X; + _state.SelectedTile.Y = _state.HoveredTile.Y; + _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _sessionData.SessionId, _state.SelectedTile); - _sessionData.NewTile(_state._selectedTile, _state._currentTileId); + _sessionData.NewTile(_state.SelectedTile, _state.CurrentTileId); break; case InsertMode.Wall: - _sessionData.NewWall(_state._selectedWall, _state._currentWallId); + _sessionData.NewWall(_state.SelectedWall, _state.CurrentWallId); break; case InsertMode.Overlay: - _sessionData.NewOverlay(_state._selectedOverlay, _state._currentOverlayId); + _sessionData.NewOverlay(_state.SelectedOverlay, _state.CurrentOverlayId); break; } } @@ -224,19 +224,19 @@ namespace Sledgemapper if (newState.IsKeyDown(Keys.LeftControl) && mouseState.ScrollWheelValue != oldMouseState.ScrollWheelValue) { // var center = new Point(GraphicsDevice.Viewport.Width / 2, GraphicsDevice.Viewport.Height / 2); - var center = new Point((Window.ClientBounds.Width + 200) / 2 - _state._tileSize / 2, Window.ClientBounds.Height / 2 - _state._tileSize / 2); + var center = new Point((Window.ClientBounds.Width + 200) / 2 - _state.TileSize / 2, Window.ClientBounds.Height / 2 - _state.TileSize / 2); - var tx = (center.X - (int)_viewportCenter.X) / _state._tileSize; - var ty = (center.Y - (int)_viewportCenter.Y) / _state._tileSize; + var tx = (center.X - (int)_viewportCenter.X) / _state.TileSize; + var ty = (center.Y - (int)_viewportCenter.Y) / _state.TileSize; if (mouseState.ScrollWheelValue > oldMouseState.ScrollWheelValue) { - _state._tileSize = Math.Min(120, _state._tileSize + 10); - + _state.TileSize = Math.Min(120, _state.TileSize + 10); + } else if (mouseState.ScrollWheelValue < oldMouseState.ScrollWheelValue) { - _state._tileSize = Math.Max(10, _state._tileSize - 10); + _state.TileSize = Math.Max(10, _state.TileSize - 10); } CenterOnTile(tx, ty); @@ -248,18 +248,18 @@ namespace Sledgemapper if (newState.IsKeyDown(Keys.Delete)) { - switch (_state._insertMode) + switch (_state.InsertMode) { case InsertMode.Tile: - _state._selectedTile.X = _state._hoveredTile.X; - _state._selectedTile.Y = _state._hoveredTile.Y; - _sessionData.DeleteTile(_state._selectedTile); + _state.SelectedTile.X = _state.HoveredTile.X; + _state.SelectedTile.Y = _state.HoveredTile.Y; + _sessionData.DeleteTile(_state.SelectedTile); break; case InsertMode.Wall: - _sessionData.DeleteWall(_state._selectedWall); + _sessionData.DeleteWall(_state.SelectedWall); break; case InsertMode.Overlay: - _sessionData.DeleteOverlay(_state._selectedOverlay); + _sessionData.DeleteOverlay(_state.SelectedOverlay); break; } } @@ -270,22 +270,33 @@ namespace Sledgemapper { case Keys.Left: if (oldState.IsKeyUp(Keys.Left) && newState.IsKeyDown(Keys.Left)) - { _state._selectedTile.X--; } + { + _state.SelectedTile.X--; + _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _state.SelectedTile); + } break; case Keys.Right: if (oldState.IsKeyUp(Keys.Right) && newState.IsKeyDown(Keys.Right)) - { _state._selectedTile.X++; } + { + _state.SelectedTile.X++; + _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _state.SelectedTile); + } break; case Keys.Up: if (oldState.IsKeyUp(Keys.Up) && newState.IsKeyDown(Keys.Up)) - { _state._selectedTile.Y--; } + { + _state.SelectedTile.Y--; + _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _state.SelectedTile); + } break; case Keys.Down: if (oldState.IsKeyUp(Keys.Down) && newState.IsKeyDown(Keys.Down)) - { _state._selectedTile.Y++; } + { + _state.SelectedTile.Y++; + _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _state.SelectedTile); + } break; } - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _state._selectedTile); } @@ -296,14 +307,14 @@ namespace Sledgemapper private void CenterOnSelectedTile() { - CenterOnTile(_state._selectedTile.X, _state._selectedTile.Y); + CenterOnTile(_state.SelectedTile.X, _state.SelectedTile.Y); } private void CenterOnTile(int x, int y) { - var center = new Point((Window.ClientBounds.Width + 200) / 2 - _state._tileSize / 2, Window.ClientBounds.Height / 2 - _state._tileSize / 2); - var dx = center.X - x * _state._tileSize - _viewportCenter.X; - var dy = center.Y - y * _state._tileSize - _viewportCenter.Y; + var center = new Point((Window.ClientBounds.Width + 200) / 2 - _state.TileSize / 2, Window.ClientBounds.Height / 2 - _state.TileSize / 2); + var dx = center.X - x * _state.TileSize - _viewportCenter.X; + var dy = center.Y - y * _state.TileSize - _viewportCenter.Y; _viewportCenter.X += dx; _viewportCenter.Y += dy; } @@ -316,8 +327,8 @@ namespace Sledgemapper } GraphicsDevice.Clear(Color.LightGray); - var visibleTilesX = GraphicsDevice.Viewport.Width / _state._tileSize + 1; - var visibleTilesY = GraphicsDevice.Viewport.Height / _state._tileSize + 1; + var visibleTilesX = GraphicsDevice.Viewport.Width / _state.TileSize + 1; + var visibleTilesY = GraphicsDevice.Viewport.Height / _state.TileSize + 1; _spriteBatch.Begin(transformMatrix: Matrix.CreateTranslation(_viewportCenter)); @@ -328,21 +339,21 @@ namespace Sledgemapper if (string.IsNullOrWhiteSpace(_sessionData.SessionName)) { - _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); + _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(); - var startWall = new Vector2(_state._selectedWall.X * _state._tileSize, _state._selectedWall.Y * _state._tileSize); - if (_state._insertMode == InsertMode.Wall) + var startWall = new Vector2(_state.SelectedWall.X * _state.TileSize, _state.SelectedWall.Y * _state.TileSize); + if (_state.InsertMode == InsertMode.Wall) { - _spriteBatch.DrawLine(startWall, _state._tileSize, MathHelper.ToRadians(90 * _state._selectedWall.Rotation), Color.Red, 2); + _spriteBatch.DrawLine(startWall, _state.TileSize, MathHelper.ToRadians(90 * _state.SelectedWall.Rotation), Color.Red, 2); } - var overlay = new Vector2(_state._selectedOverlay.X * _state._tileSize, _state._selectedOverlay.Y * _state._tileSize); - if (_state._insertMode == InsertMode.Overlay && _state._selectedOverlay.Intersection) + var overlay = new Vector2(_state.SelectedOverlay.X * _state.TileSize, _state.SelectedOverlay.Y * _state.TileSize); + if (_state.InsertMode == InsertMode.Overlay && _state.SelectedOverlay.Intersection) { - _spriteBatch.DrawCircle(overlay, _state._tileSize / 3f, 100, Color.Red, 2); + _spriteBatch.DrawCircle(overlay, _state.TileSize / 3f, 100, Color.Red, 2); } _spriteBatch.End(); @@ -362,14 +373,14 @@ namespace Sledgemapper { for (var i = -1; i < visibleTilesX + 2; i++) { - var posX1 = i * _state._tileSize - _viewportCenter.X; + var posX1 = i * _state.TileSize - _viewportCenter.X; var posY1 = -_viewportCenter.Y; - posX1 -= posX1 % _state._tileSize; - posY1 -= posY1 % _state._tileSize; - var posX2 = i * _state._tileSize - _viewportCenter.X; + posX1 -= posX1 % _state.TileSize; + posY1 -= posY1 % _state.TileSize; + var posX2 = i * _state.TileSize - _viewportCenter.X; var posY2 = GraphicsDevice.Viewport.Height - _viewportCenter.Y; - posX2 -= posX2 % _state._tileSize; - posY2 -= posY2 % _state._tileSize; + posX2 -= posX2 % _state.TileSize; + posY2 -= posY2 % _state.TileSize; _spriteBatch.DrawLine( posX1, posY1, @@ -381,13 +392,13 @@ namespace Sledgemapper for (var i = -1; i < visibleTilesY + 2; i++) { var posX1 = -_viewportCenter.X; - var posY1 = i * _state._tileSize - _viewportCenter.Y; - posX1 -= posX1 % _state._tileSize; - posY1 -= posY1 % _state._tileSize; + var posY1 = i * _state.TileSize - _viewportCenter.Y; + posX1 -= posX1 % _state.TileSize; + posY1 -= posY1 % _state.TileSize; var posX2 = GraphicsDevice.Viewport.Width - _viewportCenter.X; - var posY2 = i * _state._tileSize - _viewportCenter.Y; - posX2 -= posX2 % _state._tileSize; - posY2 -= posY2 % _state._tileSize; + var posY2 = i * _state.TileSize - _viewportCenter.Y; + posX2 -= posX2 % _state.TileSize; + posY2 -= posY2 % _state.TileSize; _spriteBatch.DrawLine(posX1, posY1, posX2, @@ -396,25 +407,25 @@ namespace Sledgemapper } - if (_showCellNumbers && _state._tileSize >= 30) + if (_showCellNumbers && _state.TileSize >= 30) { - var ffont = _fonts.FirstOrDefault(m => int.Parse(m.Key.Replace("font", "")) > _state._tileSize / 8).Value ?? _fonts.Last().Value; + var ffont = _fonts.FirstOrDefault(m => int.Parse(m.Key.Replace("font", "")) > _state.TileSize / 8).Value ?? _fonts.Last().Value; var fscale = 1f; for (var i = -1; i < visibleTilesX + 2; i++) { for (var j = -1; j < visibleTilesY + 2; j++) { - var screenPosition = new Point(i * _state._tileSize - (int)_viewportCenter.X, j * _state._tileSize - (int)_viewportCenter.Y); + var screenPosition = new Point(i * _state.TileSize - (int)_viewportCenter.X, j * _state.TileSize - (int)_viewportCenter.Y); - var x = screenPosition.X / _state._tileSize; - var y = screenPosition.Y / _state._tileSize; + var x = screenPosition.X / _state.TileSize; + var y = screenPosition.Y / _state.TileSize; _spriteBatch.DrawString(ffont, $"{x}:{y}", new Vector2( - x * _state._tileSize + 2, - y * _state._tileSize + 2 + x * _state.TileSize + 2, + y * _state.TileSize + 2 ), Color.Black, 0, @@ -434,19 +445,19 @@ namespace Sledgemapper var content = Content.Load($"overlays/{tile.ID}"); if (tile.Intersection) { - var posX = tile.X * _state._tileSize; - var posY = tile.Y * _state._tileSize; + var posX = tile.X * _state.TileSize; + var posY = tile.Y * _state.TileSize; _spriteBatch.Draw(content, new Vector2(posX, posY), - null, new Color(24, 118, 157), MathHelper.ToRadians(90 * tile.Rotation), new Vector2(content.Width / 2, content.Height / 2), ((float)_state._tileSize - 10) / content.Width, SpriteEffects.None, 0); + null, new Color(24, 118, 157), MathHelper.ToRadians(90 * tile.Rotation), new Vector2(content.Width / 2, content.Height / 2), ((float)_state.TileSize - 10) / content.Width, SpriteEffects.None, 0); } else { - var posX = tile.X * _state._tileSize + _state._tileSize / 2f; - var posY = tile.Y * _state._tileSize + _state._tileSize / 2f; + var posX = tile.X * _state.TileSize + _state.TileSize / 2f; + var posY = tile.Y * _state.TileSize + _state.TileSize / 2f; _spriteBatch.Draw(content, new Vector2(posX, posY), - null, new Color(24, 118, 157), MathHelper.ToRadians(90 * tile.Rotation), new Vector2(content.Width / 2, content.Height / 2), ((float)_state._tileSize - 10) / content.Width, SpriteEffects.None, 0); + null, new Color(24, 118, 157), MathHelper.ToRadians(90 * tile.Rotation), new Vector2(content.Width / 2, content.Height / 2), ((float)_state.TileSize - 10) / content.Width, SpriteEffects.None, 0); } } } @@ -459,14 +470,14 @@ namespace Sledgemapper var color = new Color(int.Parse(hexs[0], System.Globalization.NumberStyles.HexNumber), int.Parse(hexs[1], System.Globalization.NumberStyles.HexNumber), int.Parse(hexs[2], System.Globalization.NumberStyles.HexNumber)); - _spriteBatch.DrawRectangle(new Rectangle(player.Position.X * _state._tileSize, player.Position.Y * _state._tileSize, _state._tileSize - 1, _state._tileSize - 1), color, 2); + _spriteBatch.DrawRectangle(new Rectangle(player.Position.X * _state.TileSize, player.Position.Y * _state.TileSize, _state.TileSize - 1, _state.TileSize - 1), color, 2); - var ffont = _fonts.FirstOrDefault(m => int.Parse(m.Key.Replace("font", "")) > _state._tileSize).Value ?? _fonts.Last().Value; + var ffont = _fonts.FirstOrDefault(m => int.Parse(m.Key.Replace("font", "")) > _state.TileSize).Value ?? _fonts.Last().Value; - var fscale = _state._tileSize / ((float)ffont.LineSpacing * 2); + var fscale = _state.TileSize / ((float)ffont.LineSpacing * 2); _spriteBatch.DrawString(ffont, player.Initials, - new Vector2(player.Position.X * _state._tileSize + 2, player.Position.Y * _state._tileSize + _state._tileSize - 2 - ffont.LineSpacing * fscale), + new Vector2(player.Position.X * _state.TileSize + 2, player.Position.Y * _state.TileSize + _state.TileSize - 2 - ffont.LineSpacing * fscale), color, 0, Vector2.Zero, @@ -482,11 +493,11 @@ namespace Sledgemapper { var content = Content.Load($"tiles/{tile.ID}"); - var posX = tile.X * _state._tileSize + _state._tileSize / 2f; - var posY = tile.Y * _state._tileSize + _state._tileSize / 2f; + var posX = tile.X * _state.TileSize + _state.TileSize / 2f; + var posY = tile.Y * _state.TileSize + _state.TileSize / 2f; _spriteBatch.Draw(content, new Vector2(posX, posY), - null, Color.White, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(content.Width / 2, content.Height / 2), ((float)_state._tileSize - 1) / content.Width, SpriteEffects.None, 0); + null, Color.White, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(content.Width / 2, content.Height / 2), ((float)_state.TileSize - 1) / content.Width, SpriteEffects.None, 0); } } @@ -495,10 +506,10 @@ namespace Sledgemapper foreach (var wall in _sessionData.Walls.Values) { var content = Content.Load($"walls/{wall.ID}"); - var scale = _state._tileSize / (float)content.Height; + var scale = _state.TileSize / (float)content.Height; var offset = scale * content.Width / 2f; - var posX = wall.X * _state._tileSize; - var posY = wall.Y * _state._tileSize; + var posX = wall.X * _state.TileSize; + var posY = wall.Y * _state.TileSize; if (wall.Rotation == 1) { posX -= (int)offset; @@ -528,7 +539,9 @@ namespace Sledgemapper if (_communicationManager.Connection.State != HubConnectionState.Connected) { + _mainWidget.lblConnectionStatus.Text = "Connecting"; await _communicationManager.Connection.StartAsync(); + UpdateConnectionState(_communicationManager.Connection); } var successful = false; @@ -583,8 +596,6 @@ namespace Sledgemapper _mainWidget.lblConnectionStatus.Text = "Connecting"; await _communicationManager.Connection.StartAsync(); UpdateConnectionState(_communicationManager.Connection); - - } var successful = false; @@ -803,29 +814,29 @@ namespace Sledgemapper private void OnOverlayButtonClicked(object sender, EventArgs e) { - _state._currentOverlayId = ((ImageButton)sender).Id; + _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; + _state.InsertMode = InsertMode.Overlay; } private void OnTileButtonClicked(object sender, EventArgs e) { - _state._currentTileId = ((ImageButton)sender).Id; + _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; + _state.InsertMode = InsertMode.Tile; } private void OnWallButtonClicked(object sender, EventArgs e) { - _state._currentWallId = ((ImageButton)sender).Id; + _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; + _state.InsertMode = InsertMode.Wall; } private void OnMenuConnectJoinSelected(object sender, EventArgs e) diff --git a/Sledgemapper/State.cs b/Sledgemapper/State.cs index a2179b2..6030199 100644 --- a/Sledgemapper/State.cs +++ b/Sledgemapper/State.cs @@ -6,95 +6,107 @@ namespace Sledgemapper { public class State { - public Tile _selectedTile = new() { X = 1, Y = 1 }; - public Tile _hoveredTile = new() { X = 1, Y = 1 }; - public Wall _selectedWall = new() { X = 1, Y = 1 }; - public Overlay _selectedOverlay = new() { X = 1, Y = 1 }; - public int _tileSize = 30; - public string _currentTileId = ""; - public string _currentWallId = ""; - public string _currentOverlayId = ""; - public InsertMode _insertMode; + public Tile SelectedTile { get; set; } + public Tile HoveredTile { get; set; } + public Wall SelectedWall { get; set; } + public Overlay SelectedOverlay { get; set; } + public int TileSize { get; set; } + public string CurrentTileId { get; set; } + public string CurrentWallId { get; set; } + public string CurrentOverlayId { get; set; } + public InsertMode InsertMode; + + public State() + { + CurrentTileId = ""; + CurrentWallId = ""; + CurrentOverlayId = ""; + SelectedTile = new() { X = 1, Y = 1 }; + HoveredTile = new() { X = 1, Y = 1 }; + SelectedWall = new() { X = 1, Y = 1 }; + SelectedOverlay = new() { X = 1, Y = 1 }; + TileSize = 30; + } public void SelectClosestWall(Point mousePosition) { - var topLeft = new Point(_hoveredTile.X * _tileSize, _hoveredTile.Y * _tileSize); - var bottomLeft = new Point(_hoveredTile.X * _tileSize, _hoveredTile.Y * _tileSize + _tileSize); - var topRight = new Point(_hoveredTile.X * _tileSize + _tileSize, _hoveredTile.Y * _tileSize); - var bottomRight = new Point(_hoveredTile.X * _tileSize + _tileSize, _hoveredTile.Y * _tileSize + _tileSize); - var center = new Point(_hoveredTile.X * _tileSize + _tileSize / 2, _hoveredTile.Y * _tileSize + _tileSize / 2); + var topLeft = new Point(HoveredTile.X * TileSize, HoveredTile.Y * TileSize); + var bottomLeft = new Point(HoveredTile.X * TileSize, HoveredTile.Y * TileSize + TileSize); + var topRight = new Point(HoveredTile.X * TileSize + TileSize, HoveredTile.Y * TileSize); + var bottomRight = new Point(HoveredTile.X * TileSize + TileSize, HoveredTile.Y * TileSize + TileSize); + var center = new Point(HoveredTile.X * TileSize + TileSize / 2, HoveredTile.Y * TileSize + TileSize / 2); if (Utils.PointInTri(mousePosition, topLeft, center, bottomLeft)) //left wall { - _selectedWall.X = _hoveredTile.X; - _selectedWall.Y = _hoveredTile.Y; - _selectedWall.Rotation = 1; + SelectedWall.X = HoveredTile.X; + SelectedWall.Y = HoveredTile.Y; + SelectedWall.Rotation = 1; } else if (Utils.PointInTri(mousePosition, topRight, bottomRight, center)) //right wall { - _selectedWall.X = _hoveredTile.X + 1; - _selectedWall.Y = _hoveredTile.Y; - _selectedWall.Rotation = 1; + SelectedWall.X = HoveredTile.X + 1; + SelectedWall.Y = HoveredTile.Y; + SelectedWall.Rotation = 1; } else if (Utils.PointInTri(mousePosition, topLeft, topRight, center)) //top wall { - _selectedWall.X = _hoveredTile.X; - _selectedWall.Y = _hoveredTile.Y; - _selectedWall.Rotation = 0; + SelectedWall.X = HoveredTile.X; + SelectedWall.Y = HoveredTile.Y; + SelectedWall.Rotation = 0; } else if (Utils.PointInTri(mousePosition, bottomLeft, center, bottomRight)) //bottom wall { - _selectedWall.X = _hoveredTile.X; - _selectedWall.Y = _hoveredTile.Y + 1; - _selectedWall.Rotation = 0; + SelectedWall.X = HoveredTile.X; + SelectedWall.Y = HoveredTile.Y + 1; + SelectedWall.Rotation = 0; } } public void SelectOverlay(Point mousePosition) { - _selectedOverlay.X = _hoveredTile.X; - _selectedOverlay.Y = _hoveredTile.Y; - var q1 = Math.Pow(mousePosition.X - _hoveredTile.X * _tileSize, 2); - var q2 = Math.Pow(_hoveredTile.Y * _tileSize - mousePosition.Y, 2); + SelectedOverlay.X = HoveredTile.X; + SelectedOverlay.Y = HoveredTile.Y; + var q1 = Math.Pow(mousePosition.X - HoveredTile.X * TileSize, 2); + var q2 = Math.Pow(HoveredTile.Y * TileSize - mousePosition.Y, 2); var s = Math.Sqrt(q1 + q2); - if (s < _tileSize / 3) + if (s < TileSize / 3) { - _selectedOverlay.Intersection = true; + SelectedOverlay.Intersection = true; return; } - q1 = Math.Pow(mousePosition.X - (_hoveredTile.X + 1) * _tileSize, 2); + q1 = Math.Pow(mousePosition.X - (HoveredTile.X + 1) * TileSize, 2); s = Math.Sqrt(q1 + q2); - if (s < _tileSize / 3) + if (s < TileSize / 3) { - _selectedOverlay.X = _selectedOverlay.X + 1; - _selectedOverlay.Intersection = true; + SelectedOverlay.X = SelectedOverlay.X + 1; + SelectedOverlay.Intersection = true; return; } //q1 = System.Math.Pow(mousePosition.X - (_hoveredTile.X + 1) * _tileSize, 2); - q2 = Math.Pow((_hoveredTile.Y + 1) * _tileSize - mousePosition.Y, 2); + q2 = Math.Pow((HoveredTile.Y + 1) * TileSize - mousePosition.Y, 2); s = Math.Sqrt(q1 + q2); - if (s < _tileSize / 3) + if (s < TileSize / 3) { - _selectedOverlay.X = _selectedOverlay.X + 1; - _selectedOverlay.Y = _selectedOverlay.Y + 1; - _selectedOverlay.Intersection = true; + SelectedOverlay.X = SelectedOverlay.X + 1; + SelectedOverlay.Y = SelectedOverlay.Y + 1; + SelectedOverlay.Intersection = true; return; } - q1 = Math.Pow(mousePosition.X - _hoveredTile.X * _tileSize, 2); - q2 = Math.Pow((_hoveredTile.Y + 1) * _tileSize - mousePosition.Y, 2); + q1 = Math.Pow(mousePosition.X - HoveredTile.X * TileSize, 2); + q2 = Math.Pow((HoveredTile.Y + 1) * TileSize - mousePosition.Y, 2); s = Math.Sqrt(q1 + q2); - if (s < _tileSize / 3) + if (s < TileSize / 3) { - _selectedOverlay.X = _selectedOverlay.X; - _selectedOverlay.Y = _selectedOverlay.Y + 1; - _selectedOverlay.Intersection = true; + SelectedOverlay.X = SelectedOverlay.X; + SelectedOverlay.Y = SelectedOverlay.Y + 1; + SelectedOverlay.Intersection = true; return; } - _selectedOverlay.Intersection = false; + SelectedOverlay.Intersection = false; } } } diff --git a/Sledgemapper/UI/loginwindow.xml b/Sledgemapper/UI/loginwindow.xml index 921ac99..b493a50 100644 --- a/Sledgemapper/UI/loginwindow.xml +++ b/Sledgemapper/UI/loginwindow.xml @@ -23,6 +23,6 @@ -