test small fixes
This commit is contained in:
parent
5551918d54
commit
3d45bc532c
12 changed files with 175 additions and 163 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{ }
|
||||
}
|
||||
}
|
Binary file not shown.
|
@ -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<Wall>("NewWall", (tile) =>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,6 @@
|
|||
</Grid>
|
||||
<TextButton Text="Login" Width="70" Height="20" Padding="5" HorizontalAlignment="Center" Id="BtnLogin" />
|
||||
<TextButton Text="Register" Visible="False" Width="70" Height="20" Padding="5" HorizontalAlignment="Center" Id="BtnRegister" />
|
||||
<Label Text="Email" TextColor="#FE3930FF" HorizontalAlignment="Center" Visible="False" Id="LblLoginError" />
|
||||
<Label Text="" TextColor="#FE3930FF" HorizontalAlignment="Center" Visible="False" Id="LblLoginError" />
|
||||
</VerticalStackPanel>
|
||||
</Project>
|
|
@ -12,6 +12,6 @@
|
|||
<TextBox GridColumn="1" Id="TxtSession" />
|
||||
|
||||
</Grid>
|
||||
<TextButton Text="Join" Padding="10, 5" HorizontalAlignment="Center" Id="BtnLogin" />
|
||||
<TextButton Text="New" Padding="10, 5" HorizontalAlignment="Center" Id="BtnLogin" />
|
||||
</VerticalStackPanel>
|
||||
</Project>
|
Loading…
Add table
Add a link
Reference in a new issue