# HG changeset patch # User Neil Muller # Date 1329003074 -7200 # Node ID fdc63049b08ca7eeda1df72a4373d9aac8a8d932 # Parent d1ec9e739e233c2d315b838805d45a1283b250b3 Add game_description to the widgets,, since it looks a useful thing to do diff -r d1ec9e739e23 -r fdc63049b08c gamelib/endscreen.py --- a/gamelib/endscreen.py Sun Feb 12 01:27:53 2012 +0200 +++ b/gamelib/endscreen.py Sun Feb 12 01:31:14 2012 +0200 @@ -16,7 +16,7 @@ def add_image_button(self, rect, image_name, callback): image = self.resource.get_image(image_name) - widget = ImageButtonWidget(rect, image) + widget = ImageButtonWidget(rect, self.gd, image) widget.add_callback('clicked', callback) self.container.add(widget) diff -r d1ec9e739e23 -r fdc63049b08c gamelib/menu.py --- a/gamelib/menu.py Sun Feb 12 01:27:53 2012 +0200 +++ b/gamelib/menu.py Sun Feb 12 01:31:14 2012 +0200 @@ -19,7 +19,7 @@ def add_image_button(self, rect, image_name, callback): image = self.resource.get_image(image_name) - widget = ImageButtonWidget(rect, image) + widget = ImageButtonWidget(rect, self.gd, image) widget.add_callback('clicked', callback) self.container.add(widget) diff -r d1ec9e739e23 -r fdc63049b08c pyntnclick/engine.py --- a/pyntnclick/engine.py Sun Feb 12 01:27:53 2012 +0200 +++ b/pyntnclick/engine.py Sun Feb 12 01:31:14 2012 +0200 @@ -13,9 +13,9 @@ class Engine(object): - def __init__(self, game_description): + def __init__(self, gd): self._screen = None - self._game_description = game_description + self._gd = gd self.screens = {} def set_screen(self, screen_name): @@ -40,7 +40,7 @@ if ev.type == QUIT: return elif ev.type == MUSIC_ENDED: - self._game_description.sound.music_ended() + self._gd.sound.music_ended() elif ScreenChangeEvent.matches(ev): self.set_screen(ev.screen_name) elif ScreenEvent.matches(ev): @@ -52,22 +52,23 @@ self._screen.draw(surface) flip() self._fps = 1000.0 / clock.tick( - self._game_description.constants.frame_rate) + self._gd.constants.frame_rate) class Screen(object): """A top level object for the screen being displayed""" - def __init__(self, game_description): + def __init__(self, gd): # Avoid import loop from pyntnclick.widgets.base import Container - self.game_description = game_description - self.resource = game_description.resource + self.gd = gd + self.resource = gd.resource - self.surface_size = game_description.constants.screen + self.surface_size = gd.constants.screen self.surface = None - self.container = Container(pygame.Rect((0, 0), self.surface_size)) + self.container = Container(pygame.Rect((0, 0), self.surface_size), + self.gd) self.setup() def on_enter(self): diff -r d1ec9e739e23 -r fdc63049b08c pyntnclick/gamescreen.py --- a/pyntnclick/gamescreen.py Sun Feb 12 01:27:53 2012 +0200 +++ b/pyntnclick/gamescreen.py Sun Feb 12 01:31:14 2012 +0200 @@ -26,8 +26,8 @@ sel_color = Color("yellow") sel_width = 2 - def __init__(self, screen): - Widget.__init__(self, Rect((0, 0) + screen.surface_size)) + def __init__(self, gd, screen): + Widget.__init__(self, Rect((0, 0) + screen.surface_size), gd) self.screen = screen self.game = screen.game self.state_widget = screen.state_widget @@ -64,11 +64,11 @@ class StateWidget(Widget): - def __init__(self, rect, screen): - Widget.__init__(self, rect) + def __init__(self, rect, gd, screen): + Widget.__init__(self, rect, gd) self.screen = screen self.game = screen.game - self.detail = DetailWindow(rect, screen) + self.detail = DetailWindow(rect, gd, screen) self.add_callback(MOUSEBUTTONDOWN, self.mouse_down) self.add_callback(MOUSEMOTION, self.mouse_move) @@ -135,8 +135,8 @@ class DetailWindow(Container): - def __init__(self, rect, screen): - Container.__init__(self, rect) + def __init__(self, rect, gd, screen): + Container.__init__(self, rect, gd) self.image_rect = None self.screen = screen self.game = screen.game @@ -205,7 +205,7 @@ def setup(self): self.running = False - self.create_initial_state = self.game_description.initial_state + self.create_initial_state = self.gd.initial_state def _clear_all(self): for widget in self.container.children[:]: @@ -217,11 +217,11 @@ def start_game(self): self._clear_all() - toolbar_height = self.game_description.constants.button_size + toolbar_height = self.gd.constants.button_size rect = Rect(0, 0, self.surface_size[0], self.surface_size[1] - toolbar_height) self.game = self.create_initial_state() - self.state_widget = StateWidget(rect, self) + self.state_widget = StateWidget(rect, self.gd, self) self.container.add(self.state_widget) # XXX: self.popup_menu = PopupMenu(self) @@ -230,7 +230,7 @@ # XXX: self.handbutton = HandButton(action=self.hand_pressed) - self.inventory = InventoryView(self) + self.inventory = InventoryView(self.gd, self) # XXX: self.toolbar = ToolBar([ # self.menubutton, diff -r d1ec9e739e23 -r fdc63049b08c pyntnclick/widgets/base.py --- a/pyntnclick/widgets/base.py Sun Feb 12 01:27:53 2012 +0200 +++ b/pyntnclick/widgets/base.py Sun Feb 12 01:31:14 2012 +0200 @@ -9,10 +9,12 @@ class Widget(object): - def __init__(self, rect): + def __init__(self, rect, gd): if not isinstance(rect, pygame.Rect): rect = pygame.Rect(rect, (0, 0)) self.rect = rect + self.gd = gd + self.resource = gd.resource self.modal = False self.parent = None self.disabled = False @@ -77,10 +79,10 @@ class Container(Widget): - def __init__(self, rect=None): + def __init__(self, rect, gd): if rect is None: rect = pygame.Rect(0, 0, 0, 0) - super(Container, self).__init__(rect) + super(Container, self).__init__(rect, gd) self.children = [] def event(self, ev): diff -r d1ec9e739e23 -r fdc63049b08c pyntnclick/widgets/imagebutton.py --- a/pyntnclick/widgets/imagebutton.py Sun Feb 12 01:27:53 2012 +0200 +++ b/pyntnclick/widgets/imagebutton.py Sun Feb 12 01:31:14 2012 +0200 @@ -6,10 +6,10 @@ class ImageButtonWidget(Button): """An image that is also a button. Whatever next?""" - def __init__(self, rect, image): + def __init__(self, rect, gd, image): if not isinstance(rect, pygame.Rect): rect = pygame.Rect(rect, image.get_size()) - super(ImageButtonWidget, self).__init__(rect) + super(ImageButtonWidget, self).__init__(rect, gd) self.image = image def draw(self, surface): diff -r d1ec9e739e23 -r fdc63049b08c pyntnclick/widgets/listbox.py --- a/pyntnclick/widgets/listbox.py Sun Feb 12 01:27:53 2012 +0200 +++ b/pyntnclick/widgets/listbox.py Sun Feb 12 01:31:14 2012 +0200 @@ -5,8 +5,8 @@ class ListBox(Box): - def __init__(self, rect, text, widget_list, page_length=8): - super(ListBox, self).__init__(rect) + def __init__(self, rect, gd, text, widget_list, page_length=8): + super(ListBox, self).__init__(rect, gd) self.message = TextWidget(rect, text) self.toolbar = ToolListWidget(rect, widget_list, page_length) self.prepare() diff -r d1ec9e739e23 -r fdc63049b08c pyntnclick/widgets/messagebox.py --- a/pyntnclick/widgets/messagebox.py Sun Feb 12 01:27:53 2012 +0200 +++ b/pyntnclick/widgets/messagebox.py Sun Feb 12 01:31:14 2012 +0200 @@ -5,9 +5,9 @@ class MessageBox(Box): - def __init__(self, rect, text, post_callback=None, color='red', + def __init__(self, rect, gd, text, post_callback=None, color='red', fontsize=FONT_SIZE): - super(MessageBox, self).__init__(rect) + super(MessageBox, self).__init__(rect, gd) self.text = text self.font_size = fontsize self.post_callback = post_callback diff -r d1ec9e739e23 -r fdc63049b08c pyntnclick/widgets/overlay.py --- a/pyntnclick/widgets/overlay.py Sun Feb 12 01:27:53 2012 +0200 +++ b/pyntnclick/widgets/overlay.py Sun Feb 12 01:31:14 2012 +0200 @@ -5,9 +5,9 @@ """A non-visiable clickable area, that causes an overlay to be displayed. Doesn't really understand this focus thing.""" - def __init__(self, rect, image): + def __init__(self, rect, gd, image): self.image = image - super(OverlayButton, self).__init__(rect) + super(OverlayButton, self).__init__(rect, gd) def draw(self, surface): if not self.disabled: diff -r d1ec9e739e23 -r fdc63049b08c pyntnclick/widgets/text.py --- a/pyntnclick/widgets/text.py Sun Feb 12 01:27:53 2012 +0200 +++ b/pyntnclick/widgets/text.py Sun Feb 12 01:31:14 2012 +0200 @@ -11,8 +11,8 @@ class TextWidget(Widget): fontcache = {} - def __init__(self, rect, text, fontname=None, fontsize=None, color=None): - super(TextWidget, self).__init__(rect) + def __init__(self, rect, gd, text, fontname=None, fontsize=None, color=None): + super(TextWidget, self).__init__(rect, gd) self.text = text if fontname is None: self.fontname = 'Vera.ttf' # FIXME: Hardcoded... diff -r d1ec9e739e23 -r fdc63049b08c pyntnclick/widgets/toollist.py --- a/pyntnclick/widgets/toollist.py Sun Feb 12 01:27:53 2012 +0200 +++ b/pyntnclick/widgets/toollist.py Sun Feb 12 01:31:14 2012 +0200 @@ -5,14 +5,14 @@ class ToolListWidget(Container): """List of other widgets, with some paging trickery""" - def __init__(self, rect, widget_list, page_length, + def __init__(self, rect, gd, widget_list, page_length, padding=2): widget_list.sort(key=lambda w: w.text) self.widget_list = widget_list self.page_length = page_length self.padding = padding self.page = 0 - super(ToolListWidget, self).__init__(rect) + super(ToolListWidget, self).__init__(rect, gd) self.prev_but = None self.next_but = None self.fill_page()