public Direction CalculateDirection(Vector2DWrapper to, Vector2DWrapper from) { Vector2DWrapper difference = new Vector2DWrapper(to.X - from.X, to.Y - from.Y); if (Math.Abs(difference.X) > 2) difference.X = -difference.X; if (Math.Abs(difference.Y) > 2) difference.Y = -difference.Y; string xDiff = difference.X == 0 ? "" : difference.X < 0 ? "W" : "E"; string yDiff = difference.Y == 0 ? "" : difference.Y < 0 ? "N" : "S"; Debug.WriteLine(yDiff + xDiff + " - " + _directions[yDiff + xDiff]); return _directions[yDiff + xDiff]; }
public int ConvertBoardPositionToInt(Vector2DWrapper vector2D) { int number = 0; for (int y = 0; y < 20; y++) { for (int x = 0; x < 20; x++) { CellWrapper cell = _game.GetBoard().GetRelativeCellAt(new Vector2DWrapper(x, y)); bool reachedEnd = x == vector2D.X && y == vector2D.Y; if (cell.HasTile()) { number++; } if (reachedEnd) { return number; } } } if (number == 0) { throw new Exception("No tiles found before this position, invalid position to relate from"); } return number; }