Fix crashes, remove Gronk, add Water/Wind anims, fix Tiled paths, clean plants assets
This commit is contained in:
109
scripts/process_gronk_full.py
Normal file
109
scripts/process_gronk_full.py
Normal file
@@ -0,0 +1,109 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
🧛♂️ GRONK FULL PROCESSING
|
||||
Generates a complete sprite sheet for Gronk with background removal.
|
||||
Output Format: 5 Rows x 4 Columns
|
||||
Row 0: Walk Down (4 frames)
|
||||
Row 1: Walk Right (4 frames)
|
||||
Row 2: Walk Up (4 frames - note: only 3 source files found, will dup frame 2)
|
||||
Row 3: Vape (4 frames)
|
||||
Row 4: Idle (3 frames: Down, Right, Up)
|
||||
"""
|
||||
|
||||
import os
|
||||
from rembg import remove
|
||||
from PIL import Image
|
||||
|
||||
INPUT_DIR = "assets/slike 🟢/demo 🔴/characters 🔴/gronk"
|
||||
OUTPUT_DIR = "assets/characters"
|
||||
OUTPUT_SHEET = "gronk_full_sheet.png"
|
||||
|
||||
# Target frame size
|
||||
W, H = 128, 128
|
||||
|
||||
# File mappings corresponding to rows
|
||||
ROWS = [
|
||||
# Row 0: Walk Down
|
||||
[
|
||||
"gronk_walk_down_01_1767408359188.png",
|
||||
"gronk_walk_down_02_1767408376011.png",
|
||||
"gronk_walk_down_03_1767408392737.png",
|
||||
"gronk_walk_down_04_1767408407769.png"
|
||||
],
|
||||
# Row 1: Walk Right
|
||||
[
|
||||
"gronk_walk_right_01_1767408494468.png",
|
||||
"gronk_walk_right_02_1767408509256.png",
|
||||
"gronk_walk_right_03_1767408524931.png",
|
||||
"gronk_walk_right_04_1767408540208.png"
|
||||
],
|
||||
# Row 2: Walk Up (Only 3 files found in list, duplicating middle for 4-frame cycle 1-2-3-2)
|
||||
[
|
||||
"gronk_walk_up_01_1767408423382.png",
|
||||
"gronk_walk_up_02_1767408438192.png",
|
||||
"gronk_walk_up_03_1767408452582.png",
|
||||
"gronk_walk_up_02_1767408438192.png" # Duplicate for loop
|
||||
],
|
||||
# Row 3: Vape
|
||||
[
|
||||
"gronk_vape_01_1767408553955.png",
|
||||
"gronk_vape_02_1767408567935.png",
|
||||
"gronk_vape_03_1767408582938.png",
|
||||
"gronk_vape_04_1767408599735.png"
|
||||
],
|
||||
# Row 4: Idle (Down, Right, Up) + 1 Empty
|
||||
[
|
||||
"gronk_idle_down_1767408310253.png",
|
||||
"gronk_idle_right_1767408343383.png",
|
||||
"gronk_idle_up_1767408324452.png",
|
||||
None # Empty slot
|
||||
]
|
||||
]
|
||||
|
||||
def main():
|
||||
print("🧛♂️ PROCESSING GRONK FULL SHEET...")
|
||||
os.makedirs(OUTPUT_DIR, exist_ok=True)
|
||||
|
||||
# Create master sheet
|
||||
sheet_width = W * 4
|
||||
sheet_height = H * 5
|
||||
full_sheet = Image.new("RGBA", (sheet_width, sheet_height))
|
||||
|
||||
for row_idx, file_list in enumerate(ROWS):
|
||||
print(f" 📌 Processing Row {row_idx}...")
|
||||
for col_idx, filename in enumerate(file_list):
|
||||
if not filename:
|
||||
continue
|
||||
|
||||
path = os.path.join(INPUT_DIR, filename)
|
||||
if not os.path.exists(path):
|
||||
print(f" ❌ File not found: {filename}")
|
||||
continue
|
||||
|
||||
# Process Image
|
||||
try:
|
||||
img = Image.open(path)
|
||||
|
||||
# 1. Remove Background
|
||||
img = remove(img)
|
||||
|
||||
# 2. Resize
|
||||
img = img.resize((W, H), Image.LANCZOS)
|
||||
|
||||
# 3. Paste into sheet
|
||||
x = col_idx * W
|
||||
y = row_idx * H
|
||||
full_sheet.paste(img, (x, y))
|
||||
print(f" ✅ Placed {filename} at ({x}, {y})")
|
||||
|
||||
except Exception as e:
|
||||
print(f" ⚠️ Error processing {filename}: {e}")
|
||||
|
||||
# Save
|
||||
out_path = os.path.join(OUTPUT_DIR, OUTPUT_SHEET)
|
||||
full_sheet.save(out_path)
|
||||
print(f"✨ Saved FULL spritesheet to: {out_path}")
|
||||
print(f" Size: {sheet_width}x{sheet_height}")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user