tilemap-editor 3.1.4__tar.gz → 3.1.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tilemap_editor-3.1.4/src/tilemap_editor.egg-info → tilemap_editor-3.1.6}/PKG-INFO +1 -1
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/pyproject.toml +1 -1
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap.py +6 -6
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6/src/tilemap_editor.egg-info}/PKG-INFO +1 -1
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor.egg-info/SOURCES.txt +2 -1
- tilemap_editor-3.1.6/tests/test_tilemap_save.py +154 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/LICENSE +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/MANIFEST.in +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/README.md +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/arrow-down.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/check.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/checked.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/close.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/duplicate.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/error.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/file.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/filedead.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/fit.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/folder.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/grid.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/image.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/info.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/load.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/loop.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/pan.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/pause.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/pencil.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/play.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/plus.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/radio.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/reset.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/save.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/stop.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/tilemap.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/tileset.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/unchecked.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/warning.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/zoomin.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/icons/zoomout.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/setup.cfg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/configs/themes.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/constants.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/editor.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/event_map.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/layers.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/main.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/__init__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/character_collision/__init__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/character_collision/editor.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/character_collision/models.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/character_collision/protocols.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/character_collision/shape_editor.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/character_collision/standalone.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/object_tileset_collision/__init__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/object_tileset_collision/editor.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/object_tileset_collision/models.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/object_tileset_collision/protocols.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/object_tileset_collision/standalone.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/__init__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/__main__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/clipboard_util.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/editor.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/frame_picker.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/models.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/preview.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/protocols.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/runtime_load.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/standalone.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/timeline.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/validation.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/tileset_collision/__init__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/tileset_collision/collision_painter.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/tileset_collision/editor.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/tileset_collision/models.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/tileset_collision/protocols.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/tileset_collision/standalone.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/standalone_automap.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/standalone_error_console.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/standalone_filemanager.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/standalone_image_viewer.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/__init__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/__main__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/__init__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-BoldItalic.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/ToolMove.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/arrow-down.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/check.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/checked.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/close.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/duplicate.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/error.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/file.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/filedead.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/fit.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/folder.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/grid.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/image.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/info.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/load.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/loop.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/pan.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/pause.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/pencil.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/play.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/plus.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/radio.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/reset.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/save.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/stop.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/tilemap.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/tileset.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/unchecked.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/warning.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/zoomin.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/zoomout.svg +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/cli.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/main.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/settings.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor.egg-info/dependency_links.txt +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor.egg-info/entry_points.txt +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor.egg-info/requires.txt +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor.egg-info/top_level.txt +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/ttypes/__init__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/ttypes/tilemap.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/__init__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/editor_preference.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/error_handler.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/font_manager.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/history.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/icon_manager.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/icons_cache.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/log_capture.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/project_paths.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/serialization.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/standalone.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/utils/validation.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/__init__.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/automap_models.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/autotile_template.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/autotiler.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/filemanager.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/input.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/layer_selector.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/map_properties.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/mapsetup.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/regex_automap_designer.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/tile_grid.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/tile_selector.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/collision_layer_mask.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/collision_layer_sidebar.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/draw_utils.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/fileinput.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/layer_type_dialog.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/menubar.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/mode_indicator.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/notification.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/property_editor.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/region_selector.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/status_bar.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/theme.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/tileset_type_dialog.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/toolbar.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/widgets/ui/tooltip.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/tests/test_collision_layer_mask.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/tests/test_collision_layer_sidebar.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/tests/test_project_paths.py +0 -0
- {tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/tests/test_render_scale.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tilemap-editor"
|
|
7
|
-
version = "3.1.
|
|
7
|
+
version = "3.1.6"
|
|
8
8
|
description = "Pygame tilemap editor with SVG icons, professional UI, and sprite animation tools"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -302,7 +302,7 @@ class Tilemap:
|
|
|
302
302
|
save_data["resources"]["tilesets"].append(ts_data)
|
|
303
303
|
|
|
304
304
|
if hasattr(self.editor, "autotiler") and self.editor.autotiler:
|
|
305
|
-
if not
|
|
305
|
+
if "groups" not in save_data["project_state"]:
|
|
306
306
|
save_data["project_state"]["groups"] = []
|
|
307
307
|
|
|
308
308
|
for group in self.editor.autotiler.groups:
|
|
@@ -320,7 +320,7 @@ class Tilemap:
|
|
|
320
320
|
save_data["project_state"]["rules"] = []
|
|
321
321
|
for rule in self.editor.autotiler.rules:
|
|
322
322
|
save_data["project_state"]["rules"].append(
|
|
323
|
-
self._serialize_autotile_rule(rule,
|
|
323
|
+
self._serialize_autotile_rule(rule, map_dir)
|
|
324
324
|
)
|
|
325
325
|
|
|
326
326
|
# Save automap pattern rules
|
|
@@ -409,10 +409,10 @@ class Tilemap:
|
|
|
409
409
|
"Cannot determine base_path - Editor not initialized with settings.json"
|
|
410
410
|
)
|
|
411
411
|
|
|
412
|
-
def _serialize_autotile_rule(self, rule: "AutotileRule",
|
|
412
|
+
def _serialize_autotile_rule(self, rule: "AutotileRule", save_dir: Path) -> dict:
|
|
413
413
|
data = rule.to_dict()
|
|
414
414
|
if data.get("tileset_path"):
|
|
415
|
-
data["tileset_path"] = to_project_path(data["tileset_path"],
|
|
415
|
+
data["tileset_path"] = to_project_path(data["tileset_path"], save_dir)
|
|
416
416
|
return data
|
|
417
417
|
|
|
418
418
|
def _path_matches_project_path(self, stored_path: str, actual_path: Path) -> bool:
|
|
@@ -520,8 +520,8 @@ class Tilemap:
|
|
|
520
520
|
|
|
521
521
|
p = resolve_project_path(
|
|
522
522
|
path_str,
|
|
523
|
-
|
|
524
|
-
fallback_roots=[
|
|
523
|
+
path.parent,
|
|
524
|
+
fallback_roots=[self._project_base_path()],
|
|
525
525
|
must_exist=True,
|
|
526
526
|
)
|
|
527
527
|
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Tests for Tilemap.save_map.
|
|
3
|
+
|
|
4
|
+
Catches regressions like referencing undefined variables in the
|
|
5
|
+
save path (e.g., `base_path` instead of `map_dir` when serializing
|
|
6
|
+
autotile rules).
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import json
|
|
10
|
+
import tempfile
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
import pytest
|
|
14
|
+
|
|
15
|
+
import sys
|
|
16
|
+
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class TestSaveMapAutotileRules:
|
|
20
|
+
"""save_map must handle autotile rules without NameError"""
|
|
21
|
+
|
|
22
|
+
@pytest.fixture
|
|
23
|
+
def fake_autotiler(self):
|
|
24
|
+
class FakeRule:
|
|
25
|
+
def __init__(self, name: str):
|
|
26
|
+
self.name = name
|
|
27
|
+
self.tileset_path = ""
|
|
28
|
+
self.tileset_index = None
|
|
29
|
+
self.variant_ids = []
|
|
30
|
+
self.group_id = name
|
|
31
|
+
|
|
32
|
+
def to_dict(self):
|
|
33
|
+
return {
|
|
34
|
+
"name": self.name,
|
|
35
|
+
"neighbors": [],
|
|
36
|
+
"tileset_path": self.tileset_path,
|
|
37
|
+
"tileset_index": self.tileset_index,
|
|
38
|
+
"variant_ids": self.variant_ids,
|
|
39
|
+
"group_id": self.group_id,
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
class FakeGroup:
|
|
43
|
+
def __init__(self, name: str, rules):
|
|
44
|
+
self.name = name
|
|
45
|
+
self.rules = rules
|
|
46
|
+
|
|
47
|
+
class FakeAutotiler:
|
|
48
|
+
groups = [FakeGroup("Test", [FakeRule("rule_a"), FakeRule("rule_b")])]
|
|
49
|
+
|
|
50
|
+
@property
|
|
51
|
+
def rules(self):
|
|
52
|
+
all_rules = []
|
|
53
|
+
for g in self.groups:
|
|
54
|
+
all_rules.extend(g.rules)
|
|
55
|
+
return all_rules
|
|
56
|
+
|
|
57
|
+
return FakeAutotiler()
|
|
58
|
+
|
|
59
|
+
@pytest.fixture
|
|
60
|
+
def editor(self, fake_autotiler):
|
|
61
|
+
class FakeTilesetWidget:
|
|
62
|
+
tilesets = []
|
|
63
|
+
|
|
64
|
+
class FakeTileGrid:
|
|
65
|
+
zoom_level = 1.0
|
|
66
|
+
scroll_x = 0
|
|
67
|
+
scroll_y = 0
|
|
68
|
+
|
|
69
|
+
class FakeEditor:
|
|
70
|
+
tileset_widget = FakeTilesetWidget()
|
|
71
|
+
tile_grid_widget = FakeTileGrid()
|
|
72
|
+
autotiler = fake_autotiler
|
|
73
|
+
base_path = None
|
|
74
|
+
data_root = None
|
|
75
|
+
regex_automap_designer = None
|
|
76
|
+
|
|
77
|
+
return FakeEditor()
|
|
78
|
+
|
|
79
|
+
def test_save_map_with_autotile_rules_succeeds(self, editor):
|
|
80
|
+
"""save_map must not raise when autotiler is configured with rules"""
|
|
81
|
+
from tilemap import Tilemap
|
|
82
|
+
|
|
83
|
+
tm = Tilemap(editor)
|
|
84
|
+
tm.init_size((16, 16), (10, 10))
|
|
85
|
+
|
|
86
|
+
with tempfile.TemporaryDirectory() as tmp:
|
|
87
|
+
path = Path(tmp) / "test.json"
|
|
88
|
+
tm.save_map(path)
|
|
89
|
+
with open(path) as f:
|
|
90
|
+
data = json.load(f)
|
|
91
|
+
|
|
92
|
+
assert "project_state" in data
|
|
93
|
+
assert "rules" in data["project_state"]
|
|
94
|
+
assert "groups" in data["project_state"]
|
|
95
|
+
|
|
96
|
+
def test_save_map_autotile_rules_serialized_correctly(self, editor):
|
|
97
|
+
"""saved autotile rules should appear in project_state.rules"""
|
|
98
|
+
from tilemap import Tilemap
|
|
99
|
+
|
|
100
|
+
tm = Tilemap(editor)
|
|
101
|
+
tm.init_size((16, 16), (10, 10))
|
|
102
|
+
|
|
103
|
+
with tempfile.TemporaryDirectory() as tmp:
|
|
104
|
+
path = Path(tmp) / "test.json"
|
|
105
|
+
tm.save_map(path)
|
|
106
|
+
with open(path) as f:
|
|
107
|
+
data = json.load(f)
|
|
108
|
+
|
|
109
|
+
rule_names = [r["name"] for r in data["project_state"]["rules"]]
|
|
110
|
+
assert "rule_a" in rule_names
|
|
111
|
+
assert "rule_b" in rule_names
|
|
112
|
+
|
|
113
|
+
def test_save_map_autotile_groups_serialized_correctly(self, editor):
|
|
114
|
+
"""saved autotile groups should appear in project_state.groups"""
|
|
115
|
+
from tilemap import Tilemap
|
|
116
|
+
|
|
117
|
+
tm = Tilemap(editor)
|
|
118
|
+
tm.init_size((16, 16), (10, 10))
|
|
119
|
+
|
|
120
|
+
with tempfile.TemporaryDirectory() as tmp:
|
|
121
|
+
path = Path(tmp) / "test.json"
|
|
122
|
+
tm.save_map(path)
|
|
123
|
+
with open(path) as f:
|
|
124
|
+
data = json.load(f)
|
|
125
|
+
|
|
126
|
+
group_names = [g["name"] for g in data["project_state"]["groups"]]
|
|
127
|
+
assert "Test" in group_names
|
|
128
|
+
|
|
129
|
+
def test_save_map_without_autotiler_still_works(self):
|
|
130
|
+
"""Regression: save_map must work when autotiler is absent"""
|
|
131
|
+
from tilemap import Tilemap
|
|
132
|
+
|
|
133
|
+
class FakeTilesetWidget:
|
|
134
|
+
tilesets = []
|
|
135
|
+
|
|
136
|
+
class FakeTileGrid:
|
|
137
|
+
zoom_level = 1.0
|
|
138
|
+
scroll_x = 0
|
|
139
|
+
scroll_y = 0
|
|
140
|
+
|
|
141
|
+
class FakeEditor:
|
|
142
|
+
tileset_widget = FakeTilesetWidget()
|
|
143
|
+
tile_grid_widget = FakeTileGrid()
|
|
144
|
+
autotiler = None
|
|
145
|
+
base_path = None
|
|
146
|
+
data_root = None
|
|
147
|
+
regex_automap_designer = None
|
|
148
|
+
|
|
149
|
+
tm = Tilemap(FakeEditor())
|
|
150
|
+
tm.init_size((16, 16), (10, 10))
|
|
151
|
+
|
|
152
|
+
with tempfile.TemporaryDirectory() as tmp:
|
|
153
|
+
path = Path(tmp) / "test.json"
|
|
154
|
+
tm.save_map(path)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-Bold.ttf
RENAMED
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-Italic.ttf
RENAMED
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/assets/fonts/jetbrain-fonts/JetBrainsMono-Regular.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/character_collision/shape_editor.py
RENAMED
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/object_tileset_collision/__init__.py
RENAMED
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/object_tileset_collision/editor.py
RENAMED
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/object_tileset_collision/models.py
RENAMED
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/object_tileset_collision/protocols.py
RENAMED
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/object_tileset_collision/standalone.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/sprite_animation/clipboard_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/plugins/tileset_collision/collision_painter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/fonts/noto/NotoSans-Bold.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor/assets/icons/arrow-down.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tilemap_editor-3.1.4 → tilemap_editor-3.1.6}/src/tilemap_editor.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|