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]