Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sprites.py
diff options
context:
space:
mode:
authorWalter Bender <walter@sugarlabs.org>2010-07-16 02:26:52 (GMT)
committer Walter Bender <walter@sugarlabs.org>2010-07-16 02:26:52 (GMT)
commit581b778f2cd394222074960148372cb0d3681389 (patch)
tree73f6af7ccb99749099f3295137c7f9b43d1b5cf7 /sprites.py
parenta593b895588d238468252b35023941738c657b45 (diff)
added intersection handling on expose event
Diffstat (limited to 'sprites.py')
-rw-r--r--sprites.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/sprites.py b/sprites.py
index 5c64b09..5577b4e 100644
--- a/sprites.py
+++ b/sprites.py
@@ -78,6 +78,7 @@ import gtk
import gobject
import pango
+
#
# A class for the list of sprites and everything they share in common
#
@@ -125,9 +126,15 @@ class Sprites:
if spr.hit(pos): return spr
return None
- def redraw_sprites(self):
+ def redraw_sprites(self, area=None):
for spr in self.list:
- spr.draw()
+ if area == None:
+ spr.draw()
+ else:
+ intersection = spr.rect.intersect(area)
+ if intersection.width > 0 or intersection.height > 0:
+ spr.draw()
+
#
# A class for the individual sprites
@@ -153,10 +160,15 @@ class Sprite:
self.images = []
self._dx = [] # image offsets
self._dy = []
+ self.rect = None
self.set_image(image)
if self._sprites is not None:
self._sprites.append_to_list(self)
+ def set_rect(self):
+ self.rect = gtk.gdk.Rectangle(self._x, self._y, self._width,
+ self._height)
+
def set_image(self, image, i=0, dx=0, dy=0):
while len(self.images) < i+1:
self.images.append(None)
@@ -178,16 +190,21 @@ class Sprite:
self._width = _w + dx
if _h + dy > self._height:
self._height = _h + dy
+ self.set_rect()
def move(self, pos):
self.inval()
self._x,self._y = int(pos[0]),int(pos[1])
+ self.rect.x = self._x
+ self.rect.y = self._y
self.inval()
def move_relative(self, pos):
self.inval()
self._x += int(pos[0])
self._y += int(pos[1])
+ self.rect.x = self._x
+ self.rect.y = self._y
self.inval()
def get_xy(self):