Mercurial > pyntnclick
comparison gamelib/gamescreen.py @ 204:407d23635343
Add a close button to the detail view
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Thu, 26 Aug 2010 11:31:56 +0200 |
parents | 9531a22721d1 |
children | eb101b6fb3dd |
comparison
equal
deleted
inserted
replaced
203:12c66793db8f | 204:407d23635343 |
---|---|
1 # gamescreen.py | 1 # gamescreen.py |
2 # Copyright Boomslang team, 2010 (see COPYING File) | 2 # Copyright Boomslang team, 2010 (see COPYING File) |
3 # Main menu for the game | 3 # Main menu for the game |
4 | 4 |
5 from albow.controls import Button, Widget | 5 from albow.controls import Widget |
6 from albow.layout import Row | 6 from albow.layout import Row |
7 from albow.palette_view import PaletteView | 7 from albow.palette_view import PaletteView |
8 from albow.screen import Screen | 8 from albow.screen import Screen |
9 from albow.resource import get_font | |
9 from pygame import Rect, mouse | 10 from pygame import Rect, mouse |
10 from pygame.color import Color | 11 from pygame.color import Color |
11 from pygame.locals import BLEND_ADD | 12 from pygame.locals import BLEND_ADD |
12 | 13 |
13 from constants import SCREEN, BUTTON_SIZE, SCENE_SIZE | 14 from constants import SCREEN, BUTTON_SIZE, SCENE_SIZE |
14 from cursor import CursorWidget | 15 from cursor import CursorWidget |
15 from hand import HandButton | 16 from hand import HandButton |
16 from popupmenu import PopupMenu, PopupMenuButton | 17 from popupmenu import PopupMenu, PopupMenuButton |
17 from state import initial_state, Item, handle_result | 18 from state import initial_state, Item, handle_result |
18 from widgets import MessageDialog | 19 from widgets import MessageDialog, BoomLabel |
19 | 20 |
20 | 21 |
21 class InventoryView(PaletteView): | 22 class InventoryView(PaletteView): |
22 | 23 |
23 sel_color = Color("yellow") | 24 sel_color = Color("yellow") |
66 def mouse_down(self, event): | 67 def mouse_down(self, event): |
67 if event.button != 1: # We have a right/middle click | 68 if event.button != 1: # We have a right/middle click |
68 self.state.set_tool(None) | 69 self.state.set_tool(None) |
69 return | 70 return |
70 if self.subwidgets: | 71 if self.subwidgets: |
71 self.remove(self.detail) | 72 self.clear_detail() |
72 self.state.set_current_detail(None) | |
73 self._mouse_move(event.pos) | 73 self._mouse_move(event.pos) |
74 else: | 74 else: |
75 result = self.state.interact(event.pos) | 75 result = self.state.interact(event.pos) |
76 handle_result(result, self) | 76 handle_result(result, self) |
77 | 77 |
107 w, h = self.state.set_current_detail(detail) | 107 w, h = self.state.set_current_detail(detail) |
108 self.detail.set_image_rect(Rect(0, 0, w, h)) | 108 self.detail.set_image_rect(Rect(0, 0, w, h)) |
109 self.add_centered(self.detail) | 109 self.add_centered(self.detail) |
110 self.parent.cursor_highlight(False) | 110 self.parent.cursor_highlight(False) |
111 | 111 |
112 def clear_detail(self): | |
113 """Hide the detail view""" | |
114 self.remove(self.detail) | |
115 self.state.set_current_detail(None) | |
116 | |
112 | 117 |
113 class DetailWindow(Widget): | 118 class DetailWindow(Widget): |
114 def __init__(self, screen): | 119 def __init__(self, screen): |
115 Widget.__init__(self) | 120 Widget.__init__(self) |
116 self.screen = screen | 121 self.screen = screen |
117 self.state = screen.state | 122 self.state = screen.state |
118 self.border_width = 5 | 123 self.border_width = 5 |
119 self.border_color = (0, 0, 0) | 124 self.border_color = (0, 0, 0) |
125 self.close = BoomLabel('Close', font=get_font(20, 'Vera.ttf')) | |
126 self.close.bg_color = (0, 0, 0) | |
127 self.add(self.close) | |
128 self.close.mouse_down = self.close_but | |
129 | |
130 def close_but(self, e): | |
131 self.parent.clear_detail() | |
120 | 132 |
121 def set_image_rect(self, rect): | 133 def set_image_rect(self, rect): |
122 bw = self.border_width | 134 bw = self.border_width |
123 self.image_rect = rect | 135 self.image_rect = rect |
124 self.image_rect.topleft = (bw, bw) | 136 self.image_rect.topleft = (bw, bw) |
125 self.set_rect(rect.inflate(bw*2, bw*2)) | 137 self.set_rect(rect.inflate(bw*2, bw*2)) |
138 self.close.rect.midbottom = rect.midbottom | |
126 | 139 |
127 def draw(self, surface): | 140 def draw(self, surface): |
128 self.state.draw_detail(surface.subsurface(self.image_rect), self.screen) | 141 self.state.draw_detail(surface.subsurface(self.image_rect), self.screen) |
129 | 142 |
130 def mouse_down(self, event): | 143 def mouse_down(self, event): |