feat: eval/exec of strings, gallery Replay, callable actions; iNSight and SomethingBetter now pass
- pyparse.ts: parser for expressions and simple statements built at run time, producing
the sandbox's own IR; backs eval() and exec() (e.g. exec("persistent." + var + " = 0"))
- Replay/EndReplay and renpy.end_replay: the engine stashes the full game state, runs the
label with the given scope and restores everything when it ends; locked replays are
insensitive. Save loading shared as applySave()
- Screen actions are callable (MainMenu(confirm=False)())
- jump main_menu_screen is Ren'Py's own label: it opens the player's main menu
- Screens: a closing quote ends the word before a letter ("text"size 15) but not before
an operator ("a"+b); Text(...) pictures in image blocks
- README: current capabilities and limits of the Ren'Py support
Strict compatibility check on the local collection: Tomie, Twisted-Thoughts, Hooked,
iNSight-of-you and SomethingBetter pass; TheFixer (custom AlphaMask wardrobe, missing
labels) and That_New_Teacher (custom statements, Render API) do not.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3923ee72fb
commit
3ac4f0371f
11 files changed
+448
-36
No files matched your search
@@ -133,16 +133,23 @@ python -m tests.make_sample sample.zip # тестовая игра (из ba
|
||||
|
||||
Python игры выполняется в песочнице плеера: свои `def` и `class` (наследование,
|
||||
`super()`, свойства, замыкания, `lambda`, `*args`/`**kwargs`), `try`/`except`/
|
||||
`finally`, `raise`, `assert`, `for`/`while … else`, comprehension. ATL: движение
|
||||
(`linear`/`ease`/`easein`/`easeout`), `pause`, `repeat`, `parallel`, `choice`,
|
||||
`block`, `on show`/`on hide`, вызов других transform.
|
||||
`finally`, `raise`, `assert`, `match`, `for`/`while … else`, comprehension, модули
|
||||
`re`, `copy`, `time`, `datetime`, `collections.defaultdict`, `functools.partial`.
|
||||
Код, который ждёт игрока (`renpy.input`, `narrator()`, реплики персонажей, `renpy.pause`,
|
||||
`renpy.display_menu`, `renpy.call_screen`), работает внутри циклов и функций. `eval` и `exec`
|
||||
строк разбираются своим парсером выражений и простых операторов.
|
||||
|
||||
ATL: движение (`linear`/`ease`/`easein`/`easeout`), `pause`, `repeat`, `parallel`, `choice`,
|
||||
`block`, `on show`/`on hide`/`on hover`, `contains`, `time`, `function`, смена картинок с
|
||||
`with dissolve`, параметры и вызов других transform, `matrixcolor`, `blur`. Просмотр сцен из
|
||||
галереи (`Replay`/`EndReplay`).
|
||||
|
||||
Экраны игры (`screen`, `call screen`, `show screen`) и их действия — см.
|
||||
[docs/SCREENS.md](docs/SCREENS.md).
|
||||
|
||||
Пока **не** поддерживается: в экранах — `input`, `imagemap`, `mousearea`, `drag`, `side`, в ATL —
|
||||
`function`, `time`, `contains`, `matrixcolor` и шейдеры,
|
||||
в Python — специальные методы кроме `__init__`/`__str__`/`__repr__`, генераторы,
|
||||
`with`, системные модули (`os`, `socket`, …) и картинки, которые игра вычисляет
|
||||
своими функциями. Такие места перечислены в отчёте конвертации у версии и
|
||||
останавливают импорт. Игры-«песочницы» на `renpy.ui.*` и `im.*` пока не играбельны.
|
||||
Пока **не** поддерживается: в экранах — `imagemap`, `mousearea`, `drag`, `side`; шейдеры
|
||||
(выбрасываются как чисто графические); `AlphaMask` и transform, в теле которого картинка;
|
||||
в Python — специальные методы кроме `__init__`/`__str__`/`__repr__`, генераторы, `with`,
|
||||
системные модули (`os`, `socket`, …), а также собственные операторы и внутренности движка
|
||||
(`renpy.register_statement`, `renpy.Render`). Такие места перечислены в отчёте конвертации
|
||||
у версии и останавливают импорт.
|
||||
Reference in new issue
Block a user