diff --git a/grid.py b/grid.py index e3f9c89..cac3a98 100644 --- a/grid.py +++ b/grid.py @@ -48,7 +48,7 @@ class Grid: self.__grid[pos] = not self.__default def set(self, pos: Coordinate, value: Any = True): - if value in OFF_STATES and pos in self.__grid: + if (value == self.__default or value in OFF_STATES) and pos in self.__grid: del self.__grid[pos] elif value not in OFF_STATES: self.__trackBoundaries(pos) @@ -90,18 +90,10 @@ class Grid: return self.minX <= pos.x <= self.maxX and self.minY <= pos.y <= self.maxY def add(self, pos: Coordinate, value: Union[float, int] = 1): - if pos in self.__grid: - self.__grid[pos] += value - else: - self.__trackBoundaries(pos) - self.__grid[pos] = self.__default + value + self.set(pos, self.get(pos) + value) def sub(self, pos: Coordinate, value: Union[float, int] = 1): - if pos in self.__grid: - self.__grid[pos] -= value - else: - self.__trackBoundaries(pos) - self.__grid[pos] = self.__default - value + self.set(pos, self.get(pos) - value) def getActiveCells(self): return [i for i in self.__grid.keys()]