test small fixes
This commit is contained in:
parent
5551918d54
commit
3d45bc532c
12 changed files with 175 additions and 163 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue