diff --git a/MapAnalyzer/MapData.py b/MapAnalyzer/MapData.py index 64df644e..7401e808 100644 --- a/MapAnalyzer/MapData.py +++ b/MapAnalyzer/MapData.py @@ -94,8 +94,8 @@ def get_climber_grid(self, default_weight: int = 1) -> ndarray: def get_air_vs_ground_grid(self, default_weight: int = 100): return self.pather.get_air_vs_ground_grid(default_weight=default_weight) - def get_clean_air_grid(self): - return self.pather.get_clean_air_grid() + def get_clean_air_grid(self, default_weight: int = 1): + return self.pather.get_clean_air_grid(default_weight=default_weight) def pathfind(self, start: Tuple[int, int], goal: Tuple[int, int], grid: Optional[ndarray] = None, allow_diagonal: bool = False, sensitivity: int = 1) -> ndarray: diff --git a/MapAnalyzer/Pather.py b/MapAnalyzer/Pather.py index f02c35e7..7660105e 100644 --- a/MapAnalyzer/Pather.py +++ b/MapAnalyzer/Pather.py @@ -50,8 +50,13 @@ def get_climber_grid(self, default_weight: int = 1) -> ndarray: return grid @lru_cache() - def get_clean_air_grid(self): - return np.ones(shape=self.map_data.path_arr.shape).astype(np.float32).T + def get_clean_air_grid(self, default_weight: int = 1): + clean_air_grid = np.ones(shape=self.map_data.path_arr.shape).astype(np.float32).T + if default_weight == 1: + return clean_air_grid + else: + return np.where(clean_air_grid == 1, default_weight, 0) + @lru_cache() def get_air_vs_ground_grid(self, default_weight: int): diff --git a/MapAnalyzer/Region.py b/MapAnalyzer/Region.py index b354ad34..2e22182d 100644 --- a/MapAnalyzer/Region.py +++ b/MapAnalyzer/Region.py @@ -1,10 +1,13 @@ from functools import lru_cache -from typing import List, Union +from typing import List, TYPE_CHECKING, Union import numpy as np from sc2.position import Point2 -from . import Polygon +from MapAnalyzer.Polygon import Polygon + +if TYPE_CHECKING: + from MapAnalyzer import MapData class Region: @@ -14,7 +17,7 @@ class Region: def __init__( self, - map_data: "MapData", + map_data: 'MapData', array: np.ndarray, label: int, map_expansions: List[Point2], @@ -23,7 +26,7 @@ def __init__( self.array = array self.label = label - self.polygon = Polygon.Polygon(map_data=self.map_data, array=self.array) # for constructor + self.polygon = Polygon(map_data=self.map_data, array=self.array) # for constructor self.polygon.areas.append(self) self.polygon.is_region = True self.bases = [ @@ -63,7 +66,6 @@ def plot_perimeter(self, self_only: bool = True) -> None: plt.title(f"Region {self.label}") if self_only: # pragma: no cover plt.grid() - plt.show() def _plot_corners(self) -> None: import matplotlib.pyplot as plt