comparison gamelib/state.py @ 490:2e784f978d1a engine_refactor

Add state to Items.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 29 Aug 2010 15:15:59 +0200
parents 463a8d60c73e
children 9f488671c02e
comparison
equal deleted inserted replaced
489:463a8d60c73e 490:2e784f978d1a
110 def add_detail_view(self, detail_view): 110 def add_detail_view(self, detail_view):
111 self.detail_views[detail_view.name] = detail_view 111 self.detail_views[detail_view.name] = detail_view
112 112
113 def add_item(self, item): 113 def add_item(self, item):
114 self.items[item.name] = item 114 self.items[item.name] = item
115 item.set_state(self)
115 116
116 def load_scenes(self, modname): 117 def load_scenes(self, modname):
117 mod = __import__("gamelib.scenes.%s" % (modname,), fromlist=[modname]) 118 mod = __import__("gamelib.scenes.%s" % (modname,), fromlist=[modname])
118 for scene_cls in mod.SCENES: 119 for scene_cls in mod.SCENES:
119 self.add_scene(scene_cls(self)) 120 self.add_scene(scene_cls(self))
503 """Base class for inventory items.""" 504 """Base class for inventory items."""
504 505
505 # image for inventory 506 # image for inventory
506 INVENTORY_IMAGE = None 507 INVENTORY_IMAGE = None
507 508
509 # name of item
510 NAME = None
511
508 # name for interactions (i.e. def interact_with_<TOOL_NAME>) 512 # name for interactions (i.e. def interact_with_<TOOL_NAME>)
509 TOOL_NAME = None 513 TOOL_NAME = None
510 514
511 # name for interactions (i.e. def interact_with_<TOOL_NAME>)
512 NAME = None
513
514 # set to instance of CursorSprite 515 # set to instance of CursorSprite
515 CURSOR = None 516 CURSOR = None
516 517
517 def __init__(self, name=None): 518 def __init__(self, name=None):
519 self.state = None
518 self.name = self.NAME 520 self.name = self.NAME
519 if name is not None: 521 if name is not None:
520 self.name = name 522 self.name = name
521 self.tool_name = name 523 self.tool_name = name
522 if self.TOOL_NAME is not None: 524 if self.TOOL_NAME is not None:
523 self.tool_name = self.TOOL_NAME 525 self.tool_name = self.TOOL_NAME
524 self.inventory_image = get_image('items', self.INVENTORY_IMAGE) 526 self.inventory_image = get_image('items', self.INVENTORY_IMAGE)
527
528 def set_state(self, state):
529 assert self.state is None
530 self.state = state
525 531
526 def get_inventory_image(self): 532 def get_inventory_image(self):
527 return self.inventory_image 533 return self.inventory_image
528 534
529 def interact(self, tool, state): 535 def interact(self, tool, state):
549 def _get_new_id(cls): 555 def _get_new_id(cls):
550 cls._counter += 1 556 cls._counter += 1
551 return cls._counter - 1 557 return cls._counter - 1
552 558
553 def __init__(self, name=None): 559 def __init__(self, name=None):
560 super(CloneableItem, self).__init__(name)
554 my_count = self._get_new_id() 561 my_count = self._get_new_id()
555 super(CloneableItem, self).__init__("%s.%s" % (name, my_count)) 562 self.name = "%s.%s" % (self.name, my_count)
556 self.tool_name = name
557 if self.TOOL_NAME is not None:
558 self.tool_name = self.TOOL_NAME