Mercurial > pyntnclick
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 |