from PIL import Image, ImageDraw, ImageFont
import os

# 📐 הגדרות רזולוציה
WIDTH, HEIGHT = 240, 320

# יצירת 3 התיקיות הנדרשות
FOLDERS = ["part0", "part1", "part2"]
for folder in FOLDERS:
    os.makedirs(folder, exist_ok=True)

# 🖼️ טעינת תמונת הרקע הקיימת
bg_image_path = "background.png"
try:
    if os.path.exists(bg_image_path):
        base_img = Image.open(bg_image_path).convert("RGB")
        base_img = base_img.resize((WIDTH, HEIGHT), Image.Resampling.LANCZOS)
        print("✅ תמונת הרקע נטענה בהצלחה!")
    else:
        base_img = Image.new("RGB", (WIDTH, HEIGHT), color=(15, 23, 42))
        print("⚠️ תמונת הרקע לא נמצאה, נוצר רקע ברירת מחדל.")
except Exception as e:
    base_img = Image.new("RGB", (WIDTH, HEIGHT), color=(15, 23, 42))
    print(f"שגיאה: {e}")

# הגדרת השורות המקוריות (זיהוי שפה לכל שורה)
raw_lines = [
    ("he", "הקושחה המקוסטמת הזו"),
    ("he", "פותחה על ידי"),
    ("en", "@kernel"),
    ("he", "ממתמחים טופ"),
    ("en", ""),
    ("en", "Custom firmware"),
    ("en", "developed by @kernel"),
    ("en", "from Mitmachim Top")
]

# 🔤 טעינת פונט
try:
    font = ImageFont.truetype("arial.ttf", 14)
except IOError:
    font = ImageFont.load_default()

# --- שלב 1: תיקייה part0 (רקע נקי סטטי בהתחלה) ---
print("📁 יוצר את פריימים של part0...")
for i in range(15):
    img = base_img.copy()
    img.save(os.path.join("part0", f"{i:05d}.png"))

# --- שלב 2: תיקייה part1 (הקלדה חלקה, עקבית וזורמת של כל הטקסטים יחד) ---
print("📁 יוצר את פריימים של part1 (הקלדה חלקה ומתמשכת)...")

max_len = max(len(text) for _, text in raw_lines)
frame_idx = 0

# לולאה שבונה את הטקסט תובר-אחר-תו באופן חלק עבור כל השורות במקביל
for i in range(max_len + 1):
    img = base_img.copy()
    draw = ImageDraw.Draw(img)
    
    current_frame_lines = []
    for lang, text in raw_lines:
        # חיתוך חלק יחסי מכל שורה לפי שלב ההקלדה הנוכחי
        sub_text = text[:i]
        if lang == "he" and sub_text:
            # היפוך נכון של תת-המחרוזת העברית כדי שתופיע בצורה חלקה וטבעית
            current_frame_lines.append(sub_text[::-1])
        else:
            current_frame_lines.append(sub_text)
            
    current_full_text = "\n".join(current_frame_lines)
    draw.multiline_text((15, 50), current_full_text, fill=(255, 255, 255), font=font, spacing=6)
    img.save(os.path.join("part1", f"{frame_idx:05d}.png"))
    frame_idx += 1

# --- שלב 3: תיקייה part2 (הצגת הטקסט המלא קבוע בסוף) ---
print("📁 יוצר את פריימים של part2 (סיום קפוא)...")
final_lines = []
for lang, text in raw_lines:
    if lang == "he" and text:
        final_lines.append(text[::-1])
    else:
        final_lines.append(text)
final_full_text = "\n".join(final_lines)

for i in range(45):
    img = base_img.copy()
    draw = ImageDraw.Draw(img)
    draw.multiline_text((15, 50), final_full_text, fill=(255, 255, 255), font=font, spacing=6)
    img.save(os.path.join("part2", f"{i:05d}.png"))

# --- יצירת קובץ desc.txt תואם ל-3 החלקים ---
desc_content = f"""240 320 30
p 1 0 part0
p 1 0 part1
p 0 0 part2
"""

with open("desc.txt", "w", encoding="utf-8") as f:
    f.write(desc_content)

print("🎉 הכל מוכן בהצלחה! הקלדה רציפה, חלקה ובכיוונים הנכונים לכל השפות! 🚀🔥")