Mercurial > rinkhals
changeset 14:d7f295c06a4b
Split gameboard screen.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 30 Aug 2009 16:42:44 +0000 |
parents | f4b4d7f44cca |
children | b69d954f2f1d |
files | gamelib/engine.py gamelib/gameboard.py |
diffstat | 2 files changed, 34 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/gamelib/engine.py Sun Aug 30 15:23:53 2009 +0000 +++ b/gamelib/engine.py Sun Aug 30 16:42:44 2009 +0000 @@ -41,6 +41,8 @@ return MainMenuState(self.game) elif events_equal(e, GO_MAIN_MENU): return MainMenuState(self.game) + elif e.type is not QUIT: + self.game.gameboard.event(e) def paint(self, screen): self.game.gameboard.paint(screen)
--- a/gamelib/gameboard.py Sun Aug 30 15:23:53 2009 +0000 +++ b/gamelib/gameboard.py Sun Aug 30 16:42:44 2009 +0000 @@ -1,6 +1,6 @@ import random -from pgu import tilevid +from pgu import gui, tilevid import data @@ -13,11 +13,38 @@ self.tv.tga_load_tiles(data.filepath('tiles.tga'), self.TILE_DIMENSIONS) self.tv.tga_load_level(data.filepath('level1.tga')) + self.tools = tilevid.Tilevid() + self.tools.tga_load_tiles(data.filepath('tiles.tga'), self.TILE_DIMENSIONS) + self.tools.resize((1, 2)) + self.populate_toolbar() + + def populate_toolbar(self): + self.tools.set((0,0), 2) + self.tools.set((0,1), 3) + + def split_screen(self, screen): + leftbar_rect = screen.get_rect() + leftbar_rect.width = self.TILE_DIMENSIONS[0] + 2 + main_rect = screen.get_rect() + main_rect.width -= leftbar_rect.width + main_rect.left += leftbar_rect.width + return screen.subsurface(leftbar_rect), screen.subsurface(main_rect) + def paint(self, screen): - self.tv.paint(screen) + leftbar, main = self.split_screen(screen) + self.tools.paint(leftbar) + self.tv.paint(main) + + def update_vid(self, vid, subsurface): + offset = subsurface.get_offset() + return [r.move(offset) for r in vid.update(subsurface)] def update(self, screen): - return self.tv.update(screen) + leftbar, main = self.split_screen(screen) + updates = [] + updates.extend(self.update_vid(self.tools, leftbar)) + updates.extend(self.update_vid(self.tv, main)) + return updates def loop(self): x = random.randint(0, self.tv.size[0]-1) @@ -25,3 +52,5 @@ tile = random.randint(0, 4) self.tv.set((x, y), tile) + def event(self, e): + pass