[pypy-svn] r58158 - pypy/dist/pypy/lang/gameboy
cami at codespeak.net
cami at codespeak.net
Sun Sep 14 19:18:01 CEST 2008
Author: cami
Date: Sun Sep 14 19:17:56 2008
New Revision: 58158
Modified:
pypy/dist/pypy/lang/gameboy/video.py
Log:
added templates for the new sprite handling
Modified: pypy/dist/pypy/lang/gameboy/video.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/video.py (original)
+++ pypy/dist/pypy/lang/gameboy/video.py Sun Sep 14 19:17:56 2008
@@ -400,7 +400,8 @@
class Sprite(object):
- def __init__(self):
+ def __init__(self, video):
+ self.video = video
self.big_size = False
self.reset()
@@ -496,9 +497,18 @@
else:
return 8
- def overlaps(self, sprite):
+ def overlaps_on_line(self, sprite, line):
+ return False
+
+ def intersects_line(self, line):
return False
+ def draw(self):
+ pass
+
+ def draw_overlapped(self):
+ pass
+
# -----------------------------------------------------------------------------
@@ -628,7 +638,7 @@
def create_sprites(self):
self.sprites = [None] * 40
for i in range(40):
- self.sprites[i] = Sprite()
+ self.sprites[i] = Sprite(self)
def update_all_sprites(self):
for i in range(40):
@@ -649,7 +659,8 @@
attribute[address % 4] = data
self.sprites[sprite_id].set_data(attribute[0], attribute[1],
attribute[2], attribute[3])
-
+
+
def reset(self):
self.control.reset()
self.status.reset()
@@ -1003,6 +1014,26 @@
self.draw_sprites_line()
self.draw_pixels_line()
+ def draw_sprites_line_new(self):
+ sprites_on_line = self.get_active_sprites_on_line(self.line_y)
+
+ last_sprite = sprites_on_line[0]
+ last_sprite.draw()
+
+ for sprite in sprites_on_line[1:]:
+ if sprite.overlaps_on_line(last_sprite, self.line_y):
+ sprite.draw_overlapped()
+ else:
+ sprite.draw()
+
+ def get_active_sprites_on_line(self, line_y):
+ found = []
+ for i in range(len(self.sprites)):
+ if self.sprites[i].intersects_line(line_y) and \
+ self.sprites[i].enabled:
+ found.append(self.sprites[i])
+ return found
+
def draw_sprites_line(self):
count = self.scan_sprites()
lastx = 176
More information about the Pypy-commit
mailing list