gui.py 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from random import randint
  2. import cocos
  3. from cocos.sprite import Sprite
  4. from sandbox.engulf.subject import Cell, Grass
  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 GrassLayer(GridLayerMixin, BaseMainLayer):
  20. def __init__(self, *args, **kwargs):
  21. super().__init__(*args, **kwargs)
  22. self.cells = {}
  23. def born(self, grid_position):
  24. grass = Sprite('resources/grass.png')
  25. self.grid_manager.scale_sprite(grass)
  26. self.grid_manager.position_sprite(grass, grid_position)
  27. self.cells[grid_position] = grass
  28. self.add(grass)
  29. class MainLayer(GridLayerMixin, BaseMainLayer):
  30. def __init__(self, terminal, *args, **kwargs):
  31. super().__init__(terminal, *args, **kwargs)
  32. self.cells = CellsLayer(terminal=terminal)
  33. self.add(self.cells)
  34. self.grasses = GrassLayer(terminal=terminal)
  35. self.add(self.grasses)
  36. class Game(Gui):
  37. def __init__(self, *args, **kwargs):
  38. super().__init__(*args, **kwargs)
  39. self.main_layer = MainLayer(terminal=self.terminal)
  40. self.main_scene = cocos.scene.Scene(self.main_layer)
  41. self.positions = {}
  42. def get_main_scene(self):
  43. return self.main_scene
  44. def before_received(self, package: TerminalPackage):
  45. if package.subjects: # It's thirst package
  46. for subject in package.subjects:
  47. if isinstance(subject, Cell):
  48. self.positions[subject.id] = subject.position
  49. self.main_layer.cells.born(subject.position)
  50. if isinstance(subject, Grass):
  51. self.positions[subject.id] = subject.position
  52. self.main_layer.grasses.born(subject.position)