Mercurial > skaapsteker
changeset 13:b83f2db218e6
Draw level background with scaled offset.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 03 Apr 2011 16:33:27 +0200 |
parents | ded67a5c80c1 |
children | fb1bd081cc86 |
files | data/levels/level1.json skaapsteker/__main__.py skaapsteker/level.py |
diffstat | 3 files changed, 100 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/data/levels/level1.json Sun Apr 03 16:01:30 2011 +0200 +++ b/data/levels/level1.json Sun Apr 03 16:33:27 2011 +0200 @@ -1,8 +1,67 @@ { + "background": "dummy.png", "tileset": "dummy", "tiles": [ - "..........", - "..XX--XX..", - ".........." + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXX--------------------------------------------------------------XXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXX--------------------------------------------------------------XXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXX--------------------------------------------------------------XXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXX--------------------------------------------------------------XXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + "..........................................................................", + "..XXXX--------------------------------------------------------------XXXX..", + "..........................................................................", + "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", + ".........................................................................." ] } \ No newline at end of file
--- a/skaapsteker/__main__.py Sun Apr 03 16:01:30 2011 +0200 +++ b/skaapsteker/__main__.py Sun Apr 03 16:33:27 2011 +0200 @@ -24,11 +24,6 @@ return opts -def draw_level(leveldef, display): - import level - level.Level(leveldef).draw(display) - - def main(): """Launch Nine Tales. """ @@ -51,9 +46,6 @@ # data.filepath('icons/nine_tales24x24.png'))) pygame.display.set_caption("Nine Tales") - draw_level('level1.json', display) - pygame.display.flip() - engine = Engine() try: engine.run()
--- a/skaapsteker/level.py Sun Apr 03 16:01:30 2011 +0200 +++ b/skaapsteker/level.py Sun Apr 03 16:33:27 2011 +0200 @@ -1,5 +1,7 @@ import json +from pygame import Rect, Surface, constants + import data @@ -36,21 +38,54 @@ class Level(object): def __init__(self, leveldef): self.level_data = json.loads(data.load('levels/' + leveldef).read()) - self.tileset = TileSet(self.level_data['tileset']) + self.build_background() self.build_tiles() + 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_tiles(self): + self.tileset = TileSet(self.level_data['tileset']) self.tiles = [] for row in self.level_data['tiles']: self.tiles.append([self.tileset.get_tile(char) for char in row]) + self.level_size = (len(self.tiles[0]) * TILE_SIZE[0], len(self.tiles) * TILE_SIZE[1]) + print "level:", self.level_size def tile_pos(self, x, y): return (x * TILE_SIZE[0], y * TILE_SIZE[1]) - def draw(self, surface): + def get_backgound_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.level_size[0] - display_size[0] + lev_scalable_y = self.level_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 draw_background(self, surface, pos): + bg_pos = self.get_backgound_pos(pos, surface.get_size()) + surface.blit(self.background.subsurface(Rect(bg_pos, surface.get_size())), (0, 0)) + + + def draw_tiles(self, surface, pos): + whole_level = Surface(self.level_size, flags=constants.SRCALPHA) for y, row in enumerate(self.tiles): for x, tile in enumerate(row): - surface.blit(tile.image, self.tile_pos(x, y)) + whole_level.blit(tile.image, self.tile_pos(x, y)) + surface.blit(whole_level.subsurface(Rect(pos, surface.get_size())), (0, 0)) + + + def draw(self, surface, pos): + self.draw_background(surface, pos) + self.draw_tiles(surface, pos) + +