Mercurial > boomslang
diff gamelib/scenes/manual.py @ 384:56a05ae56574
Initial manual implementation.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 28 Aug 2010 19:04:30 +0200 |
parents | |
children | d9c47a9e3d84 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gamelib/scenes/manual.py Sat Aug 28 19:04:30 2010 +0200 @@ -0,0 +1,98 @@ +"""The inside of the maintenance manual.""" + +import random + +from albow.music import change_playlist, get_music, PlayList +from albow.resource import get_image + +from gamelib.cursor import CursorSprite +from gamelib.state import Scene, Item, Thing, Result +from gamelib.sound import get_current_playlist + +from gamelib.scenes.game_constants import PLAYER_ID +from gamelib.scenes.scene_widgets import (Door, InteractText, InteractNoImage, + InteractRectUnion, InteractImage, + InteractAnimated, GenericDescThing, + BaseCamera, make_jim_dialog) + + +# classes related the computer detail + + +class PagePrior(Thing): + """Prior page in the manual""" + + NAME = 'manual.page_prior' + + INTERACTS = { + 'up' : InteractNoImage(594, 82, 30, 58) + } + INITIAL = 'up' + + def is_interactive(self): + page = self.state.current_detail.get_data('page') + return page > 0 + + def interact_without(self): + page = self.state.current_detail.get_data('page') + self.state.current_detail.set_data('page', page - 1) + + +class PageNext(Thing): + """Next page in the manual""" + + NAME = 'manual.page_next' + + INTERACTS = { + 'down' : InteractNoImage(594, 293, 30, 58) + } + INITIAL = 'down' + + def is_interactive(self): + page = self.state.current_detail.get_data('page') + return (page + 1) < self.current_detail.get_data('max page') + + def interact_without(self): + page = self.state.current_detail.get_data('page') + self.state.current_detail.set_data('page', page + 1) + + +class ManualDetail(Scene): + + FOLDER = 'manual' + NAME = 'manual_detail' + + SIZE = (640, 400) + + PAGES = ['manual_p1.png', 'manual_p2.png', + 'manual_p3.png', 'manual_p4.png'] + + BACKGROUND = PAGES[0] + + INITIAL_DATA = { + 'page' : 0, + 'max page' : len(PAGES), + } + + def __init__(self, state): + super(ManualDetail, self).__init__(state) + + self.add_thing(PagePrior()) + self.add_thing(PageNext()) + self._scene_playlist = None + self._pages = [get_image(self.FOLDER, x) for x in self.PAGES] + + def enter(self): + self._scene_playlist = get_current_playlist() + change_playlist(None) + + def leave(self): + change_playlist(self._scene_playlist) + + def draw_background(self, surface): + self._background = self._pages[self.get_data('page')] + super(ManualDetail, self).draw_background(surface) + + +SCENES = [] +DETAIL_VIEWS = [ManualDetail]