コード例 #1
0
ファイル: sprite.py プロジェクト: jggatc/pyj2d
 def draw(self, surface):
     """
     Draw sprite on surface.
     Returns list of Rect of sprites updated, which can be passed to display.update.
     """
     surface._blits([(sprite.image,sprite.rect) for sprite in self])
     if self._clear_active:
         rectPool.extend(self.changed_areas)
         self.changed_areas[:] = []
         for sprite in self._sprites:
             if sprite in self._sprites_drawn:
                 if self._sprites_drawn[sprite].intersects(
                                self._sprites[sprite].rect):
                     self._sprites_drawn[sprite].union_ip(
                               self._sprites[sprite].rect)
                 else:
                     self.changed_areas.append(
                         rectPool.copy(self._sprites[sprite].rect))
             else:
                 self.changed_areas.append(
                         rectPool.copy(self._sprites[sprite].rect))
         self.changed_areas.extend(list(self._sprites_drawn.values()))
         self._sprites_drawn.clear()
         for sprite in self._sprites:
             self._sprites_drawn[sprite] = rectPool.copy(
                              self._sprites[sprite].rect)
     else:
         rectPool.extend(self.changed_areas)
         self.changed_areas[:] = []
         self.changed_areas.extend([rectPool.copy(sprite.rect)
                                    for sprite in self._sprites.values()])
     return self.changed_areas
コード例 #2
0
ファイル: sprite.py プロジェクト: jggatc/pyj2d
 def draw(self, surface):
     """
     Draw sprite on surface in order of addition.
     """
     if self.sort:
         order_sprite = iter(self.sort)
     else:
         keys = self.order.keys()
         keys.sort()
         self.sort = [self._sprites[self.order[key]] for key in keys]
         order_sprite = iter(self.sort)
     surface._blits([(sprite.image,sprite.rect) for sprite in order_sprite])
     if self._clear_active:
         rectPool.extend(self.changed_areas)
         self.changed_areas[:] = []
         for sprite in self._sprites:
             if sprite in self._sprites_drawn:
                 if self._sprites_drawn[sprite].intersects(self._sprites[sprite].rect):
                     self._sprites_drawn[sprite].union_ip(self._sprites[sprite].rect)
                 else:
                     self.changed_areas.append(rectPool.copy(self._sprites[sprite].rect))
             else:
                 self.changed_areas.append(rectPool.copy(self._sprites[sprite].rect))
         self.changed_areas.extend(self._sprites_drawn.values())
         self._sprites_drawn.clear()
         for sprite in self._sprites:
             self._sprites_drawn[sprite] = rectPool.copy(self._sprites[sprite].rect)
     else:
         rectPool.extend(self.changed_areas)
         self.changed_areas[:] = []
         self.changed_areas.extend([rectPool.copy(sprite.rect) for sprite in self._sprites.itervalues()])
     return self.changed_areas
コード例 #3
0
ファイル: sprite.py プロジェクト: jggatc/pyj2d
 def draw(self, surface):
     """
     Draw sprite on surface.
     Returns list of Rect of sprites updated, which can be passed to display.update.
     """
     surface._blits([(sprite.image,sprite.rect) for sprite in self._sprites.itervalues()])
     if self._clear_active:
         rectPool.extend(self.changed_areas)
         self.changed_areas[:] = []
         for sprite in self._sprites:
             if sprite in self._sprites_drawn:
                 if self._sprites_drawn[sprite].intersects(self._sprites[sprite].rect):
                     self._sprites_drawn[sprite].union_ip(self._sprites[sprite].rect)
                 else:
                     self.changed_areas.append(rectPool.copy(self._sprites[sprite].rect))
             else:
                 self.changed_areas.append(rectPool.copy(self._sprites[sprite].rect))
         self.changed_areas.extend(self._sprites_drawn.values())
         self._sprites_drawn.clear()
         for sprite in self._sprites:
             self._sprites_drawn[sprite] = rectPool.copy(self._sprites[sprite].rect)
     else:
         rectPool.extend(self.changed_areas)
         self.changed_areas[:] = []
         self.changed_areas.extend([rectPool.copy(sprite.rect) for sprite in self._sprites.itervalues()])
     return self.changed_areas
コード例 #4
0
ファイル: sprite.py プロジェクト: jggatc/pyj2d
 def draw(self, surface):
     """
     Draw sprite on surface.
     """
     surface._blits([(sprite.image,sprite.rect) for sprite in self._sprites.itervalues()])
     if self._clear_active:
         rectPool.extend(self._sprites_drawn.values())
         self._sprites_drawn.clear()
         for sprite in self._sprites:
             self._sprites_drawn[sprite] = rectPool.copy(self._sprites[sprite].rect)
     return None
コード例 #5
0
ファイル: sprite.py プロジェクト: jggatc/pyj2d
 def draw(self, surface):
     """
     Draw sprite on surface.
     """
     surface._blits([(sprite.image,sprite.rect) for sprite in self])
     if self._clear_active:
         rectPool.extend(list(self._sprites_drawn.values()))
         self._sprites_drawn.clear()
         for sprite in self._sprites:
             self._sprites_drawn[sprite] = rectPool.copy(
                                             self._sprites[sprite].rect)
     return None
コード例 #6
0
ファイル: sprite.py プロジェクト: jggatc/pyj2d
 def __call__(self, sprite1, sprite2):
     r = sprite1.rect
     x = (r.width*self.ratio)-r.width
     y = (r.height*self.ratio)-r.height
     r1 = rectPool.get(r.x-int(x*0.5), r.y-int(y*0.5), r.width+int(x), r.height+int(y))
     r = sprite2.rect
     x = (r.width*self.ratio)-r.width
     y = (r.height*self.ratio)-r.height
     r2 = rectPool.get(r.x-int(x*0.5), r.y-int(y*0.5), r.width+int(x), r.height+int(y))
     collide = r1.intersects(r2)
     rectPool.extend((r1,r2))
     return collide