comparison gamelib/state.py @ 193:738608e90e9c

CloneableItem tweaks and a usable laser welder. zOMG!
author Jeremy Thurgood <firxen@gmail.com>
date Wed, 25 Aug 2010 21:59:26 +0200
parents 278774b31d3c
children 9531a22721d1
comparison
equal deleted inserted replaced
192:b1f4262139e7 193:738608e90e9c
516 if not self.is_interactive(): 516 if not self.is_interactive():
517 return 517 return
518 if item is None: 518 if item is None:
519 return self.interact_without() 519 return self.interact_without()
520 else: 520 else:
521 handler = getattr(self, 'interact_with_' + item.name, None) 521 handler = getattr(self, 'interact_with_' + item.tool_name, None)
522 if handler is not None: 522 if handler is not None:
523 return handler(item) 523 return handler(item)
524 else: 524 else:
525 return self.interact_default(item) 525 return self.interact_default(item)
526 526
551 # image for inventory 551 # image for inventory
552 INVENTORY_IMAGE = None 552 INVENTORY_IMAGE = None
553 553
554 def __init__(self, name): 554 def __init__(self, name):
555 self.name = name 555 self.name = name
556 self.tool_name = name
556 self.inventory_image = get_image('items', self.INVENTORY_IMAGE) 557 self.inventory_image = get_image('items', self.INVENTORY_IMAGE)
557 # TODO: needs cursor 558 # TODO: needs cursor
558 559
559 def get_inventory_image(self): 560 def get_inventory_image(self):
560 return self.inventory_image 561 return self.inventory_image
561 562
562 def interact(self, tool, state): 563 def interact(self, tool, state):
563 handler = getattr(self, 'interact_with_' + tool.name, None) 564 handler = getattr(self, 'interact_with_' + tool.name, None)
564 inverse_handler = getattr(tool, 'interact_with_' + self.name, None) 565 inverse_handler = getattr(tool, 'interact_with_' + self.tool_name, None)
565 if handler is not None: 566 if handler is not None:
566 return handler(tool, state) 567 return handler(tool, state)
567 elif inverse_handler is not None: 568 elif inverse_handler is not None:
568 return inverse_handler(self, state) 569 return inverse_handler(self, state)
569 else: 570 else:
578 579
579 def __init__(self, name): 580 def __init__(self, name):
580 my_count = CloneableItem._counter 581 my_count = CloneableItem._counter
581 CloneableItem._counter += 1 582 CloneableItem._counter += 1
582 super(CloneableItem, self).__init__("%s.%s" % (name, my_count)) 583 super(CloneableItem, self).__init__("%s.%s" % (name, my_count))
584 self.tool_name = name