comparison gamelib/state.py @ 526:a984cf27b527

Defer some resource loading until it's actually necessary.
author Jeremy Thurgood <firxen@gmail.com>
date Wed, 08 Sep 2010 17:33:07 +0200
parents dfb6e57feebe
children 0ce08d5e2acb
comparison
equal deleted inserted replaced
525:821b322e903b 526:a984cf27b527
131 self.current_thing = None 131 self.current_thing = None
132 if name is None: 132 if name is None:
133 self.current_detail = None 133 self.current_detail = None
134 else: 134 else:
135 self.current_detail = self.detail_views[name] 135 self.current_detail = self.detail_views[name]
136 return self.current_detail.get_detail_size() 136 return self.current_detail
137 137
138 def add_inventory_item(self, name): 138 def add_inventory_item(self, name):
139 self.inventory.append(self.items[name]) 139 self.inventory.append(self.items[name])
140 140
141 def is_in_inventory(self, name): 141 def is_in_inventory(self, name):
248 self.name = self.NAME if self.NAME is not None else self.FOLDER 248 self.name = self.NAME if self.NAME is not None else self.FOLDER
249 # link back to state object 249 # link back to state object
250 self.state = state 250 self.state = state
251 # map of thing names -> Thing objects 251 # map of thing names -> Thing objects
252 self.things = {} 252 self.things = {}
253 if self.BACKGROUND is not None: 253 self._background = None
254 self._background = get_image(self.FOLDER, self.BACKGROUND)
255 else:
256 self._background = None
257 254
258 def add_item(self, item): 255 def add_item(self, item):
259 self.state.add_item(item) 256 self.state.add_item(item)
260 257
261 def add_thing(self, thing): 258 def add_thing(self, thing):
288 w, h = description.size 285 w, h = description.size
289 sub = screen.get_root().surface.subsurface( 286 sub = screen.get_root().surface.subsurface(
290 Rect(400-w/2, 5, w, h)) 287 Rect(400-w/2, 5, w, h))
291 description.draw_all(sub) 288 description.draw_all(sub)
292 289
290 def _cache_background(self):
291 if self.BACKGROUND and not self._background:
292 self._background = get_image(self.FOLDER, self.BACKGROUND)
293
293 def draw_background(self, surface): 294 def draw_background(self, surface):
295 self._cache_background()
294 if self._background is not None: 296 if self._background is not None:
295 surface.blit(self._background, self.OFFSET, None) 297 surface.blit(self._background, self.OFFSET, None)
296 else: 298 else:
297 surface.fill((200, 200, 200)) 299 surface.fill((200, 200, 200))
298 300
348 Item may be an item in the list of items or None for the hand. 350 Item may be an item in the list of items or None for the hand.
349 """ 351 """
350 self.update_current_thing(pos) 352 self.update_current_thing(pos)
351 353
352 def get_detail_size(self): 354 def get_detail_size(self):
355 self._cache_background()
353 return self._background.get_size() 356 return self._background.get_size()
354 357
355 358
356 class InteractiveMixin(object): 359 class InteractiveMixin(object):
357 def is_interactive(self, tool=None): 360 def is_interactive(self, tool=None):
504 if name is not None: 507 if name is not None:
505 self.name = name 508 self.name = name
506 self.tool_name = name 509 self.tool_name = name
507 if self.TOOL_NAME is not None: 510 if self.TOOL_NAME is not None:
508 self.tool_name = self.TOOL_NAME 511 self.tool_name = self.TOOL_NAME
509 self.inventory_image = get_image('items', self.INVENTORY_IMAGE) 512 self.inventory_image = None
513
514 def _cache_inventory_image(self):
515 if not self.inventory_image:
516 self.inventory_image = get_image('items', self.INVENTORY_IMAGE)
510 517
511 def set_state(self, state): 518 def set_state(self, state):
512 assert self.state is None 519 assert self.state is None
513 self.state = state 520 self.state = state
514 521
515 def get_inventory_image(self): 522 def get_inventory_image(self):
523 self._cache_inventory_image()
516 return self.inventory_image 524 return self.inventory_image
517 525
518 def get_inverse_interact(self, tool): 526 def get_inverse_interact(self, tool):
519 return getattr(tool, 'interact_with_' + self.tool_name, None) 527 return getattr(tool, 'interact_with_' + self.tool_name, None)
520 528