Mercurial > pyntnclick
annotate gamelib/scenes/manual.py @ 525:821b322e903b
Separate "scene widgets" from "game-specific widgets".
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Wed, 08 Sep 2010 14:02:11 +0200 |
parents | 8f3c82c685a4 |
children | 0ce08d5e2acb |
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 |
525
821b322e903b
Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
519
diff
changeset
|
11 from gamelib.scenewidgets import InteractNoImage, InteractImage |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
12 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
13 from gamelib.scenes.game_constants import PLAYER_ID |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
14 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
15 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
16 # classes related the computer detail |
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 |
390
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
19 class PageBase(Thing): |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
20 "Displays manual pages" |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
21 |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
22 def get_page_thing(self): |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
23 return self.state.current_detail.things['manual.page'] |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
24 |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
25 def get_page(self): |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
26 return self.get_page_thing().get_data('page') |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
27 |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
28 def set_page(self, page): |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
29 self.get_page_thing().set_page(page) |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
30 |
394 | 31 def set_display(self, display): |
32 self.set_data('display', display) | |
33 self.set_interact(display) | |
34 | |
519
8f3c82c685a4
Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents:
394
diff
changeset
|
35 def is_interactive(self, tool=None): |
394 | 36 return self.get_data('display') == 'on' |
37 | |
390
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
38 |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
39 class PagePrior(PageBase): |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
40 """Prior page in the manual""" |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
41 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
42 NAME = 'manual.page_prior' |
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 INTERACTS = { |
394 | 45 'on': InteractImage(36, 351, 'arrow_left.png'), |
46 'off': InteractNoImage(31, 351, 34, 23), | |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
47 } |
394 | 48 INITIAL = 'off' |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
49 |
394 | 50 INITIAL_DATA = { |
51 'display': 'off', | |
52 } | |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
53 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
54 def interact_without(self): |
390
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
55 self.set_page(self.get_page() - 1) |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
56 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
57 |
390
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
58 class PageNext(PageBase): |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
59 """Next page in the manual""" |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
60 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
61 NAME = 'manual.page_next' |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
62 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
63 INTERACTS = { |
394 | 64 'on': InteractImage(185, 351, 'arrow_right.png'), |
65 'off': InteractNoImage(185, 351, 34, 23), | |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
66 } |
394 | 67 INITIAL = 'on' |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
68 |
394 | 69 INITIAL_DATA = { |
70 'display': 'on', | |
71 } | |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
72 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
73 def interact_without(self): |
390
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
74 self.set_page(self.get_page() + 1) |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
75 |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
76 |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
77 class ManualPage(Thing): |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
78 """Page in the manual""" |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
79 |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
80 NAME = 'manual.page' |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
81 |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
82 INTERACTS = { |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
83 0 : InteractImage(0, 0, 'manual_p1.png'), |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
84 1 : InteractImage(0, 0, 'manual_p2.png'), |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
85 2 : InteractImage(0, 0, 'manual_p3.png'), |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
86 3 : InteractImage(0, 0, 'manual_p4.png'), |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
87 } |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
88 INITIAL = 0 |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
89 |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
90 INITIAL_DATA = { |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
91 'page': 0, |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
92 } |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
93 |
519
8f3c82c685a4
Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents:
394
diff
changeset
|
94 def is_interactive(self, tool=None): |
390
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
95 return False |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
96 |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
97 def set_page(self, page): |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
98 self.set_data('page', page) |
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
99 self.set_interact(page) |
394 | 100 self.scene.things['manual.page_prior'].set_display('on') |
101 self.scene.things['manual.page_next'].set_display('on') | |
102 if page == 0: | |
103 self.scene.things['manual.page_prior'].set_display('off') | |
104 if page == len(self.INTERACTS) - 1: | |
105 self.scene.things['manual.page_next'].set_display('off') | |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
106 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
107 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
108 class ManualDetail(Scene): |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
109 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
110 FOLDER = 'manual' |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
111 NAME = 'manual_detail' |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
112 |
390
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
113 BACKGROUND = 'manual_detail.png' |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
114 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
115 def __init__(self, state): |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
116 super(ManualDetail, self).__init__(state) |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
117 |
390
d9c47a9e3d84
Working manual. (Still needs arrows.)
Jeremy Thurgood <firxen@gmail.com>
parents:
384
diff
changeset
|
118 self.add_thing(ManualPage()) |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
119 self.add_thing(PagePrior()) |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
120 self.add_thing(PageNext()) |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
121 self._scene_playlist = None |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
122 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
123 def enter(self): |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
124 self._scene_playlist = get_current_playlist() |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
125 change_playlist(None) |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
126 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
127 def leave(self): |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
128 change_playlist(self._scene_playlist) |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
129 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
130 |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
131 SCENES = [] |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
132 DETAIL_VIEWS = [ManualDetail] |