Files
mrleo1nidandClaude Sonnet 5.5 12ec82c7e6 refactor: move game-specific import logic into profiles; unblock Tomie import
- 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>
2026-10-25 11:35:23 +03:00

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}