test small fixes

This commit is contained in:
Michele 2020-11-20 23:43:33 +00:00
parent 5551918d54
commit 3d45bc532c
12 changed files with 175 additions and 163 deletions

View file

@ -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<Texture2D>($"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<Texture2D>($"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<Texture2D>($"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)