public static IHeuristicEstimate СreateHeuristic(HeuristicType heuristicType, TieBreakerType tieBreaker, Vector2Int startPos, float heuristicCoeff)
    {
        switch (heuristicType)
        {
        case HeuristicType.Euclidean:
            return(new EuclideanDistanceHeuristic(СreateTieBraker(tieBreaker, startPos), heuristicCoeff));

        case HeuristicType.Manhattan:
            return(new ManhattanDistanceHeuristic(СreateTieBraker(tieBreaker, startPos), heuristicCoeff));

        default:
            return(new NoneHeuristic());
        }
    }
    private static IHeuristicTieBarker СreateTieBraker(TieBreakerType tieBreaker, Vector2Int startPos)
    {
        switch (tieBreaker)
        {
        case TieBreakerType.ScaleHUpwards:
            return(new ScaleHUpwardTieBrak());

        case TieBreakerType.Directed:
            return(new DirectionalTieBraker(startPos));

        default:
            return(new NoneTieBrak());
        }
    }
 public void OnTieBrakerDropdownValueChange(int index)
 {
     breakerType = (TieBreakerType)index;
 }