Mercurial > boomslang
comparison gamelib/scenes/manual.py @ 390:d9c47a9e3d84
Working manual. (Still needs arrows.)
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 28 Aug 2010 19:40:36 +0200 |
parents | 56a05ae56574 |
children | 5cfd68beb6d3 |
comparison
equal
deleted
inserted
replaced
389:eef2fca1aa11 | 390:d9c47a9e3d84 |
---|---|
17 | 17 |
18 | 18 |
19 # classes related the computer detail | 19 # classes related the computer detail |
20 | 20 |
21 | 21 |
22 class PagePrior(Thing): | 22 class PageBase(Thing): |
23 "Displays manual pages" | |
24 | |
25 def get_page_thing(self): | |
26 return self.state.current_detail.things['manual.page'] | |
27 | |
28 def get_page(self): | |
29 return self.get_page_thing().get_data('page') | |
30 | |
31 def set_page(self, page): | |
32 self.get_page_thing().set_page(page) | |
33 | |
34 | |
35 class PagePrior(PageBase): | |
23 """Prior page in the manual""" | 36 """Prior page in the manual""" |
24 | 37 |
25 NAME = 'manual.page_prior' | 38 NAME = 'manual.page_prior' |
26 | 39 |
27 INTERACTS = { | 40 INTERACTS = { |
28 'up' : InteractNoImage(594, 82, 30, 58) | 41 'up' : InteractNoImage(0, 350, 80, 25) |
29 } | 42 } |
30 INITIAL = 'up' | 43 INITIAL = 'up' |
31 | 44 |
32 def is_interactive(self): | 45 def is_interactive(self): |
33 page = self.state.current_detail.get_data('page') | 46 return self.get_page() > 0 |
34 return page > 0 | |
35 | 47 |
36 def interact_without(self): | 48 def interact_without(self): |
37 page = self.state.current_detail.get_data('page') | 49 self.set_page(self.get_page() - 1) |
38 self.state.current_detail.set_data('page', page - 1) | |
39 | 50 |
40 | 51 |
41 class PageNext(Thing): | 52 class PageNext(PageBase): |
42 """Next page in the manual""" | 53 """Next page in the manual""" |
43 | 54 |
44 NAME = 'manual.page_next' | 55 NAME = 'manual.page_next' |
45 | 56 |
46 INTERACTS = { | 57 INTERACTS = { |
47 'down' : InteractNoImage(594, 293, 30, 58) | 58 'down' : InteractNoImage(170, 350, 80, 25) |
48 } | 59 } |
49 INITIAL = 'down' | 60 INITIAL = 'down' |
50 | 61 |
51 def is_interactive(self): | 62 def is_interactive(self): |
52 page = self.state.current_detail.get_data('page') | 63 return self.get_page() < len(self.get_page_thing().INTERACTS) - 1 |
53 return (page + 1) < self.current_detail.get_data('max page') | |
54 | 64 |
55 def interact_without(self): | 65 def interact_without(self): |
56 page = self.state.current_detail.get_data('page') | 66 self.set_page(self.get_page() + 1) |
57 self.state.current_detail.set_data('page', page + 1) | 67 |
68 | |
69 class ManualPage(Thing): | |
70 """Page in the manual""" | |
71 | |
72 NAME = 'manual.page' | |
73 | |
74 INTERACTS = { | |
75 0 : InteractImage(0, 0, 'manual_p1.png'), | |
76 1 : InteractImage(0, 0, 'manual_p2.png'), | |
77 2 : InteractImage(0, 0, 'manual_p3.png'), | |
78 3 : InteractImage(0, 0, 'manual_p4.png'), | |
79 } | |
80 INITIAL = 0 | |
81 | |
82 INITIAL_DATA = { | |
83 'page': 0, | |
84 } | |
85 | |
86 def is_interactive(self): | |
87 return False | |
88 | |
89 def set_page(self, page): | |
90 self.set_data('page', page) | |
91 self.set_interact(page) | |
58 | 92 |
59 | 93 |
60 class ManualDetail(Scene): | 94 class ManualDetail(Scene): |
61 | 95 |
62 FOLDER = 'manual' | 96 FOLDER = 'manual' |
63 NAME = 'manual_detail' | 97 NAME = 'manual_detail' |
64 | 98 |
65 SIZE = (640, 400) | 99 BACKGROUND = 'manual_detail.png' |
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 | 100 |
77 def __init__(self, state): | 101 def __init__(self, state): |
78 super(ManualDetail, self).__init__(state) | 102 super(ManualDetail, self).__init__(state) |
79 | 103 |
104 self.add_thing(ManualPage()) | |
80 self.add_thing(PagePrior()) | 105 self.add_thing(PagePrior()) |
81 self.add_thing(PageNext()) | 106 self.add_thing(PageNext()) |
82 self._scene_playlist = None | 107 self._scene_playlist = None |
83 self._pages = [get_image(self.FOLDER, x) for x in self.PAGES] | |
84 | 108 |
85 def enter(self): | 109 def enter(self): |
86 self._scene_playlist = get_current_playlist() | 110 self._scene_playlist = get_current_playlist() |
87 change_playlist(None) | 111 change_playlist(None) |
88 | 112 |
89 def leave(self): | 113 def leave(self): |
90 change_playlist(self._scene_playlist) | 114 change_playlist(self._scene_playlist) |
91 | 115 |
92 def draw_background(self, surface): | |
93 self._background = self._pages[self.get_data('page')] | |
94 super(ManualDetail, self).draw_background(surface) | |
95 | |
96 | 116 |
97 SCENES = [] | 117 SCENES = [] |
98 DETAIL_VIEWS = [ManualDetail] | 118 DETAIL_VIEWS = [ManualDetail] |