Mercurial > boomslang
comparison 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 |
comparison
equal
deleted
inserted
replaced
383:30923e9408cd | 384:56a05ae56574 |
---|---|
1 """The inside of the maintenance manual.""" | |
2 | |
3 import random | |
4 | |
5 from albow.music import change_playlist, get_music, PlayList | |
6 from albow.resource import get_image | |
7 | |
8 from gamelib.cursor import CursorSprite | |
9 from gamelib.state import Scene, Item, Thing, Result | |
10 from gamelib.sound import get_current_playlist | |
11 | |
12 from gamelib.scenes.game_constants import PLAYER_ID | |
13 from gamelib.scenes.scene_widgets import (Door, InteractText, InteractNoImage, | |
14 InteractRectUnion, InteractImage, | |
15 InteractAnimated, GenericDescThing, | |
16 BaseCamera, make_jim_dialog) | |
17 | |
18 | |
19 # classes related the computer detail | |
20 | |
21 | |
22 class PagePrior(Thing): | |
23 """Prior page in the manual""" | |
24 | |
25 NAME = 'manual.page_prior' | |
26 | |
27 INTERACTS = { | |
28 'up' : InteractNoImage(594, 82, 30, 58) | |
29 } | |
30 INITIAL = 'up' | |
31 | |
32 def is_interactive(self): | |
33 page = self.state.current_detail.get_data('page') | |
34 return page > 0 | |
35 | |
36 def interact_without(self): | |
37 page = self.state.current_detail.get_data('page') | |
38 self.state.current_detail.set_data('page', page - 1) | |
39 | |
40 | |
41 class PageNext(Thing): | |
42 """Next page in the manual""" | |
43 | |
44 NAME = 'manual.page_next' | |
45 | |
46 INTERACTS = { | |
47 'down' : InteractNoImage(594, 293, 30, 58) | |
48 } | |
49 INITIAL = 'down' | |
50 | |
51 def is_interactive(self): | |
52 page = self.state.current_detail.get_data('page') | |
53 return (page + 1) < self.current_detail.get_data('max page') | |
54 | |
55 def interact_without(self): | |
56 page = self.state.current_detail.get_data('page') | |
57 self.state.current_detail.set_data('page', page + 1) | |
58 | |
59 | |
60 class ManualDetail(Scene): | |
61 | |
62 FOLDER = 'manual' | |
63 NAME = 'manual_detail' | |
64 | |
65 SIZE = (640, 400) | |
66 | |
67 PAGES = ['manual_p1.png', 'manual_p2.png', | |
68 'manual_p3.png', 'manual_p4.png'] | |
69 | |
70 BACKGROUND = PAGES[0] | |
71 | |
72 INITIAL_DATA = { | |
73 'page' : 0, | |
74 'max page' : len(PAGES), | |
75 } | |
76 | |
77 def __init__(self, state): | |
78 super(ManualDetail, self).__init__(state) | |
79 | |
80 self.add_thing(PagePrior()) | |
81 self.add_thing(PageNext()) | |
82 self._scene_playlist = None | |
83 self._pages = [get_image(self.FOLDER, x) for x in self.PAGES] | |
84 | |
85 def enter(self): | |
86 self._scene_playlist = get_current_playlist() | |
87 change_playlist(None) | |
88 | |
89 def leave(self): | |
90 change_playlist(self._scene_playlist) | |
91 | |
92 def draw_background(self, surface): | |
93 self._background = self._pages[self.get_data('page')] | |
94 super(ManualDetail, self).draw_background(surface) | |
95 | |
96 | |
97 SCENES = [] | |
98 DETAIL_VIEWS = [ManualDetail] |