tmx_utils.py 838B

12345678910111213141516171819202122232425262728293031
  1. # coding: utf-8
  2. import typing
  3. from tmx import TileMap
  4. from tmx import Layer
  5. from synergine2.exceptions import ConfigurationError
  6. from synergine2_xyz.map import TMXMap
  7. from synergine2_xyz.physics import Matrixes
  8. def get_layer_by_name(map_: TileMap, layer_name: str) -> Layer:
  9. for layer in map_.layers:
  10. if layer.name == layer_name:
  11. return layer
  12. raise ConfigurationError('No layer named "{}" in map')
  13. def fill_matrix(
  14. tmx_map: TMXMap,
  15. matrixes: Matrixes,
  16. layer_name: str,
  17. matrix_name: str,
  18. properties: typing.List[str],
  19. ) -> None:
  20. for tile_xy, tile in tmx_map.tmx_layer_tiles[layer_name].items():
  21. x, y = map(int, tile_xy.split('.'))
  22. values = [tile.property(p_name) for p_name in properties]
  23. matrixes.update_matrix(matrix_name, value=tuple(values), x=x, y=y)