gui.py 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from random import randint
  2. import cocos
  3. from cocos.sprite import Sprite
  4. from sandbox.engulf.subject import Cell
  5. from synergine2.terminals import TerminalPackage
  6. from synergine2_cocos2d.gui import Gui, GridLayerMixin
  7. from synergine2_cocos2d.gui import MainLayer as BaseMainLayer
  8. class CellsLayer(GridLayerMixin, BaseMainLayer):
  9. def __init__(self, *args, **kwargs):
  10. super().__init__(*args, **kwargs)
  11. self.cells = {}
  12. def born(self, grid_position):
  13. cell = Sprite('resources/cell.png')
  14. cell.rotation = randint(0, 360)
  15. self.grid_manager.scale_sprite(cell)
  16. self.grid_manager.position_sprite(cell, grid_position)
  17. self.cells[grid_position] = cell
  18. self.add(cell)
  19. class MainLayer(GridLayerMixin, BaseMainLayer):
  20. def __init__(self, *args, **kwargs):
  21. super().__init__(*args, **kwargs)
  22. self.cells = CellsLayer(terminal=kwargs.pop('terminal'))
  23. self.add(self.cells)
  24. class Game(Gui):
  25. def __init__(self, *args, **kwargs):
  26. super().__init__(*args, **kwargs)
  27. self.main_layer = MainLayer(terminal=self.terminal)
  28. self.main_scene = cocos.scene.Scene(self.main_layer)
  29. self.positions = {}
  30. def get_main_scene(self):
  31. return self.main_scene
  32. def before_received(self, package: TerminalPackage):
  33. if package.subjects: # It's thirst package
  34. for subject in package.subjects:
  35. if isinstance(subject, Cell):
  36. self.positions[subject.id] = subject.position
  37. self.main_layer.cells.born(subject.position)