progress
This commit is contained in:
parent
f9c6b1c02f
commit
901d8ff8c3
4 changed files with 179 additions and 63 deletions
|
@ -190,7 +190,7 @@ namespace Sledgemapper.Shared.Entities
|
||||||
}
|
}
|
||||||
|
|
||||||
var lineExist = Lines.TryGetValue(line.ToString(), out var tile);
|
var lineExist = Lines.TryGetValue(line.ToString(), out var tile);
|
||||||
var newLine = new Line { Start=line.Start, End=line.End};
|
var newLine = new Line { Start=line.Start, End=line.End, Width=line.Width};
|
||||||
if (lineExist)
|
if (lineExist)
|
||||||
{
|
{
|
||||||
Lines.TryRemove(line.ToString(), out var _);
|
Lines.TryRemove(line.ToString(), out var _);
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
{
|
{
|
||||||
public SnapPoint Start { get; set; }
|
public SnapPoint Start { get; set; }
|
||||||
public SnapPoint End { get; set; }
|
public SnapPoint End { get; set; }
|
||||||
|
public float Width {get;set;}
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
|
|
@ -367,25 +367,42 @@ namespace Sledgemapper
|
||||||
{
|
{
|
||||||
if (_state.LineStart is null)
|
if (_state.LineStart is null)
|
||||||
{
|
{
|
||||||
_state.LineStart = new SnapPoint { X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, Index=_state.SelectedSnapPoint.Index };
|
_state.LineStart = new SnapPoint { X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, Index = _state.SelectedSnapPoint.Index };
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
var line = new Line
|
var line = new Line
|
||||||
{
|
{
|
||||||
Start = new SnapPoint { X = _state.LineStart.X, Y = _state.LineStart.Y, Index = _state.LineStart.Index },
|
Start = new SnapPoint { X = _state.LineStart.X, Y = _state.LineStart.Y, Index = _state.LineStart.Index },
|
||||||
End = new SnapPoint { X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, Index = _state.SelectedSnapPoint.Index }
|
End = new SnapPoint { X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, Index = _state.SelectedSnapPoint.Index },
|
||||||
|
Width = _state.LineWidth
|
||||||
};
|
};
|
||||||
_state.LineStart = null;
|
_state.LineStart = null;
|
||||||
|
_state.LineWidth = 1;
|
||||||
_sessionData.NewLine(line);
|
_sessionData.NewLine(line);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_state.InsertMode == InsertMode.NewLine && _state.LineStart != null)
|
||||||
|
{
|
||||||
|
if (mouseState.ScrollWheelValue > oldMouseState.ScrollWheelValue)
|
||||||
|
{
|
||||||
|
_state.LineWidth += .01f;
|
||||||
|
}
|
||||||
|
else if (mouseState.ScrollWheelValue < oldMouseState.ScrollWheelValue)
|
||||||
|
{
|
||||||
|
_state.LineWidth -= .01f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newState.IsKeyDown(Keys.LeftControl) && mouseState.ScrollWheelValue != oldMouseState.ScrollWheelValue)
|
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(GraphicsDevice.Viewport.Width / 2, GraphicsDevice.Viewport.Height / 2);
|
||||||
|
var maxTileSize=500;
|
||||||
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 tx = (center.X - (int)_viewportCenter.X) / _state.TileSize;
|
||||||
|
@ -393,7 +410,7 @@ namespace Sledgemapper
|
||||||
|
|
||||||
if (mouseState.ScrollWheelValue > oldMouseState.ScrollWheelValue)
|
if (mouseState.ScrollWheelValue > oldMouseState.ScrollWheelValue)
|
||||||
{
|
{
|
||||||
_state.TileSize = Math.Min(120, _state.TileSize + 10);
|
_state.TileSize = Math.Min(maxTileSize, _state.TileSize + 10);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (mouseState.ScrollWheelValue < oldMouseState.ScrollWheelValue)
|
else if (mouseState.ScrollWheelValue < oldMouseState.ScrollWheelValue)
|
||||||
|
@ -596,14 +613,78 @@ namespace Sledgemapper
|
||||||
snapPoint.Y += _state.TileSize / 2;
|
snapPoint.Y += _state.TileSize / 2;
|
||||||
snapPoint.X += _state.TileSize / 2;
|
snapPoint.X += _state.TileSize / 2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_spriteBatch.DrawCircle(snapPoint, _state.TileSize / 5f, 100, Color.Red, 2);
|
_spriteBatch.DrawCircle(snapPoint, _state.TileSize / 5f, 100, Color.Red, 2);
|
||||||
|
|
||||||
|
|
||||||
|
//line preview
|
||||||
|
if (_state.LineStart != null)
|
||||||
|
{
|
||||||
|
|
||||||
|
// border pass
|
||||||
|
|
||||||
|
// var content = Content.Load<Texture2D>($"tiles/{tile.ID}");
|
||||||
|
|
||||||
|
var posX = _state.LineStart.X * _state.TileSize;
|
||||||
|
var posY = _state.LineStart.Y * _state.TileSize;
|
||||||
|
|
||||||
|
var endposX = _state.SelectedSnapPoint.X * _state.TileSize;
|
||||||
|
var endposY = _state.SelectedSnapPoint.Y * _state.TileSize;
|
||||||
|
|
||||||
|
switch (_state.LineStart.Index)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
posX += _state.TileSize / 2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
posY += _state.TileSize / 2;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
posX += _state.TileSize / 2;
|
||||||
|
posY += _state.TileSize / 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (_state.SelectedSnapPoint.Index)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
endposX += _state.TileSize / 2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
endposY += _state.TileSize / 2;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
endposX += _state.TileSize / 2;
|
||||||
|
endposY += _state.TileSize / 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
var l = Math.Sqrt(Math.Pow(posX - endposX, 2) + Math.Pow(posY - endposY, 2));
|
||||||
|
|
||||||
|
var angle = Math.Atan2(posY - endposY, endposX - posX);
|
||||||
|
var angleRad = -(float)angle;//MathHelper.ToRadians((float)angle);
|
||||||
|
if (l > 0)
|
||||||
|
{
|
||||||
|
var whiteRectangle = new Texture2D(GraphicsDevice, (int)l, (int)(_state.TileSize * _state.LineWidth));
|
||||||
|
// whiteRectangle.SetData(new[] { new Color(Color.Red, 80) });
|
||||||
|
|
||||||
|
whiteRectangle.SetData(Enumerable.Range(0, (int)l * ((int)(_state.TileSize * _state.LineWidth))).Select(i => new Color(Color.Red, 80)).ToArray());
|
||||||
|
|
||||||
|
|
||||||
|
_spriteBatch.Draw(whiteRectangle, new Rectangle(posX, posY, (int)l, (int)(_state.TileSize * _state.LineWidth)), null, Color.White, angleRad, new Vector2(0, 0), SpriteEffects.None, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_spriteBatch.End();
|
_spriteBatch.End();
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -898,8 +979,11 @@ namespace Sledgemapper
|
||||||
|
|
||||||
private void DrawLines()
|
private void DrawLines()
|
||||||
{
|
{
|
||||||
var whiteRectangle = new Texture2D(GraphicsDevice, 1, 1);
|
// var borderRectangle = new Texture2D(GraphicsDevice, 1, 1);
|
||||||
whiteRectangle.SetData(new[] { _settings.OverlayTintColor });
|
// borderRectangle.SetData(new[] { _settings.OverlayTintColor });
|
||||||
|
|
||||||
|
// var innerRectangle = new Texture2D(GraphicsDevice, 1, 1);
|
||||||
|
// innerRectangle.SetData(new[] { Color.White });
|
||||||
|
|
||||||
// border pass
|
// border pass
|
||||||
foreach (var tile in _sessionData.Lines.Values)
|
foreach (var tile in _sessionData.Lines.Values)
|
||||||
|
@ -946,18 +1030,23 @@ namespace Sledgemapper
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var l = Math.Sqrt(Math.Pow(posX - endposX, 2) + Math.Pow(posY - endposY, 2));
|
||||||
|
if (l > 0)
|
||||||
|
{
|
||||||
|
var borderRectangle = new Texture2D(GraphicsDevice, (int)l, (int)(_state.TileSize * _state.LineWidth) + 8);
|
||||||
|
// whiteRectangle.SetData(new[] { new Color(Color.Red, 80) });
|
||||||
|
|
||||||
|
borderRectangle.SetData(Enumerable.Range(0, (int)l * ((int)(_state.TileSize * _state.LineWidth) + 8)).Select(i => _settings.OverlayTintColor).ToArray());
|
||||||
|
|
||||||
|
|
||||||
|
// _spriteBatch.Draw(whiteRectangle, new Rectangle(posX, posY, (int)l, (int)(_state.TileSize+_state.LineWidth)), null, Color.White, angleRad, new Vector2(0,0), SpriteEffects.None, 1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// _spriteBatch.DrawLine(posX, posY, endposX, endposY, _settings.OverlayTintColor, _state.TileSize + 4);
|
var angle = Math.Atan2(posY - endposY, endposX - posX);
|
||||||
|
var angleRad = -(float)angle;//MathHelper.ToRadians((float)angle);
|
||||||
|
_spriteBatch.Draw(borderRectangle, new Rectangle(posX, posY, (int)l, (int)(_state.TileSize * tile.Width) + 8), null, Color.White, angleRad, new Vector2(0, 4), SpriteEffects.None, 1);
|
||||||
|
}
|
||||||
var l = Math.Sqrt(Math.Pow(posX-endposX,2) + Math.Pow(posY-endposY,2));
|
|
||||||
|
|
||||||
var angle =Math.Atan2(posY-endposY, endposX-posX);
|
|
||||||
var angleRad = -(float)angle;//MathHelper.ToRadians((float)angle);
|
|
||||||
_spriteBatch.Draw(whiteRectangle, new Rectangle(posX, posY,(int)l , _state.TileSize+8), null,Color.White,angleRad,Vector2.Zero,SpriteEffects.None,1 );
|
|
||||||
// _spriteBatch.Draw(whiteRectangle, new Rectangle((int)posX-4, (int)posY-4, _state.TileSize+8, _state.TileSize+8),null,Color.White,0,Vector2.Zero,SpriteEffects.None, 1);
|
// _spriteBatch.Draw(whiteRectangle, new Rectangle((int)posX-4, (int)posY-4, _state.TileSize+8, _state.TileSize+8),null,Color.White,0,Vector2.Zero,SpriteEffects.None, 1);
|
||||||
// _spriteBatch.DrawRectangle(new Rectangle((int)posX-4, (int)posY-4, _state.TileSize+8, _state.TileSize+8), _settings.OverlayTintColor,1);
|
// _spriteBatch.DrawRectangle(new Rectangle((int)posX-4, (int)posY-4, _state.TileSize+8, _state.TileSize+8), _settings.OverlayTintColor,1);
|
||||||
|
|
||||||
|
@ -966,63 +1055,88 @@ _spriteBatch.Draw(whiteRectangle, new Rectangle(posX, posY,(int)l , _state.TileS
|
||||||
}
|
}
|
||||||
|
|
||||||
//inner pass
|
//inner pass
|
||||||
// foreach (var tile in _sessionData.Lines.Values)
|
foreach (var tile in _sessionData.Lines.Values)
|
||||||
// {
|
{
|
||||||
// // var content = Content.Load<Texture2D>($"tiles/{tile.ID}");
|
// var content = Content.Load<Texture2D>($"tiles/{tile.ID}");
|
||||||
|
|
||||||
// var posX = tile.Start.X * _state.TileSize;
|
var posX = tile.Start.X * _state.TileSize;
|
||||||
// var posY = tile.Start.Y * _state.TileSize;
|
var posY = tile.Start.Y * _state.TileSize;
|
||||||
|
|
||||||
// var endposX = tile.End.X * _state.TileSize;
|
var endposX = tile.End.X * _state.TileSize;
|
||||||
// var endposY = tile.End.Y * _state.TileSize;
|
var endposY = tile.End.Y * _state.TileSize;
|
||||||
|
|
||||||
// switch (tile.Start.Index)
|
switch (tile.Start.Index)
|
||||||
// {
|
{
|
||||||
// case 1:
|
case 1:
|
||||||
// break;
|
break;
|
||||||
// case 2:
|
case 2:
|
||||||
// posX += _state.TileSize / 2;
|
posX += _state.TileSize / 2;
|
||||||
// break;
|
break;
|
||||||
// case 3:
|
case 3:
|
||||||
// posY += _state.TileSize / 2;
|
posY += _state.TileSize / 2;
|
||||||
|
|
||||||
// break;
|
break;
|
||||||
// case 4:
|
case 4:
|
||||||
// posX += _state.TileSize / 2;
|
posX += _state.TileSize / 2;
|
||||||
// posY += _state.TileSize / 2;
|
posY += _state.TileSize / 2;
|
||||||
// break;
|
break;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// switch (tile.End.Index)
|
switch (tile.End.Index)
|
||||||
// {
|
{
|
||||||
// case 1:
|
case 1:
|
||||||
// break;
|
break;
|
||||||
// case 2:
|
case 2:
|
||||||
// endposX += _state.TileSize / 2;
|
endposX += _state.TileSize / 2;
|
||||||
// break;
|
break;
|
||||||
// case 3:
|
case 3:
|
||||||
// endposY += _state.TileSize / 2;
|
endposY += _state.TileSize / 2;
|
||||||
|
|
||||||
// break;
|
break;
|
||||||
// case 4:
|
case 4:
|
||||||
// endposX += _state.TileSize / 2;
|
endposX += _state.TileSize / 2;
|
||||||
// endposY += _state.TileSize / 2;
|
endposY += _state.TileSize / 2;
|
||||||
// break;
|
break;
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// var whiteRectangle = new Texture2D(GraphicsDevice, 1, 1);
|
// var whiteRectangle = new Texture2D(GraphicsDevice, 1, 1);
|
||||||
// whiteRectangle.SetData(new[] { _settings.OverlayTintColor });
|
// whiteRectangle.SetData(new[] { _settings.OverlayTintColor });
|
||||||
|
|
||||||
// _spriteBatch.DrawLine(posX, posY, endposX, endposY, Color.White, _state.TileSize);
|
// _spriteBatch.DrawLine(posX, posY, endposX, endposY, Color.White, _state.TileSize);
|
||||||
|
|
||||||
// // _spriteBatch.Draw(whiteRectangle, new Rectangle((int)posX-4, (int)posY-4, _state.TileSize+8, _state.TileSize+8),null,Color.White,0,Vector2.Zero,SpriteEffects.None, 1);
|
// _spriteBatch.Draw(whiteRectangle, new Rectangle((int)posX-4, (int)posY-4, _state.TileSize+8, _state.TileSize+8),null,Color.White,0,Vector2.Zero,SpriteEffects.None, 1);
|
||||||
// // _spriteBatch.DrawRectangle(new Rectangle((int)posX-4, (int)posY-4, _state.TileSize+8, _state.TileSize+8), _settings.OverlayTintColor,1);
|
// _spriteBatch.DrawRectangle(new Rectangle((int)posX-4, (int)posY-4, _state.TileSize+8, _state.TileSize+8), _settings.OverlayTintColor,1);
|
||||||
|
|
||||||
// // _spriteBatch.Draw(content, new Vector2(posX, posY),
|
// _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) / content.Width, SpriteEffects.None, 0);
|
// null, Color.White, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(content.Width / 2, content.Height / 2), ((float)_state.TileSize) / content.Width, SpriteEffects.None, 0);
|
||||||
// }
|
var l = Math.Sqrt(Math.Pow(posX - endposX, 2) + Math.Pow(posY - endposY, 2));
|
||||||
|
if (l > 0)
|
||||||
|
{
|
||||||
|
var innerRectangle = new Texture2D(GraphicsDevice, 1,1);
|
||||||
|
innerRectangle.SetData(new[] { Color.White });
|
||||||
|
|
||||||
|
//innerRectangle.SetData(Enumerable.Range(0, (int)l * ((int)(_state.TileSize + _state.LineWidth))).Select(i => Color.White).ToArray());
|
||||||
|
|
||||||
|
|
||||||
|
// _spriteBatch.Draw(whiteRectangle, new Rectangle(posX, posY, (int)l, (int)(_state.TileSize+_state.LineWidth)), null, Color.White, angleRad, new Vector2(0,0), SpriteEffects.None, 1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var angle = Math.Atan2(posY - endposY, endposX - posX);
|
||||||
|
var angleRad = -(float)angle;//MathHelper.ToRadians((float)angle);
|
||||||
|
_spriteBatch.Draw(innerRectangle, new Rectangle(posX, posY, (int)l, (int)(_state.TileSize * tile.Width)), null, Color.White, angleRad, new Vector2(0, 0), SpriteEffects.None, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// var l = Math.Sqrt(Math.Pow(posX - endposX, 2) + Math.Pow(posY - endposY, 2));
|
||||||
|
|
||||||
|
// var angle = Math.Atan2(posY - endposY, endposX - posX);
|
||||||
|
// var angleRad = -(float)angle;//MathHelper.ToRadians((float)angle);
|
||||||
|
// _spriteBatch.Draw(innerRectangle, new Rectangle(posX, posY, (int)l, (int)(_state.TileSize * tile.Width)), null, Color.White, angleRad, Vector2.Zero, SpriteEffects.None, 1);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawWalls()
|
private void DrawWalls()
|
||||||
|
|
|
@ -18,6 +18,7 @@ namespace Sledgemapper
|
||||||
public string CurrentWallId { get; set; }
|
public string CurrentWallId { get; set; }
|
||||||
public string CurrentOverlayId { get; set; }
|
public string CurrentOverlayId { get; set; }
|
||||||
public SnapPoint LineStart { get; internal set; }
|
public SnapPoint LineStart { get; internal set; }
|
||||||
|
public float LineWidth { get; internal set; }
|
||||||
|
|
||||||
public InsertMode InsertMode;
|
public InsertMode InsertMode;
|
||||||
|
|
||||||
|
@ -32,6 +33,7 @@ namespace Sledgemapper
|
||||||
SelectedOverlay = new() { X = 1, Y = 1 };
|
SelectedOverlay = new() { X = 1, Y = 1 };
|
||||||
SelectedNote = new() { X = 1, Y = 1 };
|
SelectedNote = new() { X = 1, Y = 1 };
|
||||||
TileSize = 30;
|
TileSize = 30;
|
||||||
|
LineWidth=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SelectClosestWall(Point mousePosition)
|
public void SelectClosestWall(Point mousePosition)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue