class Area(object): def __init__(self, bg, sieve_function=None, general=None, reach_function=None, selfcentered=False): self.bg = bg self.general = general self.sieve = Sieve(general, sieve_function) if sieve_function else None self.reach = Sieve(general, reach_function) if reach_function else None self.selfcentered = selfcentered def clone(self, general): sieve = self.sieve.function if self.sieve else None reach = self.reach.function if self.reach else None return self.__class__(self.bg, sieve, general, reach, self.selfcentered) def get_all_tiles(self, x, y): return self.get_tiles() def get_tiles(self, x=-1, y=-1): if self.selfcentered: (x, y) = (self.general.x, self.general.y) if self.reach and self.bg.is_inside( x, y) and not self.reach.apply(self.bg.tiles[(x, y)]): return [] if not self.sieve: return self.get_all_tiles(x, y) return filter(self.sieve.apply, self.get_all_tiles(x, y))
class Area(object): def __init__(self, bg, sieve_function=None, general=None, reach_function=None, selfcentered=False): self.bg = bg self.general = general self.sieve = Sieve(general, sieve_function) if sieve_function else None self.reach = Sieve(general, reach_function) if reach_function else None self.selfcentered = selfcentered def clone(self, general): sieve = self.sieve.function if self.sieve else None reach = self.reach.function if self.reach else None return self.__class__(self.bg, sieve, general, reach, self.selfcentered) def get_all_tiles(self, x, y): return self.get_tiles() def get_tiles(self, x=-1, y=-1): if self.selfcentered: (x, y) = (self.general.x, self.general.y) if self.reach and self.bg.is_inside(x, y) and not self.reach.apply(self.bg.tiles[(x, y)]): return [] if not self.sieve: return self.get_all_tiles(x, y) return filter(self.sieve.apply, self.get_all_tiles(x, y))