layer.py 3.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # coding: utf-8
  2. from pyglet.window import key
  3. import cocos
  4. from synergine2.config import Config
  5. from synergine2.log import SynergineLogger
  6. from synergine2_cocos2d.middleware import MapMiddleware
  7. class LayerManager(object):
  8. def __init__(
  9. self,
  10. config: Config,
  11. logger: SynergineLogger,
  12. middleware: MapMiddleware,
  13. ) -> None:
  14. self.config = config
  15. self.logger = logger
  16. self.middleware = middleware
  17. self.scrolling_manager = None # type: cocos.layer.ScrollingManager
  18. self.main_scene = None # type: cocos.scene.Scene
  19. self.main_layer = None # type: cocos.layer.Layer
  20. self.edit_layer = None # TODO type
  21. self.background_sprite = None # type: cocos.sprite.Sprite
  22. self.ground_layer = None # type: cocos.tiles.RectMapLayer
  23. self.subject_layer = None # type: cocos.layer.ScrollableLayer
  24. self.top_layer = None # type: cocos.tiles.RectMapLayer
  25. def init(self) -> None:
  26. from synergine2_cocos2d.gui import MainLayer
  27. from synergine2_cocos2d.gui import EditLayer
  28. self.middleware.init()
  29. self.main_scene = cocos.scene.Scene()
  30. self.scrolling_manager = cocos.layer.ScrollingManager()
  31. self.main_layer = MainLayer(
  32. self,
  33. **{
  34. 'width': 1200, # Note: world size
  35. 'height': 1000, # Note: world size
  36. }
  37. )
  38. self.edit_layer = EditLayer(
  39. self,
  40. self.main_layer,
  41. **{
  42. 'bindings': {
  43. key.LEFT: 'left',
  44. key.RIGHT: 'right',
  45. key.UP: 'up',
  46. key.DOWN: 'down',
  47. key.NUM_ADD: 'zoomin',
  48. key.NUM_SUBTRACT: 'zoomout'
  49. },
  50. 'mod_modify_selection': key.MOD_SHIFT,
  51. 'mod_restricted_mov': key.MOD_ACCEL,
  52. 'fastness': 160.0,
  53. 'autoscroll_border': 20.0, # in pixels, float; None disables autoscroll
  54. 'autoscroll_fastness': 320.0,
  55. 'wheel_multiplier': 2.5,
  56. 'zoom_min': 0.1,
  57. 'zoom_max': 2.0,
  58. 'zoom_fastness': 1.0
  59. }
  60. )
  61. self.main_scene.add(self.scrolling_manager)
  62. self.scrolling_manager.add(self.main_layer, z=0)
  63. self.main_scene.add(self.edit_layer)
  64. self.background_sprite = self.middleware.get_background_sprite()
  65. self.ground_layer = self.middleware.get_ground_layer()
  66. self.subject_layer = cocos.layer.ScrollableLayer()
  67. self.top_layer = self.middleware.get_top_layer()
  68. self.main_layer.add(self.background_sprite)
  69. self.main_layer.add(self.ground_layer)
  70. self.main_layer.add(self.subject_layer)
  71. self.main_layer.add(self.top_layer)
  72. def center(self):
  73. self.background_sprite.position = 0 + (self.background_sprite.width/2), 0 + (self.background_sprite.height/2)
  74. self.ground_layer.set_view(0, 0, self.ground_layer.px_width, self.ground_layer.px_height)
  75. self.subject_layer.position = 0, 0
  76. self.top_layer.set_view(0, 0, self.top_layer.px_width, self.top_layer.px_height)