maps4fs 1.3.2__py3-none-any.whl → 1.3.6__py3-none-any.whl
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.
Potentially problematic release.
This version of maps4fs might be problematic. Click here for more details.
- maps4fs/generator/background.py +4 -6
- maps4fs/generator/config.py +1 -1
- maps4fs/generator/dem.py +2 -2
- maps4fs/generator/grle.py +8 -8
- maps4fs/generator/i3d.py +30 -25
- maps4fs/generator/map.py +26 -2
- maps4fs/generator/texture.py +11 -11
- {maps4fs-1.3.2.dist-info → maps4fs-1.3.6.dist-info}/METADATA +3 -1
- maps4fs-1.3.6.dist-info/RECORD +21 -0
- maps4fs-1.3.2.dist-info/RECORD +0 -21
- {maps4fs-1.3.2.dist-info → maps4fs-1.3.6.dist-info}/LICENSE.md +0 -0
- {maps4fs-1.3.2.dist-info → maps4fs-1.3.6.dist-info}/WHEEL +0 -0
- {maps4fs-1.3.2.dist-info → maps4fs-1.3.6.dist-info}/top_level.txt +0 -0
maps4fs/generator/background.py
CHANGED
@@ -123,8 +123,6 @@ class Background(Component):
|
|
123
123
|
self.generate_obj_files()
|
124
124
|
if self.map.background_settings.generate_water:
|
125
125
|
self.generate_water_resources_obj()
|
126
|
-
else:
|
127
|
-
self.logger.info("Light version is enabled, obj files will not be generated.")
|
128
126
|
|
129
127
|
def make_copy(self, dem_path: str, dem_name: str) -> None:
|
130
128
|
"""Copies DEM data to additional DEM file.
|
@@ -138,7 +136,7 @@ class Background(Component):
|
|
138
136
|
additional_dem_path = os.path.join(dem_directory, dem_name)
|
139
137
|
|
140
138
|
shutil.copyfile(dem_path, additional_dem_path)
|
141
|
-
self.logger.
|
139
|
+
self.logger.debug("Additional DEM data was copied to %s.", additional_dem_path)
|
142
140
|
|
143
141
|
def info_sequence(self) -> dict[str, str | float | int]:
|
144
142
|
"""Returns a dictionary with information about the background terrain.
|
@@ -340,7 +338,7 @@ class Background(Component):
|
|
340
338
|
preview_path = os.path.join(self.previews_directory, "background_dem.stl")
|
341
339
|
mesh.export(preview_path)
|
342
340
|
|
343
|
-
self.logger.
|
341
|
+
self.logger.debug("STL file saved: %s", preview_path)
|
344
342
|
|
345
343
|
self.stl_preview_path = preview_path # pylint: disable=attribute-defined-outside-init
|
346
344
|
|
@@ -478,7 +476,7 @@ class Background(Component):
|
|
478
476
|
rotation=self.rotation,
|
479
477
|
map_directory=self.map_directory,
|
480
478
|
logger=self.logger,
|
481
|
-
|
479
|
+
texture_custom_schema=background_layers, # type: ignore
|
482
480
|
)
|
483
481
|
|
484
482
|
self.background_texture.preprocess()
|
@@ -501,7 +499,7 @@ class Background(Component):
|
|
501
499
|
|
502
500
|
background_save_path = os.path.join(self.water_directory, "water_resources.png")
|
503
501
|
cv2.imwrite(background_save_path, background_image)
|
504
|
-
self.logger.
|
502
|
+
self.logger.debug("Background texture saved: %s", background_save_path)
|
505
503
|
self.water_resources_path = background_save_path # pylint: disable=W0201
|
506
504
|
|
507
505
|
def subtraction(self) -> None:
|
maps4fs/generator/config.py
CHANGED
@@ -38,7 +38,7 @@ class Config(Component):
|
|
38
38
|
self.logger.warning("Map XML file not found: %s.", self._map_xml_path)
|
39
39
|
return
|
40
40
|
tree = ET.parse(self._map_xml_path)
|
41
|
-
self.logger.
|
41
|
+
self.logger.debug("Map XML file loaded from: %s.", self._map_xml_path)
|
42
42
|
root = tree.getroot()
|
43
43
|
for map_elem in root.iter("map"):
|
44
44
|
map_elem.set("width", str(self.map_size))
|
maps4fs/generator/dem.py
CHANGED
@@ -255,7 +255,7 @@ class DEM(Component):
|
|
255
255
|
)
|
256
256
|
|
257
257
|
cv2.imwrite(self._dem_path, resampled_data)
|
258
|
-
self.logger.
|
258
|
+
self.logger.debug("DEM data was saved to %s.", self._dem_path)
|
259
259
|
|
260
260
|
if self.rotation:
|
261
261
|
self.rotate_dem()
|
@@ -401,7 +401,7 @@ class DEM(Component):
|
|
401
401
|
|
402
402
|
scaling_factor = self._get_scaling_factor(max_dev)
|
403
403
|
adjusted_max_height = int(65535 * scaling_factor)
|
404
|
-
self.logger.
|
404
|
+
self.logger.debug(
|
405
405
|
"Maximum deviation: %s. Scaling factor: %s. Adjusted max height: %s.",
|
406
406
|
max_dev,
|
407
407
|
scaling_factor,
|
maps4fs/generator/grle.py
CHANGED
@@ -43,7 +43,7 @@ class GRLE(Component):
|
|
43
43
|
try:
|
44
44
|
grle_schema_path = self.game.grle_schema
|
45
45
|
except ValueError:
|
46
|
-
self.logger.
|
46
|
+
self.logger.warning("GRLE schema processing is not implemented for this game.")
|
47
47
|
return
|
48
48
|
|
49
49
|
try:
|
@@ -57,7 +57,7 @@ class GRLE(Component):
|
|
57
57
|
def process(self) -> None:
|
58
58
|
"""Generates InfoLayer PNG files based on the GRLE schema."""
|
59
59
|
if not self._grle_schema:
|
60
|
-
self.logger.
|
60
|
+
self.logger.debug("GRLE schema is not obtained, skipping the processing.")
|
61
61
|
return
|
62
62
|
|
63
63
|
for info_layer in self._grle_schema:
|
@@ -84,7 +84,7 @@ class GRLE(Component):
|
|
84
84
|
|
85
85
|
self._add_farmlands()
|
86
86
|
if self.game.code == "FS25":
|
87
|
-
self.logger.
|
87
|
+
self.logger.debug("Game is %s, plants will be added.", self.game.code)
|
88
88
|
self._add_plants()
|
89
89
|
else:
|
90
90
|
self.logger.warning("Adding plants it's not supported for the %s.", self.game.code)
|
@@ -120,7 +120,7 @@ class GRLE(Component):
|
|
120
120
|
self.game.weights_dir_path(self.map_directory), "infoLayer_farmlands.png"
|
121
121
|
)
|
122
122
|
|
123
|
-
self.logger.
|
123
|
+
self.logger.debug(
|
124
124
|
"Adding farmlands to the InfoLayer PNG file: %s.", info_layer_farmlands_path
|
125
125
|
)
|
126
126
|
|
@@ -190,10 +190,10 @@ class GRLE(Component):
|
|
190
190
|
|
191
191
|
tree.write(farmlands_xml_path)
|
192
192
|
|
193
|
-
self.logger.
|
193
|
+
self.logger.debug("Farmlands added to the farmlands XML file: %s.", farmlands_xml_path)
|
194
194
|
|
195
195
|
cv2.imwrite(info_layer_farmlands_path, image) # pylint: disable=no-member
|
196
|
-
self.logger.
|
196
|
+
self.logger.debug(
|
197
197
|
"Farmlands added to the InfoLayer PNG file: %s.", info_layer_farmlands_path
|
198
198
|
)
|
199
199
|
|
@@ -354,7 +354,7 @@ class GRLE(Component):
|
|
354
354
|
|
355
355
|
# Add islands of plants to the base image.
|
356
356
|
island_count = self.map_size
|
357
|
-
self.logger.
|
357
|
+
self.logger.debug("Adding %s islands of plants to the base image.", island_count)
|
358
358
|
if self.map.grle_settings.random_plants:
|
359
359
|
grass_image_copy = create_island_of_plants(grass_image_copy, island_count)
|
360
360
|
self.logger.debug("Islands of plants added to the base image.")
|
@@ -391,4 +391,4 @@ class GRLE(Component):
|
|
391
391
|
# Ensure that order of channels is correct because CV2 uses BGR and we need RGB.
|
392
392
|
density_map_fruits = cv2.cvtColor(density_map_fruits, cv2.COLOR_BGR2RGB)
|
393
393
|
cv2.imwrite(density_map_fruit_path, density_map_fruits)
|
394
|
-
self.logger.
|
394
|
+
self.logger.debug("Updated density map for fruits saved in %s.", density_map_fruit_path)
|
maps4fs/generator/i3d.py
CHANGED
@@ -47,19 +47,20 @@ class I3d(Component):
|
|
47
47
|
self._map_i3d_path = self.game.i3d_file_path(self.map_directory)
|
48
48
|
self.logger.debug("Map I3D path: %s.", self._map_i3d_path)
|
49
49
|
except NotImplementedError:
|
50
|
-
self.logger.
|
50
|
+
self.logger.warning("I3D file processing is not implemented for this game.")
|
51
51
|
self._map_i3d_path = None
|
52
52
|
|
53
53
|
def process(self) -> None:
|
54
54
|
"""Updates the map I3D file with the default settings."""
|
55
55
|
self._update_i3d_file()
|
56
56
|
self._add_fields()
|
57
|
-
self.
|
57
|
+
if self.game.code == "FS25":
|
58
|
+
self._add_forests()
|
58
59
|
|
59
60
|
def _get_tree(self) -> ET.ElementTree | None:
|
60
61
|
"""Returns the ElementTree instance of the map I3D file."""
|
61
62
|
if not self._map_i3d_path:
|
62
|
-
self.logger.
|
63
|
+
self.logger.debug("I3D is not obtained, skipping the update.")
|
63
64
|
return None
|
64
65
|
if not os.path.isfile(self._map_i3d_path):
|
65
66
|
self.logger.warning("I3D file not found: %s.", self._map_i3d_path)
|
@@ -117,7 +118,7 @@ class I3d(Component):
|
|
117
118
|
)
|
118
119
|
|
119
120
|
tree.write(self._map_i3d_path) # type: ignore
|
120
|
-
self.logger.
|
121
|
+
self.logger.debug("Map I3D file saved to: %s.", self._map_i3d_path)
|
121
122
|
|
122
123
|
def previews(self) -> list[str]:
|
123
124
|
"""Returns a list of paths to the preview images (empty list).
|
@@ -234,7 +235,7 @@ class I3d(Component):
|
|
234
235
|
field_id += 1
|
235
236
|
|
236
237
|
tree.write(self._map_i3d_path) # type: ignore
|
237
|
-
self.logger.
|
238
|
+
self.logger.debug("Map I3D file saved to: %s.", self._map_i3d_path)
|
238
239
|
|
239
240
|
def get_name_indicator_node(self, node_id: int, field_id: int) -> tuple[ET.Element, int]:
|
240
241
|
"""Creates a name indicator node with given node ID and field ID.
|
@@ -327,24 +328,28 @@ class I3d(Component):
|
|
327
328
|
# pylint: disable=R0911
|
328
329
|
def _add_forests(self) -> None:
|
329
330
|
"""Adds forests to the map I3D file."""
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
331
|
+
custom_schema = self.kwargs.get("tree_custom_schema")
|
332
|
+
if custom_schema:
|
333
|
+
tree_schema = custom_schema
|
334
|
+
else:
|
335
|
+
try:
|
336
|
+
tree_schema_path = self.game.tree_schema
|
337
|
+
except ValueError:
|
338
|
+
self.logger.warning("Tree schema path not set for the Game %s.", self.game.code)
|
339
|
+
return
|
340
|
+
|
341
|
+
if not os.path.isfile(tree_schema_path):
|
342
|
+
self.logger.warning("Tree schema file was not found: %s.", tree_schema_path)
|
343
|
+
return
|
344
|
+
|
345
|
+
try:
|
346
|
+
with open(tree_schema_path, "r", encoding="utf-8") as tree_schema_file:
|
347
|
+
tree_schema = json.load(tree_schema_file) # type: ignore
|
348
|
+
except json.JSONDecodeError as e:
|
349
|
+
self.logger.warning(
|
350
|
+
"Could not load tree schema from %s with error: %s", tree_schema_path, e
|
351
|
+
)
|
352
|
+
return
|
348
353
|
|
349
354
|
texture_component: Texture | None = self.map.get_component("Texture") # type: ignore
|
350
355
|
if not texture_component:
|
@@ -399,7 +404,7 @@ class I3d(Component):
|
|
399
404
|
(xcs, ycs), self.map.i3d_settings.forest_density
|
400
405
|
)
|
401
406
|
|
402
|
-
random_tree = choice(tree_schema)
|
407
|
+
random_tree = choice(tree_schema) # type: ignore
|
403
408
|
tree_name = random_tree["name"]
|
404
409
|
tree_id = random_tree["reference_id"]
|
405
410
|
|
@@ -417,7 +422,7 @@ class I3d(Component):
|
|
417
422
|
self.logger.info("Added %s trees to the I3D file.", tree_count)
|
418
423
|
|
419
424
|
tree.write(self._map_i3d_path) # type: ignore
|
420
|
-
self.logger.
|
425
|
+
self.logger.debug("Map I3D file saved to: %s.", self._map_i3d_path)
|
421
426
|
|
422
427
|
@staticmethod
|
423
428
|
def randomize_coordinates(coordinates: tuple[int, int], density: int) -> tuple[float, float]:
|
maps4fs/generator/map.py
CHANGED
@@ -71,10 +71,12 @@ class TextureSettings(NamedTuple):
|
|
71
71
|
Attributes:
|
72
72
|
dissolve (bool): dissolve the texture into several images.
|
73
73
|
fields_padding (int): padding around the fields.
|
74
|
+
skip_drains (bool): skip drains generation.
|
74
75
|
"""
|
75
76
|
|
76
77
|
dissolve: bool = True
|
77
78
|
fields_padding: int = 0
|
79
|
+
skip_drains: bool = False
|
78
80
|
|
79
81
|
|
80
82
|
# pylint: disable=R0913, R0902
|
@@ -102,6 +104,7 @@ class Map:
|
|
102
104
|
grle_settings: GRLESettings = GRLESettings(),
|
103
105
|
i3d_settings: I3DSettings = I3DSettings(),
|
104
106
|
texture_settings: TextureSettings = TextureSettings(),
|
107
|
+
**kwargs,
|
105
108
|
):
|
106
109
|
if not logger:
|
107
110
|
logger = Logger(to_stdout=True, to_file=False)
|
@@ -137,6 +140,9 @@ class Map:
|
|
137
140
|
os.makedirs(self.map_directory, exist_ok=True)
|
138
141
|
self.logger.debug("Map directory created: %s", self.map_directory)
|
139
142
|
|
143
|
+
self.texture_custom_schema = kwargs.get("texture_custom_schema", None)
|
144
|
+
self.tree_custom_schema = kwargs.get("tree_custom_schema", None)
|
145
|
+
|
140
146
|
try:
|
141
147
|
shutil.unpack_archive(game.template_path, self.map_directory)
|
142
148
|
self.logger.debug("Map template unpacked to %s", self.map_directory)
|
@@ -149,6 +155,14 @@ class Map:
|
|
149
155
|
Yields:
|
150
156
|
Generator[str, None, None]: Component names.
|
151
157
|
"""
|
158
|
+
self.logger.info(
|
159
|
+
"Starting map generation. Game code: %s. Coordinates: %s, size: %s. Rotation: %s.",
|
160
|
+
self.game.code,
|
161
|
+
self.coordinates,
|
162
|
+
self.size,
|
163
|
+
self.rotation,
|
164
|
+
)
|
165
|
+
|
152
166
|
for game_component in self.game.components:
|
153
167
|
component = game_component(
|
154
168
|
self.game,
|
@@ -159,6 +173,8 @@ class Map:
|
|
159
173
|
self.rotation,
|
160
174
|
self.map_directory,
|
161
175
|
self.logger,
|
176
|
+
texture_custom_schema=self.texture_custom_schema,
|
177
|
+
tree_custom_schema=self.tree_custom_schema,
|
162
178
|
)
|
163
179
|
self.components.append(component)
|
164
180
|
|
@@ -184,6 +200,14 @@ class Map:
|
|
184
200
|
)
|
185
201
|
raise e
|
186
202
|
|
203
|
+
self.logger.info(
|
204
|
+
"Map generation completed. Game code: %s. Coordinates: %s, size: %s. Rotation: %s.",
|
205
|
+
self.game.code,
|
206
|
+
self.coordinates,
|
207
|
+
self.size,
|
208
|
+
self.rotation,
|
209
|
+
)
|
210
|
+
|
187
211
|
def get_component(self, component_name: str) -> Component | None:
|
188
212
|
"""Get component by name.
|
189
213
|
|
@@ -231,7 +255,7 @@ class Map:
|
|
231
255
|
if remove_source:
|
232
256
|
try:
|
233
257
|
shutil.rmtree(self.map_directory)
|
234
|
-
self.logger.
|
258
|
+
self.logger.debug("Map directory removed: %s", self.map_directory)
|
235
259
|
except Exception as e: # pylint: disable=W0718
|
236
|
-
self.logger.
|
260
|
+
self.logger.debug("Error removing map directory %s: %s", self.map_directory, e)
|
237
261
|
return archive_path
|
maps4fs/generator/texture.py
CHANGED
@@ -178,7 +178,7 @@ class Texture(Component):
|
|
178
178
|
|
179
179
|
def preprocess(self) -> None:
|
180
180
|
"""Preprocesses the data before the generation."""
|
181
|
-
custom_schema = self.kwargs.get("
|
181
|
+
custom_schema = self.kwargs.get("texture_custom_schema")
|
182
182
|
if custom_schema:
|
183
183
|
layers_schema = custom_schema # type: ignore
|
184
184
|
self.logger.info("Custom schema loaded with %s layers.", len(layers_schema))
|
@@ -202,7 +202,7 @@ class Texture(Component):
|
|
202
202
|
|
203
203
|
base_layer = self.get_base_layer()
|
204
204
|
if base_layer:
|
205
|
-
self.logger.
|
205
|
+
self.logger.debug("Base layer found: %s.", base_layer.name)
|
206
206
|
else:
|
207
207
|
self.logger.warning("No base layer found.")
|
208
208
|
|
@@ -313,7 +313,7 @@ class Texture(Component):
|
|
313
313
|
|
314
314
|
for layer in self.layers:
|
315
315
|
self._generate_weights(layer)
|
316
|
-
self.logger.
|
316
|
+
self.logger.debug("Prepared weights for %s layers.", len(self.layers))
|
317
317
|
|
318
318
|
def _generate_weights(self, layer: Layer) -> None:
|
319
319
|
"""Generates weight files for textures. Each file is a numpy array of zeros and
|
@@ -388,6 +388,9 @@ class Texture(Component):
|
|
388
388
|
info_layer_data = defaultdict(list)
|
389
389
|
|
390
390
|
for layer in layers:
|
391
|
+
if self.map.texture_settings.skip_drains and layer.usage == "drain":
|
392
|
+
self.logger.debug("Skipping layer %s because of the usage.", layer.name)
|
393
|
+
continue
|
391
394
|
if not layer.tags:
|
392
395
|
self.logger.debug("Layer %s has no tags, there's nothing to draw.", layer.name)
|
393
396
|
continue
|
@@ -416,7 +419,7 @@ class Texture(Component):
|
|
416
419
|
cumulative_image = cv2.bitwise_or(cumulative_image, output_image)
|
417
420
|
|
418
421
|
cv2.imwrite(layer_path, output_image)
|
419
|
-
self.logger.
|
422
|
+
self.logger.debug("Texture %s saved.", layer_path)
|
420
423
|
|
421
424
|
# Save info layer data.
|
422
425
|
with open(self.info_layer_path, "w", encoding="utf-8") as f:
|
@@ -481,8 +484,6 @@ class Texture(Component):
|
|
481
484
|
|
482
485
|
self.logger.info("Dissolved layer %s.", layer.name)
|
483
486
|
|
484
|
-
self.logger.info("Dissolving finished.")
|
485
|
-
|
486
487
|
def draw_base_layer(self, cumulative_image: np.ndarray) -> None:
|
487
488
|
"""Draws base layer and saves it into the png file.
|
488
489
|
Base layer is the last layer to be drawn, it fills the remaining area of the map.
|
@@ -496,7 +497,7 @@ class Texture(Component):
|
|
496
497
|
self.logger.debug("Drawing base layer %s.", layer_path)
|
497
498
|
img = cv2.bitwise_not(cumulative_image)
|
498
499
|
cv2.imwrite(layer_path, img)
|
499
|
-
self.logger.
|
500
|
+
self.logger.debug("Base texture %s saved.", layer_path)
|
500
501
|
|
501
502
|
def get_relative_x(self, x: float) -> int:
|
502
503
|
"""Converts UTM X coordinate to relative X coordinate in map image.
|
@@ -635,9 +636,8 @@ class Texture(Component):
|
|
635
636
|
is_fieds = info_layer == "fields"
|
636
637
|
try:
|
637
638
|
objects = ox.features_from_bbox(bbox=self.new_bbox, tags=tags)
|
638
|
-
except Exception
|
639
|
-
self.logger.
|
640
|
-
self.logger.warning(e)
|
639
|
+
except Exception: # pylint: disable=W0718
|
640
|
+
self.logger.debug("Error fetching objects for tags: %s.", tags)
|
641
641
|
return
|
642
642
|
objects_utm = ox.projection.project_gdf(objects, to_latlong=False)
|
643
643
|
self.logger.debug("Fetched %s elements for tags: %s.", len(objects_utm), tags)
|
@@ -712,5 +712,5 @@ class Texture(Component):
|
|
712
712
|
preview_path = os.path.join(self.previews_directory, "textures_osm.png")
|
713
713
|
|
714
714
|
cv2.imwrite(preview_path, merged) # type: ignore
|
715
|
-
self.logger.
|
715
|
+
self.logger.debug("Preview saved to %s.", preview_path)
|
716
716
|
return preview_path
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: maps4fs
|
3
|
-
Version: 1.3.
|
3
|
+
Version: 1.3.6
|
4
4
|
Summary: Generate map templates for Farming Simulator from real places.
|
5
5
|
Author-email: iwatkot <iwatkot@gmail.com>
|
6
6
|
License: MIT License
|
@@ -483,6 +483,8 @@ You can also apply some advanced settings to the map generation process. Note th
|
|
483
483
|
|
484
484
|
- Texture dissolving - if enabled, the values from one layer will be splitted between different layers of texture, making it look more natural. By default, it's set to True. Can be turned of for faster processing.
|
485
485
|
|
486
|
+
- Skip drains - if enabled, the tool will not generate the drains and ditches on the map. By default, it's set to False. Use this if you don't need the drains on the map.
|
487
|
+
|
486
488
|
### Farmlands Advanced settings
|
487
489
|
|
488
490
|
- Farmlands margin - this value (in meters) will be applied to each farmland, making it bigger. You can use the value to adjust how much the farmland should be bigger than the actual field. By default, it's set to 3.
|
@@ -0,0 +1,21 @@
|
|
1
|
+
maps4fs/__init__.py,sha256=MlM_vkLH_22xoBwhoRD52JDECCmeAJ8gBQr7RMQZmis,261
|
2
|
+
maps4fs/logger.py,sha256=B-NEYpMjPAAqlV4VpfTi6nbBFnEABVtQOaYe6nMpidg,1489
|
3
|
+
maps4fs/generator/__init__.py,sha256=zZMLEkGzb4z0xql650gOtGSvcgX58DnJ2yN3vC2daRk,43
|
4
|
+
maps4fs/generator/background.py,sha256=KFoO6GKaNrJDUoMrDyeroZG63Cv9aGkMgHaa0QYEpiU,22306
|
5
|
+
maps4fs/generator/component.py,sha256=XN-3Zx0bujugpuRk3YB-pYNwUHREdyt_cLxPd7pr57g,17967
|
6
|
+
maps4fs/generator/config.py,sha256=0QmK052B8bxyHVhg3jzCORLfOBMMmqVfhhbqXKf6OMk,4383
|
7
|
+
maps4fs/generator/dem.py,sha256=MZf3ZjawJ977TxqB1q9nNpvPZUNwfmm2EaJDtVU-eCU,15939
|
8
|
+
maps4fs/generator/game.py,sha256=ZQeYzPzPB3CG41avdhNCyTZpHEeedqNBuAbNevTZuXg,7931
|
9
|
+
maps4fs/generator/grle.py,sha256=xKIpyhYsZol-IXcBULbX7wWZ1n83BWTZqaf8FLodchE,17499
|
10
|
+
maps4fs/generator/i3d.py,sha256=bW7FLAISFKCPUmad7ANz1loWI07oEZlEQOEL_tv0YmQ,18483
|
11
|
+
maps4fs/generator/map.py,sha256=a-nwDsKq6u9RLB2htueXtJtdDZbocpj_KxGhBw5AoEI,8776
|
12
|
+
maps4fs/generator/qgis.py,sha256=Es8hLuqN_KH8lDfnJE6He2rWYbAKJ3RGPn-o87S6CPI,6116
|
13
|
+
maps4fs/generator/texture.py,sha256=tNhv-_AOrv4Wf7knbrN9LZBkvApgsrGffGPAzZScr7g,27745
|
14
|
+
maps4fs/toolbox/__init__.py,sha256=zZMLEkGzb4z0xql650gOtGSvcgX58DnJ2yN3vC2daRk,43
|
15
|
+
maps4fs/toolbox/background.py,sha256=9BXWNqs_n3HgqDiPztWylgYk_QM4YgBpe6_ZNQAWtSc,2154
|
16
|
+
maps4fs/toolbox/dem.py,sha256=z9IPFNmYbjiigb3t02ZenI3Mo8odd19c5MZbjDEovTo,3525
|
17
|
+
maps4fs-1.3.6.dist-info/LICENSE.md,sha256=pTKD_oUexcn-yccFCTrMeLkZy0ifLRa-VNcDLqLZaIw,10749
|
18
|
+
maps4fs-1.3.6.dist-info/METADATA,sha256=pczjM5FWcRCAJiNtW3JRwl0SeNYEAlQUwc1V2UWyjtY,31082
|
19
|
+
maps4fs-1.3.6.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
20
|
+
maps4fs-1.3.6.dist-info/top_level.txt,sha256=Ue9DSRlejRQRCaJueB0uLcKrWwsEq9zezfv5dI5mV1M,8
|
21
|
+
maps4fs-1.3.6.dist-info/RECORD,,
|
maps4fs-1.3.2.dist-info/RECORD
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
maps4fs/__init__.py,sha256=MlM_vkLH_22xoBwhoRD52JDECCmeAJ8gBQr7RMQZmis,261
|
2
|
-
maps4fs/logger.py,sha256=B-NEYpMjPAAqlV4VpfTi6nbBFnEABVtQOaYe6nMpidg,1489
|
3
|
-
maps4fs/generator/__init__.py,sha256=zZMLEkGzb4z0xql650gOtGSvcgX58DnJ2yN3vC2daRk,43
|
4
|
-
maps4fs/generator/background.py,sha256=LDM8377BpBa9Iy1AMK0c0sbW8QTvhVM3yFlf-bu8APU,22400
|
5
|
-
maps4fs/generator/component.py,sha256=XN-3Zx0bujugpuRk3YB-pYNwUHREdyt_cLxPd7pr57g,17967
|
6
|
-
maps4fs/generator/config.py,sha256=b7qY0luC-_WM_c72Ohtlf4FrB37X5cALInbestSdUsw,4382
|
7
|
-
maps4fs/generator/dem.py,sha256=DoQk6IPkS47eF21rh7JZoiUr1bAzuJkdF41ejAqykW4,15937
|
8
|
-
maps4fs/generator/game.py,sha256=ZQeYzPzPB3CG41avdhNCyTZpHEeedqNBuAbNevTZuXg,7931
|
9
|
-
maps4fs/generator/grle.py,sha256=zdYM-MHGfa3CHKgnOnd4EpCKF6HfY_sUfeJbo7-cic0,17489
|
10
|
-
maps4fs/generator/i3d.py,sha256=fsKveRWQk68fpWRwMYqSL4RfHkD0dLUyNHi_iAyANso,18225
|
11
|
-
maps4fs/generator/map.py,sha256=r0yEqQB56aqo0MxZMVLdP8w9xmQao0R3WTp6Sg-C4bY,7913
|
12
|
-
maps4fs/generator/qgis.py,sha256=Es8hLuqN_KH8lDfnJE6He2rWYbAKJ3RGPn-o87S6CPI,6116
|
13
|
-
maps4fs/generator/texture.py,sha256=57R0v4QuB-tnr_75hgGxfUTX5ennrULkhqiDNTgzi4s,27629
|
14
|
-
maps4fs/toolbox/__init__.py,sha256=zZMLEkGzb4z0xql650gOtGSvcgX58DnJ2yN3vC2daRk,43
|
15
|
-
maps4fs/toolbox/background.py,sha256=9BXWNqs_n3HgqDiPztWylgYk_QM4YgBpe6_ZNQAWtSc,2154
|
16
|
-
maps4fs/toolbox/dem.py,sha256=z9IPFNmYbjiigb3t02ZenI3Mo8odd19c5MZbjDEovTo,3525
|
17
|
-
maps4fs-1.3.2.dist-info/LICENSE.md,sha256=pTKD_oUexcn-yccFCTrMeLkZy0ifLRa-VNcDLqLZaIw,10749
|
18
|
-
maps4fs-1.3.2.dist-info/METADATA,sha256=PysvMKUBYzqwHkBqoahH6uziBlrrNCySs8RKvv6XlhM,30910
|
19
|
-
maps4fs-1.3.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
20
|
-
maps4fs-1.3.2.dist-info/top_level.txt,sha256=Ue9DSRlejRQRCaJueB0uLcKrWwsEq9zezfv5dI5mV1M,8
|
21
|
-
maps4fs-1.3.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|