middleware.py 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. # coding: utf-8
  2. import os
  3. import cocos
  4. from synergine2.config import Config
  5. from synergine2.log import SynergineLogger
  6. class MapMiddleware(object):
  7. def __init__(
  8. self,
  9. config: Config,
  10. logger: SynergineLogger,
  11. map_dir_path: str,
  12. ) -> None:
  13. self.config = config
  14. self.logger = logger
  15. self.map_dir_path = map_dir_path
  16. self.tmx = None
  17. def init(self) -> None:
  18. self.tmx = cocos.tiles.load(os.path.join(
  19. self.map_dir_path,
  20. '{}.tmx'.format(os.path.basename(self.map_dir_path)),
  21. ))
  22. def get_background_sprite(self) -> cocos.sprite.Sprite:
  23. raise NotImplementedError()
  24. def get_ground_layer(self) -> cocos.tiles.RectMapLayer:
  25. raise NotImplementedError()
  26. def get_top_layer(self) -> cocos.tiles.RectMapLayer:
  27. raise NotImplementedError()
  28. class TMXMiddleware(MapMiddleware):
  29. def get_background_sprite(self) -> cocos.sprite.Sprite:
  30. return cocos.sprite.Sprite(os.path.join(
  31. self.map_dir_path,
  32. 'background.png',
  33. ))
  34. def get_ground_layer(self) -> cocos.tiles.RectMapLayer:
  35. assert self.tmx
  36. return self.tmx['ground']
  37. def get_top_layer(self) -> cocos.tiles.RectMapLayer:
  38. assert self.tmx
  39. return self.tmx['top']