Ant.py 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from intelligine.synergy.object.Bug import Bug
  2. from intelligine.cst import CARRYING, TRANSPORTER, ATTACKER, \
  3. COL_TRANSPORTER_NOT_CARRYING, COL_FIGHTER
  4. class Ant(Bug):
  5. def __init__(self, collection, context):
  6. super().__init__(collection, context)
  7. context.metas.states.add_list(self.get_id(), [TRANSPORTER, ATTACKER])
  8. context.metas.collections.add_list(self.get_id(), [COL_TRANSPORTER_NOT_CARRYING, COL_FIGHTER])
  9. self._carried = []
  10. def put_carry(self, obj, position=None):
  11. if position is None:
  12. position = self._get_position()
  13. self._carried.remove(obj)
  14. obj.set_position(position)
  15. self._context.metas.states.remove(self.get_id(), CARRYING)
  16. def get_carried(self):
  17. # TODO: cas ou plusieurs ?
  18. return self._carried[0]
  19. def carry(self, obj):
  20. self._carried.append(obj)
  21. self._context.metas.states.add(self.get_id(), CARRYING)
  22. def is_carrying(self):
  23. if len(self._carried):
  24. return True
  25. return False
  26. # TODO: Est-ce ici que doit etre ce code ?
  27. def set_position(self, position):
  28. super().set_position(position)
  29. if self.is_carrying():
  30. for obj_carried in self._carried:
  31. obj_carried.set_position(position)