[pypy-svn] r62407 - pypy/trunk/pypy/lang/gameboy
cami at codespeak.net
cami at codespeak.net
Mon Mar 2 16:56:36 CET 2009
Author: cami
Date: Mon Mar 2 16:56:35 2009
New Revision: 62407
Modified:
pypy/trunk/pypy/lang/gameboy/video.py
pypy/trunk/pypy/lang/gameboy/video_sprite.py
Log:
removing superfluous methods
Modified: pypy/trunk/pypy/lang/gameboy/video.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/video.py (original)
+++ pypy/trunk/pypy/lang/gameboy/video.py Mon Mar 2 16:56:35 2009
@@ -460,44 +460,6 @@
self.draw_sprites_line()
self.draw_pixels_line()
- # -----------------------------------------------
-
- def draw_sprites_line_new(self):
- # XXX Not in use yet. Will replace the hacky version.
- sprites_on_line = self.get_drawable_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 get_drawable_sprites_on_line(self, line_y):
- sprites_on_line = self.get_active_sprites_on_line(self.line_y)
- sprites_on_line = self.sort_drawable_sprites(sprites_on_line)
- # only 10 sprites per line
- return sprites_on_line[:constants.OBJECTS_PER_LINE]
-
- def sort_drawable_sprites(self, sprites):
- """
- returns an ordered list of selected sprites.
- The order rules are as following:
- 1. order by x -coordinates, lower first
- 2. order by id, lower first
- """
- #XXX
- return sprites.sort(key=operator.itemgetter("x"))
-
- # ---------------------------------------------------------------------
def draw_sprites_line(self):
count = self.scan_sprites()
@@ -505,9 +467,9 @@
for index in range(count):
sprite = self.objects[index]
if (sprite.x + SPRITE_SIZE <= lastx):
- self.draw_object_tile(sprite)
+ sprite.draw(self)
else:
- self.draw_overlapped_object_tile(sprite)
+ sprite.draw_overlapped(self)
lastx = sprite.x
def scan_sprites(self):
@@ -516,7 +478,7 @@
for sprite in self.sprites:
#if sprite.hidden: continue
if not sprite.intersects_current_line(self): continue
- self.objects[count] = sprite #.get_stupid_intermediate_data(count, self)
+ self.objects[count] = sprite
count += 1
if count >= constants.OBJECTS_PER_LINE:
break
@@ -525,12 +487,13 @@
def sort_scan_sprite(self, count):
# TODO: optimize :)
- # sort objects from high to low priority
+ # sort objects from high to low priority using the real tile_address
for index in range(count):
highest = index
for right in range(index+1, count):
- if (self.objects[right].get_tile_address(self)) > \
- (self.objects[highest].get_tile_address(self)):
+
+ if (self.objects[right].x) > \
+ (self.objects[highest].x):
highest = right
self.objects[index], self.objects[highest] = \
self.objects[highest], self.objects[index]
@@ -553,7 +516,6 @@
def get_pattern(self, address):
return self.vram[address] + (self.vram[address + 1] << 8)
-
def draw_object_tile(self, sprite):
self.draw_object(set_tile_line_call_wrapper(self), sprite)
@@ -567,19 +529,15 @@
self.line[pos] = (self.line[pos] & 0x0101) | color | mask
def draw_object(self, caller, sprite):
- #sprite.x, \
- # sprite.get_tile_address(self), \
- # sprite.get_attributes_and_flags()
-
pattern = self.get_pattern(sprite.get_tile_address(self))
mask = 0
# priority
- if sprite.object_behind_background: #(flags & 0x80) != 0:
+ if sprite.object_behind_background:
mask |= 0x0008
# palette
- if sprite.palette_number: #(flags & 0x10) != 0:
+ if sprite.palette_number:
mask |= 0x0004
- if sprite.y_flipped: #(flags & 0x20) != 0:
+ if sprite.y_flipped:
self.draw_object_flipped(sprite.x, pattern, mask, caller)
else:
self.draw_object_normal(sprite.x, pattern, mask, caller)
Modified: pypy/trunk/pypy/lang/gameboy/video_sprite.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/video_sprite.py (original)
+++ pypy/trunk/pypy/lang/gameboy/video_sprite.py Mon Mar 2 16:56:35 2009
@@ -160,16 +160,13 @@
if self.y_flipped:
y = self.get_tile_size(video) - y
return y
-
- def get_stupid_intermediate_data(self, count, video):
- return (self.x << 24) + (count << 20) + \
- (self.get_attributes_and_flags() << 12) + \
- (self.get_tile_address(video))
- def draw(self):
- pass
+
+ def draw(self, video):
+ video.draw_object_tile(self)
- def draw_overlapped(self):
- pass
+ def draw_overlapped(self, video):
+ video.draw_overlapped_object_tile(self)
+
# -----------------------------------------------------------------------------
class PaintSprite(Sprite):
More information about the Pypy-commit
mailing list