# HG changeset patch # User Jeremy Thurgood # Date 1283959987 -7200 # Node ID a984cf27b527da947ce17a338acf63ee2b5c25bc # Parent 821b322e903b370545fab56d207b4296b0a6176b Defer some resource loading until it's actually necessary. diff -r 821b322e903b -r a984cf27b527 gamelib/gamescreen.py --- a/gamelib/gamescreen.py Wed Sep 08 14:02:11 2010 +0200 +++ b/gamelib/gamescreen.py Wed Sep 08 17:33:07 2010 +0200 @@ -116,8 +116,8 @@ def show_detail(self, detail): self.clear_detail() - w, h = self.state.set_current_detail(detail) - self.detail.set_image_rect(Rect(0, 0, w, h)) + detail_obj = self.state.set_current_detail(detail) + self.detail.set_image_rect(Rect((0, 0), detail_obj.get_detail_size())) self.add_centered(self.detail) self.state.do_enter_detail() diff -r 821b322e903b -r a984cf27b527 gamelib/state.py --- a/gamelib/state.py Wed Sep 08 14:02:11 2010 +0200 +++ b/gamelib/state.py Wed Sep 08 17:33:07 2010 +0200 @@ -133,7 +133,7 @@ self.current_detail = None else: self.current_detail = self.detail_views[name] - return self.current_detail.get_detail_size() + return self.current_detail def add_inventory_item(self, name): self.inventory.append(self.items[name]) @@ -250,10 +250,7 @@ self.state = state # map of thing names -> Thing objects self.things = {} - if self.BACKGROUND is not None: - self._background = get_image(self.FOLDER, self.BACKGROUND) - else: - self._background = None + self._background = None def add_item(self, item): self.state.add_item(item) @@ -290,7 +287,12 @@ Rect(400-w/2, 5, w, h)) description.draw_all(sub) + def _cache_background(self): + if self.BACKGROUND and not self._background: + self._background = get_image(self.FOLDER, self.BACKGROUND) + def draw_background(self, surface): + self._cache_background() if self._background is not None: surface.blit(self._background, self.OFFSET, None) else: @@ -350,6 +352,7 @@ self.update_current_thing(pos) def get_detail_size(self): + self._cache_background() return self._background.get_size() @@ -506,13 +509,18 @@ self.tool_name = name if self.TOOL_NAME is not None: self.tool_name = self.TOOL_NAME - self.inventory_image = get_image('items', self.INVENTORY_IMAGE) + self.inventory_image = None + + def _cache_inventory_image(self): + if not self.inventory_image: + self.inventory_image = get_image('items', self.INVENTORY_IMAGE) def set_state(self, state): assert self.state is None self.state = state def get_inventory_image(self): + self._cache_inventory_image() return self.inventory_image def get_inverse_interact(self, tool):