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]