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