Mercurial > pyntnclick
comparison gamelib/state.py @ 492:c1f4f9149349 engine_refactor
Unify Thing and Item interaction handling.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 29 Aug 2010 20:38:03 +0200 |
parents | 9f488671c02e |
children | 93ddcac0b772 |
comparison
equal
deleted
inserted
replaced
491:9f488671c02e | 492:c1f4f9149349 |
---|---|
377 | 377 |
378 class InteractiveMixin(object): | 378 class InteractiveMixin(object): |
379 def is_interactive(self): | 379 def is_interactive(self): |
380 return True | 380 return True |
381 | 381 |
382 def interact(self, item): | 382 def interact(self, tool): |
383 if not self.is_interactive(): | 383 if not self.is_interactive(): |
384 return | 384 return None |
385 if item is None: | 385 if tool is None: |
386 return self.interact_without() | 386 return self.interact_without() |
387 else: | 387 handler = getattr(self, 'interact_with_' + tool.tool_name, None) |
388 handler = getattr(self, 'interact_with_' + item.tool_name, None) | 388 inverse_handler = self.get_inverse_interact(tool) |
389 if handler is not None: | 389 if handler is not None: |
390 return handler(item) | 390 return handler(tool) |
391 else: | 391 elif inverse_handler is not None: |
392 return self.interact_default(item) | 392 return inverse_handler(self) |
393 else: | |
394 return self.interact_default(tool) | |
395 | |
396 def get_inverse_interact(self, tool): | |
397 return None | |
393 | 398 |
394 def interact_without(self): | 399 def interact_without(self): |
395 return self.interact_default(None) | 400 return self.interact_default(None) |
396 | 401 |
397 def interact_default(self, item=None): | 402 def interact_default(self, item=None): |
530 self.state = state | 535 self.state = state |
531 | 536 |
532 def get_inventory_image(self): | 537 def get_inventory_image(self): |
533 return self.inventory_image | 538 return self.inventory_image |
534 | 539 |
535 def interact(self, tool): | 540 def get_inverse_interact(self, tool): |
536 if tool is None: | 541 return getattr(tool, 'interact_with_' + self.tool_name, None) |
537 return self.interact_without(state) | |
538 handler = getattr(self, 'interact_with_' + tool.name, None) | |
539 inverse_handler = getattr(tool, 'interact_with_' + self.tool_name, None) | |
540 if handler is not None: | |
541 return handler(tool) | |
542 elif inverse_handler is not None: | |
543 return inverse_handler(self) | |
544 else: | |
545 return self.interact_default(tool) | |
546 | 542 |
547 | 543 |
548 class CloneableItem(Item): | 544 class CloneableItem(Item): |
549 _counter = 0 | 545 _counter = 0 |
550 | 546 |