Complete Cocos Creator port with level bundles, themes, and tooling.

Adds level prefabs, theme assets, audio, extensions, and deployment scripts for the Unity WebGL migration.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-16 15:30:58 +08:00
parent cba5105908
commit d393302388
6248 changed files with 17322729 additions and 11036 deletions

View File

@@ -0,0 +1,82 @@
#!/usr/bin/env python3
"""从载具 F/B 贴图生成四向 N/E/S/W 资源E/W 为 F/B 水平镜像N/S 复制 B/F"""
from __future__ import annotations
import shutil
import subprocess
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
TEX = ROOT / "assets" / "resources" / "textures"
# theme folder -> ship 文件名前缀(不含 _F/_B
THEMES: dict[str, str] = {
"silu": "siluShip",
"sanxing": "sanxingShip",
"snow": "snowShip",
"chinese": "chineseShip",
"numMan": "numManShip",
"redArmy": "redArmyShip",
}
def flip_horizontal(src: Path, dst: Path) -> None:
dst.parent.mkdir(parents=True, exist_ok=True)
try:
subprocess.run(
["sips", "-f", "horizontal", str(src), "--out", str(dst)],
check=True,
capture_output=True,
)
except (subprocess.CalledProcessError, FileNotFoundError):
try:
from PIL import Image
Image.open(src).transpose(Image.FLIP_LEFT_RIGHT).save(dst)
except ImportError as e:
raise SystemExit(
"需要 macOS sips 或 pip install Pillow 才能生成 E/W 镜像贴图"
) from e
def copy_meta(src_meta: Path, dst_meta: Path) -> None:
if src_meta.is_file():
shutil.copy2(src_meta, dst_meta)
def generate_for_theme(folder: str, prefix: str) -> None:
base = TEX / folder
f_png = base / f"{prefix}_F.png"
b_png = base / f"{prefix}_B.png"
if not f_png.is_file() or not b_png.is_file():
print(f" skip {folder}: missing {prefix}_F/_B")
return
n_png = base / f"{prefix}_N.png"
s_png = base / f"{prefix}_S.png"
e_png = base / f"{prefix}_E.png"
w_png = base / f"{prefix}_W.png"
shutil.copy2(b_png, n_png)
shutil.copy2(f_png, s_png)
flip_horizontal(f_png, e_png)
flip_horizontal(b_png, w_png)
copy_meta(b_png.with_suffix(".png.meta"), n_png.with_suffix(".png.meta"))
copy_meta(f_png.with_suffix(".png.meta"), s_png.with_suffix(".png.meta"))
copy_meta(f_png.with_suffix(".png.meta"), e_png.with_suffix(".png.meta"))
copy_meta(b_png.with_suffix(".png.meta"), w_png.with_suffix(".png.meta"))
print(f" ok {folder}: {prefix}_{{N,E,S,W}}.png")
def main() -> int:
print(f"textures root: {TEX}")
for folder, prefix in THEMES.items():
generate_for_theme(folder, prefix)
print("done — 请在 Creator 中刷新 assets/resources/textures")
return 0
if __name__ == "__main__":
sys.exit(main())