Mercurial > pyntnclick
comparison gamelib/scenes/manual.py @ 854:3577c51029f1 default tip
Remove Suspended Sentence. pyntnclick is the library we extracted from it
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sat, 21 Jun 2014 22:15:54 +0200 |
parents | f95830b58336 |
children |
comparison
equal
deleted
inserted
replaced
853:f95830b58336 | 854:3577c51029f1 |
---|---|
1 """The inside of the maintenance manual.""" | |
2 | |
3 from pyntnclick.state import Scene, Thing | |
4 from pyntnclick.scenewidgets import InteractNoImage, InteractImage | |
5 | |
6 | |
7 # classes related the computer detail | |
8 | |
9 | |
10 class PageBase(Thing): | |
11 "Displays manual pages" | |
12 | |
13 def get_page_thing(self): | |
14 return self.scene.things['manual.page'] | |
15 | |
16 def get_page(self): | |
17 return self.get_page_thing().get_data('page') | |
18 | |
19 def set_page(self, page): | |
20 self.get_page_thing().set_page(page) | |
21 | |
22 def select_interact(self): | |
23 return self.get_data('display') | |
24 | |
25 def set_display(self, display): | |
26 self.set_data('display', display) | |
27 self.set_interact() | |
28 | |
29 def is_interactive(self, tool=None): | |
30 return self.get_data('display') == 'on' | |
31 | |
32 | |
33 class PagePrior(PageBase): | |
34 """Prior page in the manual""" | |
35 | |
36 NAME = 'manual.page_prior' | |
37 | |
38 INTERACTS = { | |
39 'on': InteractImage(36, 351, 'arrow_left.png'), | |
40 'off': InteractNoImage(31, 351, 34, 23), | |
41 } | |
42 INITIAL = 'off' | |
43 | |
44 INITIAL_DATA = { | |
45 'display': 'off', | |
46 } | |
47 | |
48 def interact_without(self): | |
49 self.set_page(self.get_page() - 1) | |
50 | |
51 | |
52 class PageNext(PageBase): | |
53 """Next page in the manual""" | |
54 | |
55 NAME = 'manual.page_next' | |
56 | |
57 INTERACTS = { | |
58 'on': InteractImage(185, 351, 'arrow_right.png'), | |
59 'off': InteractNoImage(185, 351, 34, 23), | |
60 } | |
61 INITIAL = 'on' | |
62 | |
63 INITIAL_DATA = { | |
64 'display': 'on', | |
65 } | |
66 | |
67 def interact_without(self): | |
68 self.set_page(self.get_page() + 1) | |
69 | |
70 | |
71 class ManualPage(Thing): | |
72 """Page in the manual""" | |
73 | |
74 NAME = 'manual.page' | |
75 | |
76 INTERACTS = { | |
77 0: InteractImage(0, 0, 'manual_p1.png'), | |
78 1: InteractImage(0, 0, 'manual_p2.png'), | |
79 2: InteractImage(0, 0, 'manual_p3.png'), | |
80 3: InteractImage(0, 0, 'manual_p4.png'), | |
81 } | |
82 INITIAL = 0 | |
83 | |
84 INITIAL_DATA = { | |
85 'page': 0, | |
86 } | |
87 | |
88 def is_interactive(self, tool=None): | |
89 return False | |
90 | |
91 def select_interact(self): | |
92 return self.get_data('page') | |
93 | |
94 def set_page(self, page): | |
95 self.set_data('page', page) | |
96 self.set_interact() | |
97 self.scene.things['manual.page_prior'].set_display('on') | |
98 self.scene.things['manual.page_next'].set_display('on') | |
99 if page == 0: | |
100 self.scene.things['manual.page_prior'].set_display('off') | |
101 if page == len(self.INTERACTS) - 1: | |
102 self.scene.things['manual.page_next'].set_display('off') | |
103 | |
104 | |
105 class ManualDetail(Scene): | |
106 | |
107 FOLDER = 'manual' | |
108 NAME = 'manual_detail' | |
109 | |
110 BACKGROUND = 'manual_detail.png' | |
111 | |
112 def setup(self): | |
113 self.add_thing(ManualPage()) | |
114 self.add_thing(PagePrior()) | |
115 self.add_thing(PageNext()) | |
116 self._scene_playlist = None | |
117 | |
118 def enter(self): | |
119 self._scene_playlist = self.sound.get_current_playlist() | |
120 self.sound.change_playlist(None) | |
121 | |
122 def leave(self): | |
123 self.sound.change_playlist(self._scene_playlist) | |
124 | |
125 | |
126 SCENES = [] | |
127 DETAIL_VIEWS = [ManualDetail] |