예제 #1
0
파일: area.py 프로젝트: Alberdi/rogueforce
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))
예제 #2
0
파일: area.py 프로젝트: Alberdi/rogueforce
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))