set shaped areas in a grid
This commit is contained in:
parent
f5d59cd74f
commit
f83709758c
@ -1,5 +1,5 @@
|
||||
from __future__ import annotations
|
||||
from .coordinate import Coordinate, DistanceAlgorithm
|
||||
from .coordinate import Coordinate, DistanceAlgorithm, Shape
|
||||
from .types import Numeric
|
||||
from enum import Enum
|
||||
from heapq import heappop, heappush
|
||||
@ -111,6 +111,17 @@ class Grid:
|
||||
def div(self, pos: Coordinate, value: Numeric = 1) -> Numeric:
|
||||
return self.set(pos, self.get(pos) / value)
|
||||
|
||||
def add_shape(self, shape: Shape, value: Numeric = 1) -> None:
|
||||
for x in range(shape.top_left.x, shape.bottom_right.x + 1):
|
||||
for y in range(shape.top_left.y, shape.bottom_right.y + 1):
|
||||
if not shape.mode_3d:
|
||||
pos = Coordinate(x, y)
|
||||
self.set(pos, self.get(pos) + value)
|
||||
else:
|
||||
for z in range(shape.top_left.z, shape.bottom_right.z + 1):
|
||||
pos = Coordinate(x, y, z)
|
||||
self.set(pos, self.get(pos) + value)
|
||||
|
||||
def get(self, pos: Coordinate) -> Any:
|
||||
return self.__grid.get(pos, self.__default)
|
||||
|
||||
@ -158,6 +169,9 @@ class Grid:
|
||||
else:
|
||||
return list(self.__grid.keys())
|
||||
|
||||
def values(self):
|
||||
return self.__grid.values()
|
||||
|
||||
def getSum(self, includeNegative: bool = True) -> Numeric:
|
||||
if not self.mode3D:
|
||||
return sum(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user