progress
This commit is contained in:
parent
b66612ab27
commit
f9c6b1c02f
4 changed files with 207 additions and 185 deletions
|
@ -17,7 +17,7 @@ namespace Sledgemapper
|
|||
public string CurrentTileId { get; set; }
|
||||
public string CurrentWallId { get; set; }
|
||||
public string CurrentOverlayId { get; set; }
|
||||
public Tile LineStart { get; internal set; }
|
||||
public SnapPoint LineStart { get; internal set; }
|
||||
|
||||
public InsertMode InsertMode;
|
||||
|
||||
|
@ -68,136 +68,54 @@ namespace Sledgemapper
|
|||
}
|
||||
}
|
||||
|
||||
public bool CheckDistance(Point p1, Point p2, float d)
|
||||
{
|
||||
return ((p1.X - p2.X) * (p1.X - p2.X) + (p1.Y - p2.Y) * (p1.Y - p2.Y)) < d * d;
|
||||
}
|
||||
|
||||
|
||||
public void SelectClosestSnapPoint(Point mousePosition)
|
||||
{
|
||||
Math.DivRem(mousePosition.X, TileSize / 2, out var remx);
|
||||
Math.DivRem(mousePosition.Y, TileSize / 2, out var remy);
|
||||
//var snaptileY=mousePosition.Y/(TileSize/2f);
|
||||
Console.WriteLine($"{remx} _ {remy}");
|
||||
var distance = TileSize / 4;
|
||||
|
||||
if (remx == 0)
|
||||
if (CheckDistance(mousePosition, new Point(HoveredTile.X * TileSize, HoveredTile.Y * TileSize), distance)) //x y
|
||||
{
|
||||
if (remy == 0)
|
||||
{
|
||||
SelectedSnapPoint.X = HoveredTile.X;
|
||||
SelectedSnapPoint.Y = HoveredTile.Y;
|
||||
SelectedSnapPoint.Index = 1;
|
||||
}
|
||||
else if (remy < 8)
|
||||
{
|
||||
SelectedSnapPoint.X = HoveredTile.X;
|
||||
SelectedSnapPoint.Y = HoveredTile.Y;
|
||||
SelectedSnapPoint.Index = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
SelectedSnapPoint.X = HoveredTile.X;
|
||||
SelectedSnapPoint.Y = HoveredTile.Y+1;
|
||||
SelectedSnapPoint.Index = 1;
|
||||
}
|
||||
SelectedSnapPoint = new SnapPoint { X = HoveredTile.X, Y = HoveredTile.Y, Index = 1 };
|
||||
}
|
||||
|
||||
else if (remx <8)
|
||||
else if (CheckDistance(mousePosition, new Point(HoveredTile.X * TileSize + TileSize / 2, HoveredTile.Y * TileSize + TileSize / 2), distance)) // x+1/2, y+1/2
|
||||
{
|
||||
if (remy == 0)
|
||||
{
|
||||
SelectedSnapPoint.X = HoveredTile.X;
|
||||
SelectedSnapPoint.Y = HoveredTile.Y;
|
||||
SelectedSnapPoint.Index = 2;
|
||||
}
|
||||
else if (remy < 8)
|
||||
{
|
||||
SelectedSnapPoint.X = HoveredTile.X;
|
||||
SelectedSnapPoint.Y = HoveredTile.Y;
|
||||
SelectedSnapPoint.Index = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
SelectedSnapPoint.X = HoveredTile.X;
|
||||
SelectedSnapPoint.Y = HoveredTile.Y+1;
|
||||
SelectedSnapPoint.Index = 2;
|
||||
}
|
||||
SelectedSnapPoint = new SnapPoint { X = HoveredTile.X, Y = HoveredTile.Y, Index = 4 };
|
||||
}
|
||||
else{
|
||||
if (remy == 0)
|
||||
{
|
||||
SelectedSnapPoint.X = HoveredTile.X+1;
|
||||
SelectedSnapPoint.Y = HoveredTile.Y;
|
||||
SelectedSnapPoint.Index = 1;
|
||||
}
|
||||
else if (remy < 8)
|
||||
{
|
||||
SelectedSnapPoint.X = HoveredTile.X+1;
|
||||
SelectedSnapPoint.Y = HoveredTile.Y;
|
||||
SelectedSnapPoint.Index = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
SelectedSnapPoint.X = HoveredTile.X+1;
|
||||
SelectedSnapPoint.Y = HoveredTile.Y+1;
|
||||
SelectedSnapPoint.Index = 1;
|
||||
}
|
||||
else if (CheckDistance(mousePosition, new Point((HoveredTile.X + 1) * TileSize, HoveredTile.Y * TileSize), distance)) //x+1,y
|
||||
{
|
||||
SelectedSnapPoint = new SnapPoint { X = HoveredTile.X + 1, Y = HoveredTile.Y, Index = 1 };
|
||||
}
|
||||
|
||||
|
||||
|
||||
// SelectedSnapPoint.X = HoveredTile.X;
|
||||
// SelectedSnapPoint.Y = HoveredTile.Y;
|
||||
|
||||
// var points = new List<Point>{
|
||||
// new Point(HoveredTile.X * TileSize, HoveredTile.Y * TileSize),
|
||||
// new Point((HoveredTile.X+1) * TileSize, HoveredTile.Y * TileSize),
|
||||
// new Point((HoveredTile.X+1) * TileSize, (HoveredTile.Y+1) * TileSize),
|
||||
// new Point(HoveredTile.X * TileSize, (HoveredTile.Y+1) * TileSize),
|
||||
// new Point(HoveredTile.X * TileSize+TileSize/2, HoveredTile.Y * TileSize),
|
||||
// new Point(HoveredTile.X * TileSize + TileSize/2, HoveredTile.Y * TileSize+ TileSize/2),
|
||||
// new Point(HoveredTile.X * TileSize, HoveredTile.Y * TileSize+TileSize/2),
|
||||
// new Point(HoveredTile.X * TileSize+TileSize , HoveredTile.Y * TileSize+TileSize/2),
|
||||
// new Point(HoveredTile.X * TileSize+TileSize/2, HoveredTile.Y * TileSize+TileSize)
|
||||
// };
|
||||
|
||||
// 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)
|
||||
// {
|
||||
// SelectedOverlay.Intersection = true;
|
||||
// return;
|
||||
// }
|
||||
|
||||
// q1 = Math.Pow(mousePosition.X - (HoveredTile.X + 1) * TileSize, 2);
|
||||
// s = Math.Sqrt(q1 + q2);
|
||||
// if (s < TileSize / 3)
|
||||
// {
|
||||
// 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);
|
||||
// s = Math.Sqrt(q1 + q2);
|
||||
// if (s < TileSize / 3)
|
||||
// {
|
||||
// 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);
|
||||
// s = Math.Sqrt(q1 + q2);
|
||||
// if (s < TileSize / 3)
|
||||
// {
|
||||
// SelectedOverlay.X = SelectedOverlay.X;
|
||||
// SelectedOverlay.Y = SelectedOverlay.Y + 1;
|
||||
// SelectedOverlay.Intersection = true;
|
||||
// return;
|
||||
// }
|
||||
|
||||
// SelectedOverlay.Intersection = false;
|
||||
else if (CheckDistance(mousePosition, new Point((HoveredTile.X + 1) * TileSize, (HoveredTile.Y + 1) * TileSize), distance)) //x+1, y+1
|
||||
{
|
||||
SelectedSnapPoint = new SnapPoint { X = HoveredTile.X + 1, Y = HoveredTile.Y + 1, Index = 1 };
|
||||
}
|
||||
else if (CheckDistance(mousePosition, new Point((HoveredTile.X) * TileSize, (HoveredTile.Y + 1) * TileSize), distance))//x,y+1
|
||||
{
|
||||
SelectedSnapPoint = new SnapPoint { X = HoveredTile.X, Y = HoveredTile.Y + 1, Index = 1 };
|
||||
}
|
||||
else if (CheckDistance(mousePosition, new Point(HoveredTile.X * TileSize, HoveredTile.Y * TileSize + TileSize / 2), distance)) //x, x+1/2
|
||||
{
|
||||
SelectedSnapPoint = new SnapPoint { X = HoveredTile.X, Y = HoveredTile.Y, Index = 3 };
|
||||
}
|
||||
else if (CheckDistance(mousePosition, new Point(HoveredTile.X * TileSize + TileSize / 2, HoveredTile.Y * TileSize ), distance)) // x+1/2,y
|
||||
{
|
||||
SelectedSnapPoint = new SnapPoint { X = HoveredTile.X, Y = HoveredTile.Y, Index = 2 };
|
||||
}
|
||||
else if (CheckDistance(mousePosition, new Point(HoveredTile.X * TileSize + TileSize, HoveredTile.Y * TileSize + TileSize / 2), distance)) // x+1/2, y+1/2
|
||||
{
|
||||
SelectedSnapPoint = new SnapPoint { X = HoveredTile.X+1, Y = HoveredTile.Y, Index = 3 };
|
||||
}
|
||||
else if (CheckDistance(mousePosition, new Point(HoveredTile.X * TileSize + TileSize / 2, HoveredTile.Y * TileSize + TileSize ), distance)) // x+1/2, y+1/2
|
||||
{
|
||||
SelectedSnapPoint = new SnapPoint { X = HoveredTile.X, Y = HoveredTile.Y+1, Index = 2 };
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
public void SelectOverlay(Point mousePosition)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue