comparison pyntnclick/state.py @ 759:386475464202 pyntnclick

Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 26 Jan 2013 13:00:31 +0200
parents 8ac05c038e73
children 683ff96d413e
comparison
equal deleted inserted replaced
758:f4853f817a7a 759:386475464202
48 def __init__(self): 48 def __init__(self):
49 self._game_state = {'inventories': {'main': []}} 49 self._game_state = {'inventories': {'main': []}}
50 50
51 def __getitem__(self, key): 51 def __getitem__(self, key):
52 return self._game_state[key] 52 return self._game_state[key]
53
54 def __contains__(self, key):
55 return key in self._game_state
53 56
54 def get_all_gizmo_data(self, state_key): 57 def get_all_gizmo_data(self, state_key):
55 """Get all state for a gizmo - returns a dict""" 58 """Get all state for a gizmo - returns a dict"""
56 return self[state_key] 59 return self[state_key]
57 60
441 self.folder = scene.FOLDER 444 self.folder = scene.FOLDER
442 self.game = scene.game 445 self.game = scene.game
443 self.set_state(self.game.data) 446 self.set_state(self.game.data)
444 for interact in self.interacts.itervalues(): 447 for interact in self.interacts.itervalues():
445 interact.set_thing(self) 448 interact.set_thing(self)
446 self.set_interact(self.INITIAL) 449 self.set_interact()
447 450
448 def set_interact(self, name): 451 def set_interact(self):
452 return self._set_interact(self.select_interact())
453
454 def _set_interact(self, name):
449 self.current_interact = self.interacts[name] 455 self.current_interact = self.interacts[name]
450 self.rect = self.current_interact.interact_rect 456 self.rect = self.current_interact.interact_rect
451 if self.scene: 457 if self.scene:
452 self._fix_rect() 458 self._fix_rect()
453 assert self.rect is not None, name 459 assert self.rect is not None, name
460
461 def select_interact(self):
462 return self.INITIAL
454 463
455 def contains(self, pos): 464 def contains(self, pos):
456 if hasattr(self.rect, 'collidepoint'): 465 if hasattr(self.rect, 'collidepoint'):
457 return self.rect.collidepoint(pos) 466 return self.rect.collidepoint(pos)
458 else: 467 else: