Mercurial > skaapsteker
changeset 52:a18bf35519f3
Multiple layered backgrounds.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 03 Apr 2011 21:25:43 +0200 |
parents | 8efb35009ba0 |
children | 01cfef3a5acf |
files | data/levels/level1.json data/levels/level2.json data/levels/level3.json data/levels/level4.json skaapsteker/level.py |
diffstat | 5 files changed, 33 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/data/levels/level1.json Sun Apr 03 21:25:34 2011 +0200 +++ b/data/levels/level1.json Sun Apr 03 21:25:43 2011 +0200 @@ -1,5 +1,8 @@ { - "background": "dummy.png", + "backgrounds": [ + "dummy.png", + "dummy-fg.png" + ], "tileset": "dummy", "tiles": [ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
--- a/data/levels/level2.json Sun Apr 03 21:25:34 2011 +0200 +++ b/data/levels/level2.json Sun Apr 03 21:25:43 2011 +0200 @@ -1,5 +1,8 @@ { - "background": "dummy.png", + "backgrounds": [ + "dummy.png", + "dummy-fg.png" + ], "tileset": "dummy", "tiles": [ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", @@ -27,4 +30,4 @@ ], "enemies": [], "sprites": [] -} \ No newline at end of file +}
--- a/data/levels/level3.json Sun Apr 03 21:25:34 2011 +0200 +++ b/data/levels/level3.json Sun Apr 03 21:25:43 2011 +0200 @@ -1,5 +1,8 @@ { - "background": "dummy.png", + "backgrounds": [ + "dummy.png", + "dummy-fg.png" + ], "tileset": "dummy", "tiles": [ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", @@ -15,4 +18,4 @@ ], "enemies": [], "sprites": [] -} \ No newline at end of file +}
--- a/data/levels/level4.json Sun Apr 03 21:25:34 2011 +0200 +++ b/data/levels/level4.json Sun Apr 03 21:25:43 2011 +0200 @@ -1,5 +1,8 @@ { - "background": "dummy.png", + "backgrounds": [ + "dummy.png", + "dummy-fg.png" + ], "tileset": "dummy", "tiles": [ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", @@ -18,4 +21,4 @@ ], "enemies": [], "sprites": [] -} \ No newline at end of file +}
--- a/skaapsteker/level.py Sun Apr 03 21:25:34 2011 +0200 +++ b/skaapsteker/level.py Sun Apr 03 21:25:43 2011 +0200 @@ -34,15 +34,15 @@ def __init__(self, leveldef): self.level_data = json.loads(data.load('levels/' + leveldef + '.json').read()) self.sprites = Group() - self.build_background() + self.build_backgrounds() self.build_tiles() self.setup_enemies() - def build_background(self): - self.background = data.load_image('backgrounds/' + self.level_data['background']) - self.background_size = self.background.get_size() - print "background:", self.background_size + def build_backgrounds(self): + self.backgrounds = [] + for background in self.level_data['backgrounds']: + self.backgrounds.append(data.load_image('backgrounds/' + background)) def build_tiles(self): @@ -79,20 +79,19 @@ return Surface(self.pixel_size, flags=SRCALPHA) - def get_background_pos(self, pos, display_size): - bg_scalable_x = self.background_size[0] - display_size[0] - bg_scalable_y = self.background_size[1] - display_size[1] - lev_scalable_x = self.pixel_size[0] - display_size[0] - lev_scalable_y = self.pixel_size[1] - display_size[1] - scaled_x = (pos[0] * bg_scalable_x) / lev_scalable_x - scaled_y = (pos[1] * bg_scalable_y) / lev_scalable_y - return (scaled_x, scaled_y) + def get_background_pos(self, background, viewport): + vp_x, vp_y = viewport.size + bg_scalable = background.get_rect().inflate(-vp_x, -vp_y).size + lev_scalable = Rect((0, 0), self.pixel_size).inflate(-vp_x, -vp_y).size + return ((viewport.left * bg_scalable[0]) / lev_scalable[0], + (viewport.top * bg_scalable[1]) / lev_scalable[1]) def draw_background(self, surface): clip_rect = surface.get_clip() - bg_pos = self.get_background_pos(clip_rect.topleft, clip_rect.size) - surface.blit(self.background, clip_rect.topleft, Rect(bg_pos, clip_rect.size)) + for background in self.backgrounds: + bg_pos = self.get_background_pos(background, clip_rect) + surface.blit(background, clip_rect.topleft, Rect(bg_pos, clip_rect.size)) def draw_tiles(self, surface):