Mercurial > boomslang
annotate gamelib/gamescreen.py @ 121:2f672e98d488
Added border to DetailWindow.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Tue, 24 Aug 2010 17:33:37 +0200 |
parents | 48d24a48d0ce |
children | d2f84f22def0 |
rev | line source |
---|---|
41
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
40
diff
changeset
|
1 # gamescreen.py |
24
9d5de13e2ac3
Add a game screen. So far, the game content looks a *lot* like the main menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
2 # Copyright Boomslang team, 2010 (see COPYING File) |
9d5de13e2ac3
Add a game screen. So far, the game content looks a *lot* like the main menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
3 # Main menu for the game |
9d5de13e2ac3
Add a game screen. So far, the game content looks a *lot* like the main menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
4 |
83 | 5 import textwrap |
6 | |
29
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
7 from albow.controls import Button, Label, Widget |
93
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
8 from albow.layout import Row |
26
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
9 from albow.palette_view import PaletteView |
84
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
83
diff
changeset
|
10 from albow.screen import Screen |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
83
diff
changeset
|
11 from pygame import Rect, mouse |
66
05346a412b55
A sprite cursor attempt
Stefano Rivera <stefano@rivera.za.net>
parents:
65
diff
changeset
|
12 from pygame.color import Color |
05346a412b55
A sprite cursor attempt
Stefano Rivera <stefano@rivera.za.net>
parents:
65
diff
changeset
|
13 from pygame.locals import BLEND_ADD |
26
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
14 |
93
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
15 from constants import SCREEN, BUTTON_SIZE, SCENE_SIZE |
84
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
83
diff
changeset
|
16 from cursor import CursorWidget |
66
05346a412b55
A sprite cursor attempt
Stefano Rivera <stefano@rivera.za.net>
parents:
65
diff
changeset
|
17 from hand import HandButton |
70 | 18 from popupmenu import PopupMenu, PopupMenuButton |
66
05346a412b55
A sprite cursor attempt
Stefano Rivera <stefano@rivera.za.net>
parents:
65
diff
changeset
|
19 from state import initial_state, Item |
83 | 20 from widgets import BoomLabel |
21 | |
26
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
22 |
114
13d8cb1d5962
Better cursor handling using draw_all() and mouse_delta().
Jeremy Thurgood <firxen@gmail.com>
parents:
108
diff
changeset
|
23 class InventoryView(PaletteView): |
26
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
24 |
40
9fdbfbc02a60
Minor build script and inventory fixes.
Jeremy Thurgood <firxen@gmail.com>
parents:
36
diff
changeset
|
25 sel_color = Color("yellow") |
26
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
26 sel_width = 2 |
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
27 |
36
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
28 def __init__(self, state, handbutton): |
53 | 29 PaletteView.__init__(self, (BUTTON_SIZE, BUTTON_SIZE), 1, 6, scrolling=True) |
34
e5c043aeed65
Inventory and items. And stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
29
diff
changeset
|
30 self.state = state |
36
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
31 self.handbutton = handbutton |
26
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
32 |
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
33 def num_items(self): |
34
e5c043aeed65
Inventory and items. And stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
29
diff
changeset
|
34 return len(self.state.inventory) |
26
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
35 |
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
36 def draw_item(self, surface, item_no, rect): |
40
9fdbfbc02a60
Minor build script and inventory fixes.
Jeremy Thurgood <firxen@gmail.com>
parents:
36
diff
changeset
|
37 item_image = self.state.inventory[item_no].get_inventory_image() |
9fdbfbc02a60
Minor build script and inventory fixes.
Jeremy Thurgood <firxen@gmail.com>
parents:
36
diff
changeset
|
38 surface.blit(item_image, rect, None, BLEND_ADD) |
26
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
39 |
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
40 def click_item(self, item_no, event): |
73 | 41 self.state.set_tool(self.state.inventory[item_no]) |
36
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
42 self.handbutton.unselect() |
26
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
43 |
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
44 def item_is_selected(self, item_no): |
73 | 45 return self.state.tool is self.state.inventory[item_no] |
26
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
46 |
36
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
47 def unselect(self): |
73 | 48 self.state.set_tool(None) |
24
9d5de13e2ac3
Add a game screen. So far, the game content looks a *lot* like the main menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
49 |
40
9fdbfbc02a60
Minor build script and inventory fixes.
Jeremy Thurgood <firxen@gmail.com>
parents:
36
diff
changeset
|
50 |
97
60770ca02c1a
Fix message dialog mouse cursor freezing.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
51 class MessageDialog(BoomLabel, CursorWidget): |
83 | 52 |
53 def __init__(self, text, wrap_width, **kwds): | |
97
60770ca02c1a
Fix message dialog mouse cursor freezing.
Jeremy Thurgood <firxen@gmail.com>
parents:
93
diff
changeset
|
54 CursorWidget.__init__(self) |
83 | 55 paras = text.split("\n\n") |
56 text = "\n".join([textwrap.fill(para, wrap_width) for para in paras]) | |
57 Label.__init__(self, text, **kwds) | |
58 self.set_margin(5) | |
59 self.border_width = 1 | |
60 self.border_color = (0, 0, 0) | |
61 self.bg_color = (127, 127, 127) | |
62 self.fg_color = (0, 0, 0) | |
63 | |
64 def mouse_down(self, event): | |
65 self.dismiss() | |
66 | |
67 | |
114
13d8cb1d5962
Better cursor handling using draw_all() and mouse_delta().
Jeremy Thurgood <firxen@gmail.com>
parents:
108
diff
changeset
|
68 class StateWidget(Widget): |
29
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
69 |
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
70 def __init__(self, state): |
114
13d8cb1d5962
Better cursor handling using draw_all() and mouse_delta().
Jeremy Thurgood <firxen@gmail.com>
parents:
108
diff
changeset
|
71 Widget.__init__(self, Rect(0, 0, SCENE_SIZE[0], SCENE_SIZE[1])) |
29
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
72 self.state = state |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
73 self.detail = DetailWindow(state) |
29
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
74 |
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
75 def draw(self, surface): |
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
76 self.state.draw(surface) |
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
77 |
120 | 78 def _process_result(self, result): |
79 """Helper function to do the right thing with a result object""" | |
80 if result: | |
81 if result.sound: | |
82 result.sound.play() | |
83 if result.message: | |
84 # Display the message as a modal dialog | |
85 MessageDialog(result.message, 60).present() | |
86 # queue a redraw to show updated state | |
87 self.invalidate() | |
88 | |
71
99c5506de7ea
Start of interact handling.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
70
diff
changeset
|
89 def mouse_down(self, event): |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
90 if self.subwidgets: |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
91 self.remove(self.detail) |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
92 self.state.set_current_detail(None) |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
93 else: |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
94 result = self.state.interact(event.pos) |
120 | 95 self._process_result(result) |
71
99c5506de7ea
Start of interact handling.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
70
diff
changeset
|
96 |
105
65976205fc2d
Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents:
100
diff
changeset
|
97 def animate(self): |
65976205fc2d
Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents:
100
diff
changeset
|
98 if self.state.animate(): |
65976205fc2d
Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents:
100
diff
changeset
|
99 # queue a redraw |
65976205fc2d
Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents:
100
diff
changeset
|
100 self.invalidate() |
120 | 101 # We do this here so we can get enter and leave events regardless |
102 # of what happens | |
103 result = self.state.check_enter_leave() | |
104 self._process_result(result) | |
105
65976205fc2d
Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents:
100
diff
changeset
|
105 |
63
3087be3463e0
Some framework support for better message handling
Neil Muller <neil@dip.sun.ac.za>
parents:
58
diff
changeset
|
106 def mouse_move(self, event): |
93
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
107 if not self.subwidgets: |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
108 self.state.mouse_move(event.pos) |
29
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
109 |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
110 def show_detail(self, detail): |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
111 w, h = self.state.set_current_detail(detail) |
121
2f672e98d488
Added border to DetailWindow.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
112 self.detail.set_image_rect(Rect(0, 0, w, h)) |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
113 self.add_centered(self.detail) |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
114 |
66
05346a412b55
A sprite cursor attempt
Stefano Rivera <stefano@rivera.za.net>
parents:
65
diff
changeset
|
115 |
114
13d8cb1d5962
Better cursor handling using draw_all() and mouse_delta().
Jeremy Thurgood <firxen@gmail.com>
parents:
108
diff
changeset
|
116 class DetailWindow(Widget): |
93
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
117 def __init__(self, state): |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
118 Widget.__init__(self) |
93
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
119 self.state = state |
121
2f672e98d488
Added border to DetailWindow.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
120 self.border_width = 5 |
2f672e98d488
Added border to DetailWindow.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
121 self.border_color = (0, 0, 0) |
2f672e98d488
Added border to DetailWindow.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
122 |
2f672e98d488
Added border to DetailWindow.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
123 def set_image_rect(self, rect): |
2f672e98d488
Added border to DetailWindow.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
124 bw = self.border_width |
2f672e98d488
Added border to DetailWindow.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
125 self.image_rect = rect |
2f672e98d488
Added border to DetailWindow.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
126 self.image_rect.topleft = (bw, bw) |
2f672e98d488
Added border to DetailWindow.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
127 self.set_rect(rect.inflate(bw*2, bw*2)) |
74
75e1040a1121
Hacky "detail view" widget prototype.
Jeremy Thurgood <firxen@gmail.com>
parents:
73
diff
changeset
|
128 |
75e1040a1121
Hacky "detail view" widget prototype.
Jeremy Thurgood <firxen@gmail.com>
parents:
73
diff
changeset
|
129 def draw(self, surface): |
121
2f672e98d488
Added border to DetailWindow.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
130 self.state.draw_detail(surface.subsurface(self.image_rect)) |
93
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
131 |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
132 def mouse_down(self, event): |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
133 result = self.state.interact_detail(self.global_to_local(event.pos)) |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
134 if result: |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
135 if result.sound: |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
136 result.sound.play() |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
137 if result.message: |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
138 # Display the message as a modal dialog |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
139 MessageDialog(result.message, 60).present() |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
140 # queue a redraw to show updated state |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
141 self.invalidate() |
93
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
142 |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
143 def mouse_move(self, event): |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
144 self.state.mouse_move_detail(event.pos) |
93
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
145 |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
146 |
114
13d8cb1d5962
Better cursor handling using draw_all() and mouse_delta().
Jeremy Thurgood <firxen@gmail.com>
parents:
108
diff
changeset
|
147 class ToolBar(Row): |
93
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
148 def __init__(self, items): |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
149 Row.__init__(self, items, spacing=0, width=SCREEN[0]) |
74
75e1040a1121
Hacky "detail view" widget prototype.
Jeremy Thurgood <firxen@gmail.com>
parents:
73
diff
changeset
|
150 |
75e1040a1121
Hacky "detail view" widget prototype.
Jeremy Thurgood <firxen@gmail.com>
parents:
73
diff
changeset
|
151 |
114
13d8cb1d5962
Better cursor handling using draw_all() and mouse_delta().
Jeremy Thurgood <firxen@gmail.com>
parents:
108
diff
changeset
|
152 class GameScreen(Screen, CursorWidget): |
24
9d5de13e2ac3
Add a game screen. So far, the game content looks a *lot* like the main menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
153 def __init__(self, shell): |
114
13d8cb1d5962
Better cursor handling using draw_all() and mouse_delta().
Jeremy Thurgood <firxen@gmail.com>
parents:
108
diff
changeset
|
154 CursorWidget.__init__(self) |
84
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
83
diff
changeset
|
155 Screen.__init__(self, shell) |
100
b5b6cbf556e6
Make start new game start a new game. Add Resume to main menu
Neil Muller <neil@dip.sun.ac.za>
parents:
99
diff
changeset
|
156 self.running = False |
29
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
157 |
100
b5b6cbf556e6
Make start new game start a new game. Add Resume to main menu
Neil Muller <neil@dip.sun.ac.za>
parents:
99
diff
changeset
|
158 def _clear_all(self): |
b5b6cbf556e6
Make start new game start a new game. Add Resume to main menu
Neil Muller <neil@dip.sun.ac.za>
parents:
99
diff
changeset
|
159 for widget in self.subwidgets[:]: |
b5b6cbf556e6
Make start new game start a new game. Add Resume to main menu
Neil Muller <neil@dip.sun.ac.za>
parents:
99
diff
changeset
|
160 self.remove(widget) |
b5b6cbf556e6
Make start new game start a new game. Add Resume to main menu
Neil Muller <neil@dip.sun.ac.za>
parents:
99
diff
changeset
|
161 |
b5b6cbf556e6
Make start new game start a new game. Add Resume to main menu
Neil Muller <neil@dip.sun.ac.za>
parents:
99
diff
changeset
|
162 def start_game(self): |
b5b6cbf556e6
Make start new game start a new game. Add Resume to main menu
Neil Muller <neil@dip.sun.ac.za>
parents:
99
diff
changeset
|
163 self._clear_all() |
29
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
164 # TODO: Randomly plonk the state here for now |
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
165 self.state = initial_state() |
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
166 self.state_widget = StateWidget(self.state) |
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
167 self.add(self.state_widget) |
6322d92dc8f0
Add state widget for rendering state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
28
diff
changeset
|
168 |
100
b5b6cbf556e6
Make start new game start a new game. Add Resume to main menu
Neil Muller <neil@dip.sun.ac.za>
parents:
99
diff
changeset
|
169 self.popup_menu = PopupMenu(self.shell) |
70 | 170 self.menubutton = PopupMenuButton('Menu', |
171 action=self.popup_menu.show_menu) | |
74
75e1040a1121
Hacky "detail view" widget prototype.
Jeremy Thurgood <firxen@gmail.com>
parents:
73
diff
changeset
|
172 |
36
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
173 self.handbutton = HandButton(action=self.hand_pressed) |
74
75e1040a1121
Hacky "detail view" widget prototype.
Jeremy Thurgood <firxen@gmail.com>
parents:
73
diff
changeset
|
174 |
36
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
175 self.inventory = InventoryView(self.state, self.handbutton) |
93
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
176 |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
177 self.testbutton = Button('Test', lambda: self.state_widget.show_detail('cryo_detail')) |
93
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
178 |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
179 self.toolbar = ToolBar([ |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
180 self.menubutton, |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
181 self.handbutton, |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
182 self.inventory, |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
183 self.testbutton, |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
184 ]) |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
185 self.toolbar.bottomleft = self.bottomleft |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
186 self.add(self.toolbar) |
350ce4ebe122
Detail view without any functionality.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
187 |
100
b5b6cbf556e6
Make start new game start a new game. Add Resume to main menu
Neil Muller <neil@dip.sun.ac.za>
parents:
99
diff
changeset
|
188 self.running = True |
34
e5c043aeed65
Inventory and items. And stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
29
diff
changeset
|
189 |
58 | 190 # Albow uses magic method names (command + '_cmd'). Yay. |
191 # Albow's search order means they need to be defined here, not in | |
192 # PopMenu, which is annoying. | |
193 def hide_cmd(self): | |
194 # This option does nothing, but the method needs to exist for albow | |
195 return | |
196 | |
197 def main_menu_cmd(self): | |
99
367b1c9c3c6d
Restore mouse when returning to main menu
Neil Muller <neil@dip.sun.ac.za>
parents:
97
diff
changeset
|
198 mouse.set_visible(1) |
24
9d5de13e2ac3
Add a game screen. So far, the game content looks a *lot* like the main menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
199 self.shell.show_screen(self.shell.menu_screen) |
9d5de13e2ac3
Add a game screen. So far, the game content looks a *lot* like the main menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
200 |
69
d4bbb26099cc
Some debug object cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents:
66
diff
changeset
|
201 def quit_cmd(self): |
d4bbb26099cc
Some debug object cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents:
66
diff
changeset
|
202 self.shell.quit() |
d4bbb26099cc
Some debug object cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents:
66
diff
changeset
|
203 |
26
0a68d137f509
Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
24
diff
changeset
|
204 def add_item(self): |
36
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
205 self.state.add_inventory_item("triangle") |
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
206 |
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
207 def hand_pressed(self): |
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
208 self.handbutton.toggle_selected() |
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
209 self.inventory.unselect() |
31a431f795e1
Add a hand button placeholder
Neil Muller <neil@dip.sun.ac.za>
parents:
35
diff
changeset
|
210 |
105
65976205fc2d
Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents:
100
diff
changeset
|
211 def begin_frame(self): |
65976205fc2d
Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents:
100
diff
changeset
|
212 if self.running: |
65976205fc2d
Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents:
100
diff
changeset
|
213 self.state_widget.animate() |