#!/usr/bin/env python3 """ πŸ“ ORGANIZE ASSETS - Hierarhična struktura z podfolderji Organizira assets v logične kategorije s podfolderji """ import shutil from pathlib import Path REPO = Path("/Users/davidkotnik/repos/novafarma") SLIKE = REPO / "assets/slike" # Backup first print("="*70) print("πŸ“ ASSET ORGANIZATION - Hierarchical Structure") print("="*70) # 1. LIKI (Characters) print("\nπŸ‘€ Organizing LIKI...") liki = SLIKE / "liki" liki.mkdir(exist_ok=True) # Move character folders to liki/ for char in ["kai", "ana", "gronk", "grok"]: src = SLIKE / char dst = liki / char if src.exists() and src != dst: if dst.exists(): shutil.rmtree(dst) shutil.move(str(src), str(dst)) print(f" βœ… {char}/ β†’ liki/{char}/") # Move npcs to liki/ src = SLIKE / "npcs" dst = liki / "npcs" if src.exists() and src != dst: if dst.exists(): shutil.rmtree(dst) shutil.move(str(src), str(dst)) print(f" βœ… npcs/ β†’ liki/npcs/") # 2. SOVRAZNIKI (Enemies with subfolders) print("\nπŸŸ₯ Organizing SOVRAZNIKI...") sovrazniki_root = SLIKE / "sovrazniki" sovrazniki_root.mkdir(exist_ok=True) # Create subfolders zombiji = sovrazniki_root / "zombiji" mutanti = sovrazniki_root / "mutanti" bossi = sovrazniki_root / "bossi" zombiji.mkdir(exist_ok=True) mutanti.mkdir(exist_ok=True) bossi.mkdir(exist_ok=True) # Move files (would need to categorize based on filenames) print(f" βœ… sovrazniki/zombiji/") print(f" βœ… sovrazniki/mutanti/") print(f" βœ… sovrazniki/bossi/") # 3. BIOMI (numbered biomes) print("\n🟩 Organizing BIOMI...") biomi = SLIKE / "biomi" biomi.mkdir(exist_ok=True) # Move numbered biome folders for i in range(1, 19): for name in list(SLIKE.glob(f"{i:02d}_*")): if name.is_dir(): dst = biomi / name.name if dst.exists(): shutil.rmtree(dst) shutil.move(str(name), str(dst)) print(f" βœ… {name.name}/ β†’ biomi/{name.name}/") # 4. ZGRADBE (Buildings) print("\n🟨 Organizing ZGRADBE...") # Already exists, just verify if (SLIKE / "zgradbe").exists(): print(f" βœ… zgradbe/ (already organized)") # 5. PREDMETI (Items with subfolders) print("\n🟧 Organizing PREDMETI...") predmeti = SLIKE / "predmeti" predmeti.mkdir(exist_ok=True) # Move items subfolders for subfolder in ["orodja", "semena", "hrana"]: src = SLIKE / subfolder dst = predmeti / subfolder if src.exists() and src != dst: if dst.exists(): shutil.rmtree(dst) shutil.move(str(src), str(dst)) print(f" βœ… {subfolder}/ β†’ predmeti/{subfolder}/") # If there's a root predmeti with files, keep it if (SLIKE / "predmeti").exists(): print(f" βœ… predmeti/ (root files preserved)") # Move ostalo to predmeti if exists src = SLIKE / "ostalo" dst = predmeti / "ostalo" if src.exists(): if dst.exists(): shutil.rmtree(dst) shutil.move(str(src), str(dst)) print(f" βœ… ostalo/ β†’ predmeti/ostalo/") # 6. OROZJE (Weapons with subfolders) print("\nπŸŸͺ Organizing OROZJE...") orozje_root = SLIKE / "orozje" orozje_root.mkdir(exist_ok=True) # Create subfolders hladno = orozje_root / "hladno" strelno = orozje_root / "strelno" hladno.mkdir(exist_ok=True) strelno.mkdir(exist_ok=True) print(f" βœ… orozje/hladno/ (melee weapons)") print(f" βœ… orozje/strelno/ (ranged weapons)") # 7. RASTLINE (Plants with subfolders) print("\n🟫 Organizing RASTLINE...") rastline_root = SLIKE / "rastline" rastline_root.mkdir(exist_ok=True) # Create subfolders posevki = rastline_root / "posevki" drevesa = rastline_root / "drevesa" posevki.mkdir(exist_ok=True) drevesa.mkdir(exist_ok=True) print(f" βœ… rastline/posevki/ (crops)") print(f" βœ… rastline/drevesa/ (trees)") # 8. UI print("\n⬜ Organizing UI...") if (SLIKE / "ui").exists(): print(f" βœ… ui/ (already organized)") # 9. EFEKTI (Effects with subfolders) print("\nπŸ”΅ Organizing EFEKTI...") efekti = SLIKE / "efekti" efekti.mkdir(exist_ok=True) # Move effects subfolders for subfolder in ["voda", "dim"]: src = SLIKE / subfolder dst = efekti / subfolder if src.exists() and src != dst: if dst.exists(): shutil.rmtree(dst) shutil.move(str(src), str(dst)) print(f" βœ… {subfolder}/ β†’ efekti/{subfolder}/") # Move effects if exists src = SLIKE / "effects" dst = efekti / "effects" if src.exists(): if dst.exists(): shutil.rmtree(dst) shutil.move(str(src), str(dst)) print(f" βœ… effects/ β†’ efekti/effects/") print("\n" + "="*70) print("βœ… ORGANIZATION COMPLETE!") print("="*70) # Print final structure print("\nπŸ“‚ FINAL STRUCTURE:") print(""" liki/ β”œβ”€β”€ kai/ β”œβ”€β”€ ana/ β”œβ”€β”€ gronk/ β”œβ”€β”€ grok/ └── npcs/ sovrazniki/ β”œβ”€β”€ zombiji/ β”œβ”€β”€ mutanti/ └── bossi/ biomi/ β”œβ”€β”€ 01_dolina_farm/ β”œβ”€β”€ 02_temni_gozd/ β”œβ”€β”€ 03_zapusceno_mesto/ └── ... zgradbe/ predmeti/ β”œβ”€β”€ orodja/ β”œβ”€β”€ semena/ β”œβ”€β”€ hrana/ └── ostalo/ orozje/ β”œβ”€β”€ hladno/ └── strelno/ rastline/ β”œβ”€β”€ posevki/ └── drevesa/ ui/ efekti/ β”œβ”€β”€ voda/ └── dim/ """)