comparison gamelib/scenes/manual.py @ 384:56a05ae56574

Initial manual implementation.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 28 Aug 2010 19:04:30 +0200
parents
children d9c47a9e3d84
comparison
equal deleted inserted replaced
383:30923e9408cd 384:56a05ae56574
1 """The inside of the maintenance manual."""
2
3 import random
4
5 from albow.music import change_playlist, get_music, PlayList
6 from albow.resource import get_image
7
8 from gamelib.cursor import CursorSprite
9 from gamelib.state import Scene, Item, Thing, Result
10 from gamelib.sound import get_current_playlist
11
12 from gamelib.scenes.game_constants import PLAYER_ID
13 from gamelib.scenes.scene_widgets import (Door, InteractText, InteractNoImage,
14 InteractRectUnion, InteractImage,
15 InteractAnimated, GenericDescThing,
16 BaseCamera, make_jim_dialog)
17
18
19 # classes related the computer detail
20
21
22 class PagePrior(Thing):
23 """Prior page in the manual"""
24
25 NAME = 'manual.page_prior'
26
27 INTERACTS = {
28 'up' : InteractNoImage(594, 82, 30, 58)
29 }
30 INITIAL = 'up'
31
32 def is_interactive(self):
33 page = self.state.current_detail.get_data('page')
34 return page > 0
35
36 def interact_without(self):
37 page = self.state.current_detail.get_data('page')
38 self.state.current_detail.set_data('page', page - 1)
39
40
41 class PageNext(Thing):
42 """Next page in the manual"""
43
44 NAME = 'manual.page_next'
45
46 INTERACTS = {
47 'down' : InteractNoImage(594, 293, 30, 58)
48 }
49 INITIAL = 'down'
50
51 def is_interactive(self):
52 page = self.state.current_detail.get_data('page')
53 return (page + 1) < self.current_detail.get_data('max page')
54
55 def interact_without(self):
56 page = self.state.current_detail.get_data('page')
57 self.state.current_detail.set_data('page', page + 1)
58
59
60 class ManualDetail(Scene):
61
62 FOLDER = 'manual'
63 NAME = 'manual_detail'
64
65 SIZE = (640, 400)
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
77 def __init__(self, state):
78 super(ManualDetail, self).__init__(state)
79
80 self.add_thing(PagePrior())
81 self.add_thing(PageNext())
82 self._scene_playlist = None
83 self._pages = [get_image(self.FOLDER, x) for x in self.PAGES]
84
85 def enter(self):
86 self._scene_playlist = get_current_playlist()
87 change_playlist(None)
88
89 def leave(self):
90 change_playlist(self._scene_playlist)
91
92 def draw_background(self, surface):
93 self._background = self._pages[self.get_data('page')]
94 super(ManualDetail, self).draw_background(surface)
95
96
97 SCENES = []
98 DETAIL_VIEWS = [ManualDetail]