rust-map-parser 0.1.3__tar.gz → 0.2.0__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.
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/MANIFEST.in +2 -2
- {rust_map_parser-0.1.3/src/rust_map_parser.egg-info → rust_map_parser-0.2.0}/PKG-INFO +8 -8
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/README.md +7 -7
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/docs/export-config.md +4 -4
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/docs/export-result.md +3 -3
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/example.py +1 -1
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/pyproject.toml +3 -3
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/refresh_all_data.py +9 -9
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0/src/rust_map_parser.egg-info}/PKG-INFO +8 -8
- rust_map_parser-0.2.0/src/rust_map_parser.egg-info/SOURCES.txt +134 -0
- rust_map_parser-0.2.0/src/rust_map_parser.egg-info/top_level.txt +1 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/__init__.py +1 -1
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/config.py +1 -1
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/exporter.py +2 -2
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/monuments.py +1 -1
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/no_build.py +2 -2
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/tunnels.py +2 -2
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/tests/test_exporter.py +8 -8
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/tests/test_map_tiles.py +2 -2
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/tests/test_monuments.py +1 -1
- rust_map_parser-0.2.0/tests/test_namespace.py +21 -0
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/tests/test_no_build.py +6 -6
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/tests/test_parser_security.py +1 -1
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/tests/test_png_metadata.py +1 -1
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/tests/test_populations.py +2 -2
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/tests/test_renderer_water.py +3 -3
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/tests/test_tunnels.py +6 -6
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/tests/test_validation.py +1 -1
- rust_map_parser-0.1.3/src/rust_map_parser.egg-info/SOURCES.txt +0 -133
- rust_map_parser-0.1.3/src/rust_map_parser.egg-info/top_level.txt +0 -1
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/LICENSE +0 -0
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/docs/images/heatmap-ores.png +0 -0
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/docs/images/map-render.jpg +0 -0
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/docs/images/no-build-zones.png +0 -0
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/docs/images/splat-composite.png +0 -0
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/docs/images/tunnels-layer.png +0 -0
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/setup.cfg +0 -0
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/src/rust_map_parser.egg-info/dependency_links.txt +0 -0
- {rust_map_parser-0.1.3 → rust_map_parser-0.2.0}/src/rust_map_parser.egg-info/requires.txt +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/__init__.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/monument_metadata.json +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/no_build_zones.json +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/prefab_manifest.json +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/spawn_rules.json +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/__init__.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_000__curve-nw-0.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_001__curve-nw-1.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_002__intersection-bb1-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_003__intersection-bb4-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_004__intersection-b5-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_005__intersection-b3-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_006__intersection-b2-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_007__intersection-bb2-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_008__intersection-b6-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_009__intersection-bb3-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_010__intersection-b4-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_011__intersection-bb6-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_012__intersection-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_013__intersection-b1-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_014__intersection-bb5-n.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_015__station-sn-0.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_016__straight-sn-3.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_017__straight-sn-2.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_018__station-sn-1.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_019__straight-sn-0.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_020__straight-sn-1.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_021__station-sn-3.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_022__straight-sn-4.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_023__station-sn-2.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_024__straight-sn-5.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_025__curve-ne-1.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_026__curve-ne-0.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_027__intersection.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_028__intersection-bb2-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_029__intersection-b2-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_030__intersection-b6-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_031__intersection-bb5-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_032__intersection-bb1-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_033__intersection-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_034__intersection-b1-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_035__intersection-bb6-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_036__intersection-b5-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_037__intersection-bb4-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_038__intersection-b3-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_039__intersection-bb3-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_040__intersection-b4-s.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_041__straight-we-3.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_042__station-we-1.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_043__straight-we-5.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_044__straight-we-4.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_045__station-we-2.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_046__station-we-3.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_047__station-we-0.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_048__straight-we-2.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_049__straight-we-1.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_050__straight-we-0.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_051__curve-se-0.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_052__curve-se-1.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_053__intersection-bb3-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_054__intersection-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_055__intersection-bb5-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_056__intersection-b5-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_057__intersection-b1-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_058__intersection-bb1-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_059__intersection-bb4-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_060__intersection-b4-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_061__intersection-b6-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_062__intersection-bb2-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_063__intersection-b3-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_064__intersection-b2-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_065__intersection-bb6-w.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_066__curve-sw-0.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_067__curve-sw-1.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_068__intersection-bb3-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_069__intersection-bb6-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_070__intersection-b4-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_071__intersection-b6-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_072__intersection-b5-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_073__intersection-b1-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_074__intersection-b3-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_075__intersection-bb2-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_076__intersection-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_077__intersection-bb1-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_078__intersection-bb4-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_079__intersection-b2-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/template_080__intersection-bb5-e.png +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/data/tunnel_tiles/tiles.json +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/layers.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/monument_assets.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/no_build_assets.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/parser.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/png.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/populations.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/prefabs.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/renderer.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/resources.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/tunnel_assets.py +0 -0
- {rust_map_parser-0.1.3/src/rustmap → rust_map_parser-0.2.0/src/rustmap_parser}/validation.py +0 -0
|
@@ -4,5 +4,5 @@ include example.py
|
|
|
4
4
|
include refresh_all_data.py
|
|
5
5
|
recursive-include docs *.md *.png *.jpg
|
|
6
6
|
recursive-include tests *.py
|
|
7
|
-
recursive-include src/
|
|
8
|
-
recursive-include src/
|
|
7
|
+
recursive-include src/rustmap_parser/data *.json
|
|
8
|
+
recursive-include src/rustmap_parser/data/tunnel_tiles *.json *.png
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rust-map-parser
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Standalone Python parser, heatmap generator, and renderer for Facepunch Rust map files
|
|
5
5
|
Author: rust-map-parser contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -134,7 +134,7 @@ compose output sections in Python.
|
|
|
134
134
|
```python
|
|
135
135
|
from pathlib import Path
|
|
136
136
|
|
|
137
|
-
from
|
|
137
|
+
from rustmap_parser import ExportConfig, ExportOptions, RustMapExporter
|
|
138
138
|
|
|
139
139
|
|
|
140
140
|
config = ExportConfig(
|
|
@@ -185,7 +185,7 @@ config = ExportConfig(
|
|
|
185
185
|
### Mix exactly what you need
|
|
186
186
|
|
|
187
187
|
```python
|
|
188
|
-
from
|
|
188
|
+
from rustmap_parser import (
|
|
189
189
|
ExportConfig,
|
|
190
190
|
ExportOptions,
|
|
191
191
|
NoBuildZoneOptions,
|
|
@@ -283,7 +283,7 @@ A `None` resolution uses the map's world size.
|
|
|
283
283
|
`DataOptions` can override the bundled version-matched resources:
|
|
284
284
|
|
|
285
285
|
```python
|
|
286
|
-
from
|
|
286
|
+
from rustmap_parser import DataOptions
|
|
287
287
|
|
|
288
288
|
config = ExportConfig(
|
|
289
289
|
map_path=map_path,
|
|
@@ -441,8 +441,8 @@ rasterization and PNG encoding.
|
|
|
441
441
|
Skip the exporter entirely when you only need decoded data:
|
|
442
442
|
|
|
443
443
|
```python
|
|
444
|
-
from
|
|
445
|
-
from
|
|
444
|
+
from rustmap_parser import load_map
|
|
445
|
+
from rustmap_parser.layers import biome_grid, splat_grid, topology_grid, world_height_grid
|
|
446
446
|
|
|
447
447
|
world = load_map("procedural.map")
|
|
448
448
|
height = world_height_grid(world)
|
|
@@ -499,7 +499,7 @@ python refresh_all_data.py
|
|
|
499
499
|
[`refresh_all_data.py`](refresh_all_data.py) stages and validates the prefab
|
|
500
500
|
manifest, spawn rules, monument gameplay metadata, no-build geometry, and 81
|
|
501
501
|
tunnel tiles. It checks Rust build IDs, bundle identities, counts, and machine
|
|
502
|
-
path leaks before replacing `src/
|
|
502
|
+
path leaks before replacing `src/rustmap_parser/data`.
|
|
503
503
|
|
|
504
504
|
## Development
|
|
505
505
|
|
|
@@ -517,7 +517,7 @@ comparisons.
|
|
|
517
517
|
|
|
518
518
|
```text
|
|
519
519
|
rust-map-parser/
|
|
520
|
-
|-- src/
|
|
520
|
+
|-- src/rustmap_parser/ # Package and implementation
|
|
521
521
|
| `-- data/ # Versioned sanitized runtime resources
|
|
522
522
|
|-- tests/ # Unit and regression tests
|
|
523
523
|
|-- docs/images/ # README showcase outputs
|
|
@@ -108,7 +108,7 @@ compose output sections in Python.
|
|
|
108
108
|
```python
|
|
109
109
|
from pathlib import Path
|
|
110
110
|
|
|
111
|
-
from
|
|
111
|
+
from rustmap_parser import ExportConfig, ExportOptions, RustMapExporter
|
|
112
112
|
|
|
113
113
|
|
|
114
114
|
config = ExportConfig(
|
|
@@ -159,7 +159,7 @@ config = ExportConfig(
|
|
|
159
159
|
### Mix exactly what you need
|
|
160
160
|
|
|
161
161
|
```python
|
|
162
|
-
from
|
|
162
|
+
from rustmap_parser import (
|
|
163
163
|
ExportConfig,
|
|
164
164
|
ExportOptions,
|
|
165
165
|
NoBuildZoneOptions,
|
|
@@ -257,7 +257,7 @@ A `None` resolution uses the map's world size.
|
|
|
257
257
|
`DataOptions` can override the bundled version-matched resources:
|
|
258
258
|
|
|
259
259
|
```python
|
|
260
|
-
from
|
|
260
|
+
from rustmap_parser import DataOptions
|
|
261
261
|
|
|
262
262
|
config = ExportConfig(
|
|
263
263
|
map_path=map_path,
|
|
@@ -415,8 +415,8 @@ rasterization and PNG encoding.
|
|
|
415
415
|
Skip the exporter entirely when you only need decoded data:
|
|
416
416
|
|
|
417
417
|
```python
|
|
418
|
-
from
|
|
419
|
-
from
|
|
418
|
+
from rustmap_parser import load_map
|
|
419
|
+
from rustmap_parser.layers import biome_grid, splat_grid, topology_grid, world_height_grid
|
|
420
420
|
|
|
421
421
|
world = load_map("procedural.map")
|
|
422
422
|
height = world_height_grid(world)
|
|
@@ -473,7 +473,7 @@ python refresh_all_data.py
|
|
|
473
473
|
[`refresh_all_data.py`](refresh_all_data.py) stages and validates the prefab
|
|
474
474
|
manifest, spawn rules, monument gameplay metadata, no-build geometry, and 81
|
|
475
475
|
tunnel tiles. It checks Rust build IDs, bundle identities, counts, and machine
|
|
476
|
-
path leaks before replacing `src/
|
|
476
|
+
path leaks before replacing `src/rustmap_parser/data`.
|
|
477
477
|
|
|
478
478
|
## Development
|
|
479
479
|
|
|
@@ -491,7 +491,7 @@ comparisons.
|
|
|
491
491
|
|
|
492
492
|
```text
|
|
493
493
|
rust-map-parser/
|
|
494
|
-
|-- src/
|
|
494
|
+
|-- src/rustmap_parser/ # Package and implementation
|
|
495
495
|
| `-- data/ # Versioned sanitized runtime resources
|
|
496
496
|
|-- tests/ # Unit and regression tests
|
|
497
497
|
|-- docs/images/ # README showcase outputs
|
|
@@ -6,7 +6,7 @@ settings, and packaged-data overrides so applications do not pay for work they
|
|
|
6
6
|
did not request.
|
|
7
7
|
|
|
8
8
|
```python
|
|
9
|
-
from
|
|
9
|
+
from rustmap_parser import ExportConfig, RustMapExporter
|
|
10
10
|
|
|
11
11
|
result = RustMapExporter(ExportConfig(
|
|
12
12
|
map_path="procedural.map",
|
|
@@ -48,10 +48,10 @@ the `exports` argument is omitted.
|
|
|
48
48
|
|
|
49
49
|
## Imports
|
|
50
50
|
|
|
51
|
-
All configuration types are available from the public `
|
|
51
|
+
All configuration types are available from the public `rustmap_parser` package:
|
|
52
52
|
|
|
53
53
|
```python
|
|
54
|
-
from
|
|
54
|
+
from rustmap_parser import (
|
|
55
55
|
DataOptions,
|
|
56
56
|
ExportConfig,
|
|
57
57
|
ExportOptions,
|
|
@@ -518,7 +518,7 @@ DataOptions(
|
|
|
518
518
|
)
|
|
519
519
|
```
|
|
520
520
|
|
|
521
|
-
The package normally loads `
|
|
521
|
+
The package normally loads `rustmap_parser.data` resources automatically.
|
|
522
522
|
|
|
523
523
|
### `spawn_rules_path`
|
|
524
524
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
artifacts produced by the selected export stages.
|
|
5
5
|
|
|
6
6
|
```python
|
|
7
|
-
from
|
|
7
|
+
from rustmap_parser import ExportConfig, ExportOptions, RustMapExporter
|
|
8
8
|
|
|
9
9
|
result = RustMapExporter(ExportConfig(
|
|
10
10
|
map_path="procedural.map",
|
|
@@ -481,7 +481,7 @@ assert result.tunnel_render_status == "disabled"
|
|
|
481
481
|
### Tunnel overlay only
|
|
482
482
|
|
|
483
483
|
```python
|
|
484
|
-
from
|
|
484
|
+
from rustmap_parser import TerrainOptions, TunnelOptions
|
|
485
485
|
|
|
486
486
|
result = RustMapExporter(ExportConfig(
|
|
487
487
|
map_path=map_path,
|
|
@@ -502,7 +502,7 @@ assert result.tunnels_overlay_image is not None
|
|
|
502
502
|
### No-build JSON only
|
|
503
503
|
|
|
504
504
|
```python
|
|
505
|
-
from
|
|
505
|
+
from rustmap_parser import NoBuildZoneOptions
|
|
506
506
|
|
|
507
507
|
result = RustMapExporter(ExportConfig(
|
|
508
508
|
map_path=map_path,
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "rust-map-parser"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.2.0"
|
|
8
8
|
description = "Standalone Python parser, heatmap generator, and renderer for Facepunch Rust map files"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -41,8 +41,8 @@ package-dir = {"" = "src"}
|
|
|
41
41
|
where = ["src"]
|
|
42
42
|
|
|
43
43
|
[tool.setuptools.package-data]
|
|
44
|
-
"
|
|
45
|
-
"
|
|
44
|
+
"rustmap_parser.data" = ["*.json"]
|
|
45
|
+
"rustmap_parser.data.tunnel_tiles" = ["*.json", "*.png"]
|
|
46
46
|
|
|
47
47
|
[tool.pytest.ini_options]
|
|
48
48
|
testpaths = ["tests"]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Refresh every versioned ``src/
|
|
1
|
+
"""Refresh every versioned ``src/rustmap_parser/data`` resource from one Rust install.
|
|
2
2
|
|
|
3
3
|
Run this file directly from a source checkout. No command-line arguments are
|
|
4
4
|
used. Set RUST_INSTALL_PATH below, set the RUST_INSTALL_PATH environment
|
|
@@ -22,7 +22,7 @@ PROJECT_DIR = Path(__file__).resolve().parent
|
|
|
22
22
|
SRC_DIR = PROJECT_DIR / "src"
|
|
23
23
|
sys.path.insert(0, str(SRC_DIR))
|
|
24
24
|
|
|
25
|
-
from
|
|
25
|
+
from rustmap_parser.tunnel_assets import bundle_identity, find_rust_install
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
# --- Maintainer configuration ---------------------------------------------
|
|
@@ -65,23 +65,23 @@ def _stage_worker(stage: str, install_text: str, staging_text: str,
|
|
|
65
65
|
install = Path(install_text)
|
|
66
66
|
staging = Path(staging_text)
|
|
67
67
|
if stage == "prefab_manifest":
|
|
68
|
-
from
|
|
68
|
+
from rustmap_parser import refresh_prefab_manifest
|
|
69
69
|
target = staging / "prefab_manifest.json"
|
|
70
70
|
refresh_prefab_manifest(install, target)
|
|
71
71
|
_sanitize_manifest(target)
|
|
72
72
|
elif stage == "spawn_rules":
|
|
73
|
-
from
|
|
73
|
+
from rustmap_parser import refresh_spawn_rules
|
|
74
74
|
target = staging / "spawn_rules.json"
|
|
75
75
|
refresh_spawn_rules(install, target)
|
|
76
76
|
_sanitize_spawn_rules(target)
|
|
77
77
|
elif stage == "monument_metadata":
|
|
78
|
-
from
|
|
78
|
+
from rustmap_parser import refresh_monument_metadata
|
|
79
79
|
refresh_monument_metadata(install, staging / "monument_metadata.json")
|
|
80
80
|
elif stage == "no_build_zones":
|
|
81
|
-
from
|
|
81
|
+
from rustmap_parser import refresh_no_build_zone_data
|
|
82
82
|
refresh_no_build_zone_data(install, staging / "no_build_zones.json")
|
|
83
83
|
elif stage == "tunnel_tiles":
|
|
84
|
-
from
|
|
84
|
+
from rustmap_parser import install_packaged_tunnel_templates, refresh_tunnel_templates
|
|
85
85
|
cache = refresh_tunnel_templates(
|
|
86
86
|
install, Path(tunnel_cache_text) if tunnel_cache_text else None
|
|
87
87
|
)
|
|
@@ -183,7 +183,7 @@ def _validate_staging(staging: Path, install: Path) -> dict:
|
|
|
183
183
|
|
|
184
184
|
|
|
185
185
|
def _replace_packaged_data(staging: Path) -> None:
|
|
186
|
-
data_dir = SRC_DIR / "
|
|
186
|
+
data_dir = SRC_DIR / "rustmap_parser" / "data"
|
|
187
187
|
data_dir.mkdir(parents=True, exist_ok=True)
|
|
188
188
|
for name in JSON_RESOURCES:
|
|
189
189
|
destination = data_dir / name
|
|
@@ -224,7 +224,7 @@ def main() -> None:
|
|
|
224
224
|
stages = ("prefab_manifest", "spawn_rules", "monument_metadata",
|
|
225
225
|
"no_build_zones", "tunnel_tiles")
|
|
226
226
|
timings = {}
|
|
227
|
-
with tempfile.TemporaryDirectory(prefix="
|
|
227
|
+
with tempfile.TemporaryDirectory(prefix="rustmap_parser-data-refresh-") as temporary:
|
|
228
228
|
staging = Path(temporary)
|
|
229
229
|
for stage in stages:
|
|
230
230
|
print(f"Refreshing {stage.replace('_', ' ')}...")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rust-map-parser
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Standalone Python parser, heatmap generator, and renderer for Facepunch Rust map files
|
|
5
5
|
Author: rust-map-parser contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -134,7 +134,7 @@ compose output sections in Python.
|
|
|
134
134
|
```python
|
|
135
135
|
from pathlib import Path
|
|
136
136
|
|
|
137
|
-
from
|
|
137
|
+
from rustmap_parser import ExportConfig, ExportOptions, RustMapExporter
|
|
138
138
|
|
|
139
139
|
|
|
140
140
|
config = ExportConfig(
|
|
@@ -185,7 +185,7 @@ config = ExportConfig(
|
|
|
185
185
|
### Mix exactly what you need
|
|
186
186
|
|
|
187
187
|
```python
|
|
188
|
-
from
|
|
188
|
+
from rustmap_parser import (
|
|
189
189
|
ExportConfig,
|
|
190
190
|
ExportOptions,
|
|
191
191
|
NoBuildZoneOptions,
|
|
@@ -283,7 +283,7 @@ A `None` resolution uses the map's world size.
|
|
|
283
283
|
`DataOptions` can override the bundled version-matched resources:
|
|
284
284
|
|
|
285
285
|
```python
|
|
286
|
-
from
|
|
286
|
+
from rustmap_parser import DataOptions
|
|
287
287
|
|
|
288
288
|
config = ExportConfig(
|
|
289
289
|
map_path=map_path,
|
|
@@ -441,8 +441,8 @@ rasterization and PNG encoding.
|
|
|
441
441
|
Skip the exporter entirely when you only need decoded data:
|
|
442
442
|
|
|
443
443
|
```python
|
|
444
|
-
from
|
|
445
|
-
from
|
|
444
|
+
from rustmap_parser import load_map
|
|
445
|
+
from rustmap_parser.layers import biome_grid, splat_grid, topology_grid, world_height_grid
|
|
446
446
|
|
|
447
447
|
world = load_map("procedural.map")
|
|
448
448
|
height = world_height_grid(world)
|
|
@@ -499,7 +499,7 @@ python refresh_all_data.py
|
|
|
499
499
|
[`refresh_all_data.py`](refresh_all_data.py) stages and validates the prefab
|
|
500
500
|
manifest, spawn rules, monument gameplay metadata, no-build geometry, and 81
|
|
501
501
|
tunnel tiles. It checks Rust build IDs, bundle identities, counts, and machine
|
|
502
|
-
path leaks before replacing `src/
|
|
502
|
+
path leaks before replacing `src/rustmap_parser/data`.
|
|
503
503
|
|
|
504
504
|
## Development
|
|
505
505
|
|
|
@@ -517,7 +517,7 @@ comparisons.
|
|
|
517
517
|
|
|
518
518
|
```text
|
|
519
519
|
rust-map-parser/
|
|
520
|
-
|-- src/
|
|
520
|
+
|-- src/rustmap_parser/ # Package and implementation
|
|
521
521
|
| `-- data/ # Versioned sanitized runtime resources
|
|
522
522
|
|-- tests/ # Unit and regression tests
|
|
523
523
|
|-- docs/images/ # README showcase outputs
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
MANIFEST.in
|
|
3
|
+
README.md
|
|
4
|
+
example.py
|
|
5
|
+
pyproject.toml
|
|
6
|
+
refresh_all_data.py
|
|
7
|
+
docs/export-config.md
|
|
8
|
+
docs/export-result.md
|
|
9
|
+
docs/images/heatmap-ores.png
|
|
10
|
+
docs/images/map-render.jpg
|
|
11
|
+
docs/images/no-build-zones.png
|
|
12
|
+
docs/images/splat-composite.png
|
|
13
|
+
docs/images/tunnels-layer.png
|
|
14
|
+
src/rust_map_parser.egg-info/PKG-INFO
|
|
15
|
+
src/rust_map_parser.egg-info/SOURCES.txt
|
|
16
|
+
src/rust_map_parser.egg-info/dependency_links.txt
|
|
17
|
+
src/rust_map_parser.egg-info/requires.txt
|
|
18
|
+
src/rust_map_parser.egg-info/top_level.txt
|
|
19
|
+
src/rustmap_parser/__init__.py
|
|
20
|
+
src/rustmap_parser/config.py
|
|
21
|
+
src/rustmap_parser/exporter.py
|
|
22
|
+
src/rustmap_parser/layers.py
|
|
23
|
+
src/rustmap_parser/monument_assets.py
|
|
24
|
+
src/rustmap_parser/monuments.py
|
|
25
|
+
src/rustmap_parser/no_build.py
|
|
26
|
+
src/rustmap_parser/no_build_assets.py
|
|
27
|
+
src/rustmap_parser/parser.py
|
|
28
|
+
src/rustmap_parser/png.py
|
|
29
|
+
src/rustmap_parser/populations.py
|
|
30
|
+
src/rustmap_parser/prefabs.py
|
|
31
|
+
src/rustmap_parser/renderer.py
|
|
32
|
+
src/rustmap_parser/resources.py
|
|
33
|
+
src/rustmap_parser/tunnel_assets.py
|
|
34
|
+
src/rustmap_parser/tunnels.py
|
|
35
|
+
src/rustmap_parser/validation.py
|
|
36
|
+
src/rustmap_parser/data/__init__.py
|
|
37
|
+
src/rustmap_parser/data/monument_metadata.json
|
|
38
|
+
src/rustmap_parser/data/no_build_zones.json
|
|
39
|
+
src/rustmap_parser/data/prefab_manifest.json
|
|
40
|
+
src/rustmap_parser/data/spawn_rules.json
|
|
41
|
+
src/rustmap_parser/data/tunnel_tiles/__init__.py
|
|
42
|
+
src/rustmap_parser/data/tunnel_tiles/template_000__curve-nw-0.png
|
|
43
|
+
src/rustmap_parser/data/tunnel_tiles/template_001__curve-nw-1.png
|
|
44
|
+
src/rustmap_parser/data/tunnel_tiles/template_002__intersection-bb1-n.png
|
|
45
|
+
src/rustmap_parser/data/tunnel_tiles/template_003__intersection-bb4-n.png
|
|
46
|
+
src/rustmap_parser/data/tunnel_tiles/template_004__intersection-b5-n.png
|
|
47
|
+
src/rustmap_parser/data/tunnel_tiles/template_005__intersection-b3-n.png
|
|
48
|
+
src/rustmap_parser/data/tunnel_tiles/template_006__intersection-b2-n.png
|
|
49
|
+
src/rustmap_parser/data/tunnel_tiles/template_007__intersection-bb2-n.png
|
|
50
|
+
src/rustmap_parser/data/tunnel_tiles/template_008__intersection-b6-n.png
|
|
51
|
+
src/rustmap_parser/data/tunnel_tiles/template_009__intersection-bb3-n.png
|
|
52
|
+
src/rustmap_parser/data/tunnel_tiles/template_010__intersection-b4-n.png
|
|
53
|
+
src/rustmap_parser/data/tunnel_tiles/template_011__intersection-bb6-n.png
|
|
54
|
+
src/rustmap_parser/data/tunnel_tiles/template_012__intersection-n.png
|
|
55
|
+
src/rustmap_parser/data/tunnel_tiles/template_013__intersection-b1-n.png
|
|
56
|
+
src/rustmap_parser/data/tunnel_tiles/template_014__intersection-bb5-n.png
|
|
57
|
+
src/rustmap_parser/data/tunnel_tiles/template_015__station-sn-0.png
|
|
58
|
+
src/rustmap_parser/data/tunnel_tiles/template_016__straight-sn-3.png
|
|
59
|
+
src/rustmap_parser/data/tunnel_tiles/template_017__straight-sn-2.png
|
|
60
|
+
src/rustmap_parser/data/tunnel_tiles/template_018__station-sn-1.png
|
|
61
|
+
src/rustmap_parser/data/tunnel_tiles/template_019__straight-sn-0.png
|
|
62
|
+
src/rustmap_parser/data/tunnel_tiles/template_020__straight-sn-1.png
|
|
63
|
+
src/rustmap_parser/data/tunnel_tiles/template_021__station-sn-3.png
|
|
64
|
+
src/rustmap_parser/data/tunnel_tiles/template_022__straight-sn-4.png
|
|
65
|
+
src/rustmap_parser/data/tunnel_tiles/template_023__station-sn-2.png
|
|
66
|
+
src/rustmap_parser/data/tunnel_tiles/template_024__straight-sn-5.png
|
|
67
|
+
src/rustmap_parser/data/tunnel_tiles/template_025__curve-ne-1.png
|
|
68
|
+
src/rustmap_parser/data/tunnel_tiles/template_026__curve-ne-0.png
|
|
69
|
+
src/rustmap_parser/data/tunnel_tiles/template_027__intersection.png
|
|
70
|
+
src/rustmap_parser/data/tunnel_tiles/template_028__intersection-bb2-s.png
|
|
71
|
+
src/rustmap_parser/data/tunnel_tiles/template_029__intersection-b2-s.png
|
|
72
|
+
src/rustmap_parser/data/tunnel_tiles/template_030__intersection-b6-s.png
|
|
73
|
+
src/rustmap_parser/data/tunnel_tiles/template_031__intersection-bb5-s.png
|
|
74
|
+
src/rustmap_parser/data/tunnel_tiles/template_032__intersection-bb1-s.png
|
|
75
|
+
src/rustmap_parser/data/tunnel_tiles/template_033__intersection-s.png
|
|
76
|
+
src/rustmap_parser/data/tunnel_tiles/template_034__intersection-b1-s.png
|
|
77
|
+
src/rustmap_parser/data/tunnel_tiles/template_035__intersection-bb6-s.png
|
|
78
|
+
src/rustmap_parser/data/tunnel_tiles/template_036__intersection-b5-s.png
|
|
79
|
+
src/rustmap_parser/data/tunnel_tiles/template_037__intersection-bb4-s.png
|
|
80
|
+
src/rustmap_parser/data/tunnel_tiles/template_038__intersection-b3-s.png
|
|
81
|
+
src/rustmap_parser/data/tunnel_tiles/template_039__intersection-bb3-s.png
|
|
82
|
+
src/rustmap_parser/data/tunnel_tiles/template_040__intersection-b4-s.png
|
|
83
|
+
src/rustmap_parser/data/tunnel_tiles/template_041__straight-we-3.png
|
|
84
|
+
src/rustmap_parser/data/tunnel_tiles/template_042__station-we-1.png
|
|
85
|
+
src/rustmap_parser/data/tunnel_tiles/template_043__straight-we-5.png
|
|
86
|
+
src/rustmap_parser/data/tunnel_tiles/template_044__straight-we-4.png
|
|
87
|
+
src/rustmap_parser/data/tunnel_tiles/template_045__station-we-2.png
|
|
88
|
+
src/rustmap_parser/data/tunnel_tiles/template_046__station-we-3.png
|
|
89
|
+
src/rustmap_parser/data/tunnel_tiles/template_047__station-we-0.png
|
|
90
|
+
src/rustmap_parser/data/tunnel_tiles/template_048__straight-we-2.png
|
|
91
|
+
src/rustmap_parser/data/tunnel_tiles/template_049__straight-we-1.png
|
|
92
|
+
src/rustmap_parser/data/tunnel_tiles/template_050__straight-we-0.png
|
|
93
|
+
src/rustmap_parser/data/tunnel_tiles/template_051__curve-se-0.png
|
|
94
|
+
src/rustmap_parser/data/tunnel_tiles/template_052__curve-se-1.png
|
|
95
|
+
src/rustmap_parser/data/tunnel_tiles/template_053__intersection-bb3-w.png
|
|
96
|
+
src/rustmap_parser/data/tunnel_tiles/template_054__intersection-w.png
|
|
97
|
+
src/rustmap_parser/data/tunnel_tiles/template_055__intersection-bb5-w.png
|
|
98
|
+
src/rustmap_parser/data/tunnel_tiles/template_056__intersection-b5-w.png
|
|
99
|
+
src/rustmap_parser/data/tunnel_tiles/template_057__intersection-b1-w.png
|
|
100
|
+
src/rustmap_parser/data/tunnel_tiles/template_058__intersection-bb1-w.png
|
|
101
|
+
src/rustmap_parser/data/tunnel_tiles/template_059__intersection-bb4-w.png
|
|
102
|
+
src/rustmap_parser/data/tunnel_tiles/template_060__intersection-b4-w.png
|
|
103
|
+
src/rustmap_parser/data/tunnel_tiles/template_061__intersection-b6-w.png
|
|
104
|
+
src/rustmap_parser/data/tunnel_tiles/template_062__intersection-bb2-w.png
|
|
105
|
+
src/rustmap_parser/data/tunnel_tiles/template_063__intersection-b3-w.png
|
|
106
|
+
src/rustmap_parser/data/tunnel_tiles/template_064__intersection-b2-w.png
|
|
107
|
+
src/rustmap_parser/data/tunnel_tiles/template_065__intersection-bb6-w.png
|
|
108
|
+
src/rustmap_parser/data/tunnel_tiles/template_066__curve-sw-0.png
|
|
109
|
+
src/rustmap_parser/data/tunnel_tiles/template_067__curve-sw-1.png
|
|
110
|
+
src/rustmap_parser/data/tunnel_tiles/template_068__intersection-bb3-e.png
|
|
111
|
+
src/rustmap_parser/data/tunnel_tiles/template_069__intersection-bb6-e.png
|
|
112
|
+
src/rustmap_parser/data/tunnel_tiles/template_070__intersection-b4-e.png
|
|
113
|
+
src/rustmap_parser/data/tunnel_tiles/template_071__intersection-b6-e.png
|
|
114
|
+
src/rustmap_parser/data/tunnel_tiles/template_072__intersection-b5-e.png
|
|
115
|
+
src/rustmap_parser/data/tunnel_tiles/template_073__intersection-b1-e.png
|
|
116
|
+
src/rustmap_parser/data/tunnel_tiles/template_074__intersection-b3-e.png
|
|
117
|
+
src/rustmap_parser/data/tunnel_tiles/template_075__intersection-bb2-e.png
|
|
118
|
+
src/rustmap_parser/data/tunnel_tiles/template_076__intersection-e.png
|
|
119
|
+
src/rustmap_parser/data/tunnel_tiles/template_077__intersection-bb1-e.png
|
|
120
|
+
src/rustmap_parser/data/tunnel_tiles/template_078__intersection-bb4-e.png
|
|
121
|
+
src/rustmap_parser/data/tunnel_tiles/template_079__intersection-b2-e.png
|
|
122
|
+
src/rustmap_parser/data/tunnel_tiles/template_080__intersection-bb5-e.png
|
|
123
|
+
src/rustmap_parser/data/tunnel_tiles/tiles.json
|
|
124
|
+
tests/test_exporter.py
|
|
125
|
+
tests/test_map_tiles.py
|
|
126
|
+
tests/test_monuments.py
|
|
127
|
+
tests/test_namespace.py
|
|
128
|
+
tests/test_no_build.py
|
|
129
|
+
tests/test_parser_security.py
|
|
130
|
+
tests/test_png_metadata.py
|
|
131
|
+
tests/test_populations.py
|
|
132
|
+
tests/test_renderer_water.py
|
|
133
|
+
tests/test_tunnels.py
|
|
134
|
+
tests/test_validation.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
rustmap_parser
|
|
@@ -12,7 +12,7 @@ Color = tuple[int, int, int, int]
|
|
|
12
12
|
|
|
13
13
|
@dataclass(frozen=True, slots=True)
|
|
14
14
|
class DataOptions:
|
|
15
|
-
"""Optional overrides for the versioned data bundled with ``
|
|
15
|
+
"""Optional overrides for the versioned data bundled with ``rustmap_parser``."""
|
|
16
16
|
|
|
17
17
|
spawn_rules_path: Path | None = None
|
|
18
18
|
prefab_manifest_path: Path | None = None
|
|
@@ -353,14 +353,14 @@ class RustMapExporter:
|
|
|
353
353
|
rules = config.data.spawn_rules_path
|
|
354
354
|
if rules is None:
|
|
355
355
|
rules = stack.enter_context(resources.as_file(
|
|
356
|
-
resources.files("
|
|
356
|
+
resources.files("rustmap_parser.data").joinpath("spawn_rules.json")
|
|
357
357
|
))
|
|
358
358
|
manifest = None
|
|
359
359
|
if needs_manifest:
|
|
360
360
|
manifest = config.data.prefab_manifest_path
|
|
361
361
|
if manifest is None:
|
|
362
362
|
manifest = stack.enter_context(resources.as_file(
|
|
363
|
-
resources.files("
|
|
363
|
+
resources.files("rustmap_parser.data").joinpath("prefab_manifest.json")
|
|
364
364
|
))
|
|
365
365
|
metadata = _generate(config, Path(rules) if rules else None,
|
|
366
366
|
Path(manifest) if manifest else None)
|
|
@@ -70,7 +70,7 @@ def _size_class(group: str, name: str) -> str:
|
|
|
70
70
|
|
|
71
71
|
@lru_cache(maxsize=1)
|
|
72
72
|
def _gameplay_database() -> dict:
|
|
73
|
-
resource = resources.files("
|
|
73
|
+
resource = resources.files("rustmap_parser.data").joinpath("monument_metadata.json")
|
|
74
74
|
return json.loads(resource.read_text(encoding="utf-8"))
|
|
75
75
|
|
|
76
76
|
|
|
@@ -97,8 +97,8 @@ def _draw_zones(zones: list[dict], resolution: int, fill, outline, width: int,
|
|
|
97
97
|
|
|
98
98
|
|
|
99
99
|
def _load_packaged_data() -> tuple[dict, str]:
|
|
100
|
-
item = resources.files("
|
|
101
|
-
return json.loads(item.read_text(encoding="utf-8")), "
|
|
100
|
+
item = resources.files("rustmap_parser.data").joinpath("no_build_zones.json")
|
|
101
|
+
return json.loads(item.read_text(encoding="utf-8")), "rustmap_parser.data/no_build_zones.json"
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
def build_no_build_export(world, manifest: PrefabManifest, data: dict,
|
|
@@ -76,11 +76,11 @@ def render_tunnel_map(world, manifest: PrefabManifest, geometry_cache: str | Pat
|
|
|
76
76
|
raise ValueError("Tunnel overlay opacity must be between 0 and 1")
|
|
77
77
|
cache = Path(geometry_cache) if geometry_cache is not None else None
|
|
78
78
|
if cache is None:
|
|
79
|
-
tile_root = resources.files("
|
|
79
|
+
tile_root = resources.files("rustmap_parser.data.tunnel_tiles")
|
|
80
80
|
cache_metadata = json.loads(tile_root.joinpath("tiles.json").read_text(encoding="utf-8"))
|
|
81
81
|
tile_source = "packaged"
|
|
82
82
|
geometry_path = None
|
|
83
|
-
tile_directory = "
|
|
83
|
+
tile_directory = "rustmap_parser.data.tunnel_tiles"
|
|
84
84
|
def tile_exists(filename): return tile_root.joinpath(filename).is_file()
|
|
85
85
|
def load_tile(filename):
|
|
86
86
|
with tile_root.joinpath(filename).open("rb") as stream, Image.open(stream) as source:
|
|
@@ -6,11 +6,11 @@ from unittest.mock import patch
|
|
|
6
6
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
|
|
9
|
-
from
|
|
9
|
+
from rustmap_parser.config import (
|
|
10
10
|
DataOptions, ExportConfig, ExportOptions, HeatmapOptions, TerrainOptions,
|
|
11
11
|
TileOptions,
|
|
12
12
|
)
|
|
13
|
-
from
|
|
13
|
+
from rustmap_parser.exporter import _generate, export_orientation
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class ExporterTests(unittest.TestCase):
|
|
@@ -101,12 +101,12 @@ class ExporterTests(unittest.TestCase):
|
|
|
101
101
|
)
|
|
102
102
|
render_metadata = {"artifacts": {}, "full_size_tiles": None}
|
|
103
103
|
with (
|
|
104
|
-
patch("
|
|
105
|
-
patch("
|
|
106
|
-
patch("
|
|
107
|
-
patch("
|
|
108
|
-
patch("
|
|
109
|
-
patch("
|
|
104
|
+
patch("rustmap_parser.exporter.load_map", return_value=world),
|
|
105
|
+
patch("rustmap_parser.exporter.save_map_render", return_value=render_metadata) as render,
|
|
106
|
+
patch("rustmap_parser.exporter.generate_diagnostics") as diagnostics,
|
|
107
|
+
patch("rustmap_parser.exporter.save_monuments") as monuments,
|
|
108
|
+
patch("rustmap_parser.exporter.save_tunnel_render") as tunnels,
|
|
109
|
+
patch("rustmap_parser.exporter.save_no_build_zones") as no_build,
|
|
110
110
|
):
|
|
111
111
|
metadata = _generate(config, None, None)
|
|
112
112
|
render.assert_called_once()
|
|
@@ -7,8 +7,8 @@ from pathlib import Path
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
from PIL import Image
|
|
9
9
|
|
|
10
|
-
from
|
|
11
|
-
from
|
|
10
|
+
from rustmap_parser.renderer import save_full_map_tiles
|
|
11
|
+
from rustmap_parser.png import PNG_SOURCE_KEY, PROJECT_URL
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class MapTileTests(unittest.TestCase):
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import importlib.util
|
|
2
|
+
from importlib import resources
|
|
3
|
+
|
|
4
|
+
import rustmap_parser
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def test_new_namespace_exposes_public_api_and_version() -> None:
|
|
8
|
+
assert rustmap_parser.__version__ == "0.2.0"
|
|
9
|
+
for name in ("ExportConfig", "ExportOptions", "RustMapExporter", "load_map"):
|
|
10
|
+
assert hasattr(rustmap_parser, name)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def test_old_namespace_is_not_shipped() -> None:
|
|
14
|
+
assert importlib.util.find_spec("rustmap") is None
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_new_namespace_owns_packaged_resources() -> None:
|
|
18
|
+
data = resources.files("rustmap_parser.data")
|
|
19
|
+
tiles = resources.files("rustmap_parser.data.tunnel_tiles")
|
|
20
|
+
assert len([item for item in data.iterdir() if item.name.endswith(".json")]) == 4
|
|
21
|
+
assert len([item for item in tiles.iterdir() if item.name.endswith(".png")]) == 81
|