maps4fs 1.1.2__py3-none-any.whl → 1.1.5__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.
@@ -356,6 +356,7 @@ class Component:
356
356
  offset = (self.map_size / 2) - (self.map_rotated_size / 2)
357
357
  self.logger.debug("Translating the polygon by %s", offset)
358
358
  polygon = translate(polygon, xoff=offset, yoff=offset)
359
+ self.logger.debug("Rotated and translated polygon.")
359
360
 
360
361
  if margin:
361
362
  polygon = polygon.buffer(margin, join_style="mitre")
@@ -367,12 +368,16 @@ class Component:
367
368
 
368
369
  # Intersect the polygon with the bounds to fit it within the map
369
370
  fitted_polygon = polygon.intersection(bounds)
371
+ self.logger.debug("Fitted the polygon into the bounds: %s", bounds)
370
372
 
371
373
  if not isinstance(fitted_polygon, Polygon):
372
374
  raise ValueError("The fitted polygon is not a valid polygon.")
373
375
 
374
376
  # Return the fitted polygon points
375
- return list(fitted_polygon.exterior.coords)
377
+ as_list = list(fitted_polygon.exterior.coords)
378
+ if not as_list:
379
+ raise ValueError("The fitted polygon has no points.")
380
+ return as_list
376
381
 
377
382
  def get_infolayer_path(self, layer_name: str) -> str | None:
378
383
  """Returns the path to the info layer file.
maps4fs/generator/grle.py CHANGED
@@ -108,6 +108,10 @@ class GRLE(Component):
108
108
  self.game.weights_dir_path(self.map_directory), "infoLayer_farmlands.png"
109
109
  )
110
110
 
111
+ self.logger.info(
112
+ "Adding farmlands to the InfoLayer PNG file: %s.", info_layer_farmlands_path
113
+ )
114
+
111
115
  if not os.path.isfile(info_layer_farmlands_path):
112
116
  self.logger.warning("InfoLayer PNG file %s not found.", info_layer_farmlands_path)
113
117
  return
@@ -139,12 +143,19 @@ class GRLE(Component):
139
143
  )
140
144
  continue
141
145
 
146
+ self.logger.debug("Fitted field %s contains %s points.", farmland_id, len(fitted_field))
147
+
142
148
  field_np = np.array(fitted_field, np.int32)
143
149
  field_np = field_np.reshape((-1, 1, 2))
144
150
 
151
+ self.logger.debug(
152
+ "Created a numpy array and reshaped it. Number of points: %s", len(field_np)
153
+ )
154
+
145
155
  # Infolayer image is 1/2 of the size of the map image, that's why we need to divide
146
156
  # the coordinates by 2.
147
157
  field_np = field_np // 2
158
+ self.logger.debug("Divided the coordinates by 2.")
148
159
 
149
160
  # pylint: disable=no-member
150
161
  try:
maps4fs/generator/i3d.py CHANGED
@@ -9,6 +9,7 @@ from xml.etree import ElementTree as ET
9
9
  from maps4fs.generator.component import Component
10
10
 
11
11
  DEFAULT_HEIGHT_SCALE = 2000
12
+ DISPLACEMENT_LAYER_SIZE_FOR_BIG_MAPS = 32768
12
13
  DEFAULT_MAX_LOD_DISTANCE = 10000
13
14
  DEFAULT_MAX_LOD_OCCLUDER_DISTANCE = 10000
14
15
  NODE_ID_STARTING_VALUE = 500
@@ -84,6 +85,15 @@ class I3d(Component):
84
85
 
85
86
  self.logger.debug("TerrainTransformGroup element updated in I3D file.")
86
87
 
88
+ if self.map_size > 4096:
89
+ displacement_layer = terrain_elem.find(".//DisplacementLayer") # pylint: disable=W0631
90
+
91
+ if displacement_layer is not None:
92
+ displacement_layer.set("size", str(DISPLACEMENT_LAYER_SIZE_FOR_BIG_MAPS))
93
+ self.logger.debug(
94
+ "Map size is greater than 4096, DisplacementLayer size set to %s.",
95
+ )
96
+
87
97
  tree.write(self._map_i3d_path) # type: ignore
88
98
  self.logger.info("Map I3D file saved to: %s.", self._map_i3d_path)
89
99
 
@@ -116,6 +126,7 @@ class I3d(Component):
116
126
  return
117
127
 
118
128
  self.logger.info("Found %s fields in textures info layer.", len(fields))
129
+ self.logger.debug("Starging to add fields to the I3D file.")
119
130
 
120
131
  root = tree.getroot()
121
132
  gameplay_node = root.find(".//TransformGroup[@name='gameplay']")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: maps4fs
3
- Version: 1.1.2
3
+ Version: 1.1.5
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
@@ -35,6 +35,7 @@ Requires-Dist: pympler
35
35
  <a href="#How-To-Run">How-To-Run</a><br>
36
36
  <a href="docs/FAQ.md">FAQ</a> •
37
37
  <a href="docs/map_structure.md">Map Structure</a> •
38
+ <a href="docs/tips_and_hints.md">Tips and Hints</a> •
38
39
  <a href="#Modder-Toolbox">Modder Toolbox</a><br>
39
40
  <a href="#Supported-objects">Supported objects</a> •
40
41
  <a href="#Generation-info">Generation info</a> •
@@ -44,7 +45,8 @@ Requires-Dist: pympler
44
45
  <a href="#DDS-conversion">DDS conversion</a> •
45
46
  <a href="#For-advanced-users">For advanced users</a> •
46
47
  <a href="#Resources">Resources</a> •
47
- <a href="#Bugs-and-feature-requests">Bugs and feature requests</a>
48
+ <a href="#Bugs-and-feature-requests">Bugs and feature requests</a><br>
49
+ <a href="#Special-thanks">Special thanks</a>
48
50
  </p>
49
51
 
50
52
 
@@ -491,3 +493,13 @@ To create a basic map, you only need the Giants Editor. But if you want to creat
491
493
  ## Bugs and feature requests
492
494
  ➡️ Please, before creating an issue or asking some questions, check the [FAQ](docs/FAQ.md) section.<br>
493
495
  If you find a bug or have an idea for a new feature, please create an issue [here](https://github.com/iwatkot/maps4fs/issues) or contact me directly on [Telegram](https://t.me/iwatkot) or on Discord: `iwatkot`.
496
+
497
+ ## Special thanks
498
+
499
+ Of course, first of all, thanks to the direct [contributors](https://github.com/iwatkot/maps4fs/graphs/contributors) of the project.
500
+
501
+ But also, I want to thank the people who helped me with the project in some way, even if they didn't contribute directly. Here's the list of them:
502
+
503
+ - [Ka5tis](https://github.com/Ka5tis) - for investigating the issue with a "spiky terrain" and finding a solution - changing the `DisplacementLayer` size to a higher value.
504
+ - [Kalderone](https://www.youtube.com/@Kalderone_FS22) - for useful feedback, suggestions, expert advice on the map-making process and highlihting some important settings in the Giants Editor.
505
+ - [OneSunnySunday](https://www.artstation.com/onesunnysunday) - for expert advice on Blender, help in processing background terrain, and compiling detailed tutorials on how to prepare the OBJ files for use in Giants Editor.
@@ -2,20 +2,20 @@ maps4fs/__init__.py,sha256=da4jmND2Ths9AffnkAKgzLHNkvKFOc_l21gJisPXqWY,155
2
2
  maps4fs/logger.py,sha256=B-NEYpMjPAAqlV4VpfTi6nbBFnEABVtQOaYe6nMpidg,1489
3
3
  maps4fs/generator/__init__.py,sha256=zZMLEkGzb4z0xql650gOtGSvcgX58DnJ2yN3vC2daRk,43
4
4
  maps4fs/generator/background.py,sha256=dnUkS1atEqqz_ryKkcfP_K9ZcwMHZVs97y-twZMpD44,15881
5
- maps4fs/generator/component.py,sha256=iYQgw2l_rvVpZ-VIhoZELdAe8rPVBwCVKwRsYejDCb0,17094
5
+ maps4fs/generator/component.py,sha256=sihh2S35q0o38leEU-dpi0is6kYCuxXiWUISAtiQErM,17351
6
6
  maps4fs/generator/config.py,sha256=b7qY0luC-_WM_c72Ohtlf4FrB37X5cALInbestSdUsw,4382
7
7
  maps4fs/generator/dem.py,sha256=rc7ADzjvlZzStOqagsWW0Vrm9-X86aPpoR1RhBF_-OE,16025
8
8
  maps4fs/generator/game.py,sha256=2oA77i9lyNYOlhtOZft6KiPTxgGJbX1Gam1TosMNLis,7407
9
- maps4fs/generator/grle.py,sha256=HFOH07RZfkCkIpSj2VSMoBUjhmYDVCFWQQYd4tn6O5o,7162
10
- maps4fs/generator/i3d.py,sha256=GcGyawpE70yVjH9WdgpbNXESZoHYHmCKncl7pp5G1zo,11741
9
+ maps4fs/generator/grle.py,sha256=IVbvzF_azItxLE_ZxaM_suQflEZjJuMgHmv1En51G7A,7592
10
+ maps4fs/generator/i3d.py,sha256=SzjAxYacbBQ030N2sHh9c-dhWoG3iADJqCrHBox6vWI,12268
11
11
  maps4fs/generator/map.py,sha256=7UqLjDZgoY6M0ZxX5Q4Rjee2UGWZ64a3tGyr8B24UO0,4863
12
12
  maps4fs/generator/qgis.py,sha256=Es8hLuqN_KH8lDfnJE6He2rWYbAKJ3RGPn-o87S6CPI,6116
13
13
  maps4fs/generator/texture.py,sha256=uSt563KomSVUndl25IgEIi0YuhBQbnhPIoQKa-4A3_E,26016
14
14
  maps4fs/toolbox/__init__.py,sha256=zZMLEkGzb4z0xql650gOtGSvcgX58DnJ2yN3vC2daRk,43
15
15
  maps4fs/toolbox/background.py,sha256=9BXWNqs_n3HgqDiPztWylgYk_QM4YgBpe6_ZNQAWtSc,2154
16
16
  maps4fs/toolbox/dem.py,sha256=z9IPFNmYbjiigb3t02ZenI3Mo8odd19c5MZbjDEovTo,3525
17
- maps4fs-1.1.2.dist-info/LICENSE.md,sha256=pTKD_oUexcn-yccFCTrMeLkZy0ifLRa-VNcDLqLZaIw,10749
18
- maps4fs-1.1.2.dist-info/METADATA,sha256=SKL15YKdH0I72mdjEJNV7k48crIKdP3KwB4-wPfH_aM,27907
19
- maps4fs-1.1.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
20
- maps4fs-1.1.2.dist-info/top_level.txt,sha256=Ue9DSRlejRQRCaJueB0uLcKrWwsEq9zezfv5dI5mV1M,8
21
- maps4fs-1.1.2.dist-info/RECORD,,
17
+ maps4fs-1.1.5.dist-info/LICENSE.md,sha256=pTKD_oUexcn-yccFCTrMeLkZy0ifLRa-VNcDLqLZaIw,10749
18
+ maps4fs-1.1.5.dist-info/METADATA,sha256=bSEuXs-aIwOLiwLjEzVzObdqJswN6OsgPG8LTXjO1jk,28910
19
+ maps4fs-1.1.5.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
20
+ maps4fs-1.1.5.dist-info/top_level.txt,sha256=Ue9DSRlejRQRCaJueB0uLcKrWwsEq9zezfv5dI5mV1M,8
21
+ maps4fs-1.1.5.dist-info/RECORD,,