feat: Complete Terrain Setup & Camping Mechanics - Devlog 2026-01-27 08:46
This commit is contained in:
33
scripts/create_camp_assets.py
Normal file
33
scripts/create_camp_assets.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import os
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
def create_directory(path):
|
||||
if not os.path.exists(path):
|
||||
os.makedirs(path)
|
||||
|
||||
create_directory("assets/items")
|
||||
|
||||
def create_placeholder(path, color, size=(64, 64), type='circle'):
|
||||
img = Image.new('RGBA', size, (0, 0, 0, 0))
|
||||
draw = ImageDraw.Draw(img)
|
||||
|
||||
if type == 'circle':
|
||||
draw.ellipse([5, 5, size[0]-5, size[1]-5], fill=color)
|
||||
# Add some "fire" details
|
||||
draw.ellipse([15, 15, size[0]-15, size[1]-15], fill=(255, 100, 0, 255))
|
||||
draw.ellipse([25, 25, size[0]-25, size[1]-25], fill=(255, 255, 0, 255))
|
||||
elif type == 'rect':
|
||||
draw.rectangle([10, 5, size[0]-10, size[1]-5], fill=color)
|
||||
# Pillow
|
||||
draw.rectangle([12, 7, size[0]-12, 20], fill=(200, 200, 200, 255))
|
||||
|
||||
img.save(path)
|
||||
print(f"Generated {path}")
|
||||
|
||||
# Campfire (Orange/Red)
|
||||
create_placeholder("assets/items/campfire.png", (139, 69, 19, 255), size=(64, 64), type='circle')
|
||||
|
||||
# Sleeping Bag (Blue)
|
||||
create_placeholder("assets/items/sleeping_bag.png", (0, 0, 150, 255), size=(64, 100), type='rect')
|
||||
|
||||
print("Camp assets created.")
|
||||
66
scripts/organize_assets.py
Normal file
66
scripts/organize_assets.py
Normal file
@@ -0,0 +1,66 @@
|
||||
import os
|
||||
import shutil
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
def create_directory(path):
|
||||
if not os.path.exists(path):
|
||||
os.makedirs(path)
|
||||
|
||||
# Paths
|
||||
base_assets = "assets"
|
||||
demo_path = "assets/DEMO_FAZA1"
|
||||
|
||||
dirs = ["tiles", "environment", "vegetation"]
|
||||
for d in dirs:
|
||||
create_directory(os.path.join(base_assets, d))
|
||||
|
||||
# 1. Copy/Rename existing
|
||||
mappings = [
|
||||
(f"{demo_path}/Ground/tla_trava_tekstura.png", f"{base_assets}/tiles/trava_osnova.png"),
|
||||
(f"{demo_path}/Environment/mud_puddle.png", f"{base_assets}/environment/blato.png"),
|
||||
(f"{demo_path}/Vegetation/trava_sop.png", f"{base_assets}/vegetation/trava_rob.png"),
|
||||
(f"{demo_path}/Vegetation/drevo_veliko.png", f"{base_assets}/vegetation/drevo_navadno.png"),
|
||||
(f"{demo_path}/Characters/Kai_Dreads.png", f"{base_assets}/kai.png") # Simplification for retrieval if needed, but not strictly asked to move Kai. User said "Kai (Igralec)". I'll keep Kai in DEMO for now but maybe copy for consistency if needed. Actually user code request implies loading 'kai' from 'assets/kai_character.png' in the example? No, they just said "assets/kai_character.png" in their *example code*, but "1. Organizacija in generiranje slik... Preveri obstoj naslednjih slik" list didn't include Kai. I will load Kai from the original location or copy it to root assets for simplicity. Let's copy it to `assets/characters/kai.png` (create folder first) to be clean.
|
||||
]
|
||||
|
||||
create_directory(f"{base_assets}/characters")
|
||||
mappings.append((f"{demo_path}/Characters/Kai_Dreads.png", f"{base_assets}/characters/kai.png"))
|
||||
|
||||
for src, dst in mappings:
|
||||
if os.path.exists(src):
|
||||
shutil.copy(src, dst)
|
||||
print(f"Copied {src} to {dst}")
|
||||
else:
|
||||
print(f"Source missing: {src}")
|
||||
|
||||
# 2. Generate placeholders
|
||||
def create_placeholder(path, color, size=(256, 256), alpha=255):
|
||||
img = Image.new('RGBA', size, (0, 0, 0, 0))
|
||||
draw = ImageDraw.Draw(img)
|
||||
|
||||
# Draw simple shape (Circle or Rect)
|
||||
r, g, b = color
|
||||
fill_color = (r, g, b, alpha)
|
||||
|
||||
# Irregular shape for fluids/roads? Just a circle for now for "blato" logic (already copied),
|
||||
# but for road/water placeholders let's do soft shapes or rects.
|
||||
# Road: Rect? Water: Circle?
|
||||
|
||||
if "cesta" in path:
|
||||
draw.rectangle([0, 0, size[0], size[1]], fill=fill_color)
|
||||
else:
|
||||
draw.ellipse([10, 10, size[0]-10, size[1]-10], fill=fill_color)
|
||||
|
||||
img.save(path)
|
||||
print(f"Generated {path}")
|
||||
|
||||
# environment/cesta_svetla.png (Svetlo rjava/peščena)
|
||||
create_placeholder(f"{base_assets}/environment/cesta_svetla.png", (210, 180, 140), size=(256, 256))
|
||||
|
||||
# environment/voda_cista.png (Modra, 80 % prosojna -> alpha ~204)
|
||||
create_placeholder(f"{base_assets}/environment/voda_cista.png", (0, 150, 255), size=(256, 256), alpha=204)
|
||||
|
||||
# environment/voda_umazana.png (Rjavkasto-zelena voda)
|
||||
create_placeholder(f"{base_assets}/environment/voda_umazana.png", (100, 120, 50), size=(256, 256), alpha=230)
|
||||
|
||||
print("Assets organized.")
|
||||
32
scripts/prepare_grass_variations.py
Normal file
32
scripts/prepare_grass_variations.py
Normal file
@@ -0,0 +1,32 @@
|
||||
import os
|
||||
import shutil
|
||||
|
||||
src_base = "assets/DEMO_FAZA1/Vegetation"
|
||||
dst_base = "assets/vegetation"
|
||||
|
||||
mapping = {
|
||||
"trava_sop.png": "trava_zelena.png",
|
||||
"visoka_trava.png": "trava_suha.png",
|
||||
"grass_cluster_dense.png": "trava_divja.png"
|
||||
}
|
||||
|
||||
for src_name, dst_name in mapping.items():
|
||||
src = os.path.join(src_base, src_name)
|
||||
dst = os.path.join(dst_base, dst_name)
|
||||
|
||||
if os.path.exists(src):
|
||||
shutil.copy(src, dst)
|
||||
print(f"Copied {src_name} -> {dst_name}")
|
||||
else:
|
||||
# Fallback: Generate if missing
|
||||
print(f"Missing {src_name}, generating placeholder for {dst_name}")
|
||||
from PIL import Image, ImageDraw
|
||||
img = Image.new('RGBA', (64, 64), (0,0,0,0))
|
||||
draw = ImageDraw.Draw(img)
|
||||
color = (0, 255, 0)
|
||||
if "suha" in dst_name: color = (200, 200, 100)
|
||||
if "divja" in dst_name: color = (0, 100, 0)
|
||||
draw.ellipse([10, 10, 54, 54], fill=color + (200,))
|
||||
img.save(dst)
|
||||
|
||||
print("Vegetation variation ready.")
|
||||
Reference in New Issue
Block a user