This commit is contained in:
Michele Scandura 2020-12-23 12:22:13 +00:00
parent 6f96b2af97
commit b66612ab27

View file

@ -1,6 +1,7 @@
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
using System; using System;
using Sledgemapper.Shared.Entities; using Sledgemapper.Shared.Entities;
using System.Collections.Generic;
namespace Sledgemapper namespace Sledgemapper
{ {
@ -10,7 +11,7 @@ namespace Sledgemapper
public Tile HoveredTile { get; set; } public Tile HoveredTile { get; set; }
public Wall SelectedWall { get; set; } public Wall SelectedWall { get; set; }
public Overlay SelectedOverlay { get; set; } public Overlay SelectedOverlay { get; set; }
public SnapPoint SelectedSnapPoint {get;set;} public SnapPoint SelectedSnapPoint { get; set; }
public Note SelectedNote { get; set; } public Note SelectedNote { get; set; }
public int TileSize { get; set; } public int TileSize { get; set; }
public string CurrentTileId { get; set; } public string CurrentTileId { get; set; }
@ -67,66 +68,136 @@ namespace Sledgemapper
} }
} }
public void SelectClosestSnapPoint(Point mousePosition) public void SelectClosestSnapPoint(Point mousePosition)
{ {
SelectedSnapPoint.X = HoveredTile.X; Math.DivRem(mousePosition.X, TileSize / 2, out var remx);
SelectedSnapPoint.Y = HoveredTile.Y; Math.DivRem(mousePosition.Y, TileSize / 2, out var remy);
//var snaptileY=mousePosition.Y/(TileSize/2f);
Console.WriteLine($"{remx} _ {remy}");
var points = new List<Point>{ if (remx == 0)
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; if (remy == 0)
return; {
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;
}
} }
q1 = Math.Pow(mousePosition.X - (HoveredTile.X + 1) * TileSize, 2); else if (remx <8)
s = Math.Sqrt(q1 + q2);
if (s < TileSize / 3)
{ {
SelectedOverlay.X = SelectedOverlay.X + 1; if (remy == 0)
SelectedOverlay.Intersection = true; {
return; 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;
}
}
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;
}
} }
//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; // 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;
} }
public void SelectOverlay(Point mousePosition) public void SelectOverlay(Point mousePosition)
{ {