- Add app/games: GameProfile base, registry, ReaderHooks and renpy/naninovel/ tomie profiles. pipeline, preflight, detect and mods dispatch via the registry - Move tomie_* converter modules to app/games/tomie and split out reader hooks, import, mod validation and known defects - Tolerate the 31 authoring defects of the pinned Tomie build as report warnings (exact list, per-script counts); any new defect still blocks import - Frontend: runtime registry (runtimes.ts) with lazy Tomie launcher - Add profile/registry tests and docs/GAME_PROFILES.md; update IMPORT.md Full media export of the original Tomie build is not yet verified. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
24 lines
926 B
Python
24 lines
926 B
Python
"""Ren'Py: the conversion runs in ``app.converter.pipeline`` because it also handles archives."""
|
|
from pathlib import Path
|
|
|
|
from app.converter.compatibility import CompatibilityError, Issue
|
|
from app.games.base import GameProfile
|
|
|
|
|
|
class RenPyProfile(GameProfile):
|
|
id = "renpy"
|
|
engine = "renpy"
|
|
#: Converted by ``pipeline.convert_archive`` (archive unpacking, RPA, media in one pass).
|
|
converts_in_pipeline = True
|
|
|
|
def inspect(self, root: Path, work: Path | None = None) -> dict:
|
|
from app.converter.analyze import analyze
|
|
|
|
report = analyze(root)
|
|
issues = [Issue(**issue) for issue in report.pop("issues", [])]
|
|
if not report["hasStart"]:
|
|
issues.append(Issue("missing_entry", "Не найдена точка входа start"))
|
|
if issues:
|
|
raise CompatibilityError("renpy", issues)
|
|
return {"engine": "renpy", "compatible": True, **report}
|