add # 新增背景图的优化

This commit is contained in:
2026-10-20 10:39:49 +08:00
parent 54164aeb9c
commit 2761be6c3f
20 changed files with 1644 additions and 102 deletions
+12
View File
@@ -65,6 +65,7 @@ class FarmRenderer:
canvas = self._base(scene, options)
self._plants(canvas, scene, options)
self._pests(canvas, scene, options)
self._decorations(canvas, options, "foreground")
self._panel(canvas, scene, options, avatar)
composed = perf_counter()
content = canvas.encode(codec, options.quality, options.method)
@@ -101,6 +102,7 @@ class FarmRenderer:
f"decorate_{options.theme}_1.jpg", size,
)
canvas = Canvas(background)
self._decorations(canvas, options, "background")
soil_size = tuple(max(1, s(n)) for n in (
self.assets.metadata["soil_size"]
))
@@ -121,6 +123,16 @@ class FarmRenderer:
self.assets.cache.put(key, canvas.image, size[0] * size[1] * 4)
return canvas.copy()
def _decorations(self, canvas, options, layer):
s = lambda n: self._scale(n, options)
for item in self.assets.metadata["decorations"][options.theme]:
if item["layer"] != layer:
continue
image = self.assets.image(
item["sprite"], tuple(max(1, s(n)) for n in item["size"]),
)
canvas.paste(image, tuple(s(n) for n in item["position"]))
def _plants(self, canvas, scene, options):
s = lambda n: self._scale(n, options)
soil_w, soil_h = self.assets.metadata["soil_size"]