From 650f87c6edee3a21b0588d80f351436b8eb21aa9 Mon Sep 17 00:00:00 2001 From: iisaev Date: Thu, 29 Oct 2026 09:25:53 +0100 Subject: [PATCH] Add the doc_shots documentation screenshot suite; mod documentation --- docs/assets/bar-text.jpg | Bin 0 -> 56596 bytes docs/assets/town-choice.jpg | Bin 0 -> 68719 bytes docs/assets/town-text.jpg | Bin 0 -> 71683 bytes docs/en.md | 99 +++++ docs/es.md | 99 +++++ docs/ja.md | 99 +++++ docs/ko.md | 99 +++++ docs/ru.md | 99 +++++ docs/vi.md | 99 +++++ docs/zh.md | 99 +++++ locale/en.properties | 2 +- locale/es.properties | 2 +- locale/ja.properties | 2 +- locale/ko.properties | 2 +- locale/ru.properties | 2 +- locale/vi.properties | 2 +- locale/zh.properties | 2 +- manifest.json | 5 +- test_suites/doc_shots/manifest.json | 7 + test_suites/doc_shots/src/DocShotsDriver.cs | 415 ++++++++++++++++++ .../doc_shots/src/DocShotsTestInitializer.cs | 41 ++ 21 files changed, 1166 insertions(+), 9 deletions(-) create mode 100644 docs/assets/bar-text.jpg create mode 100644 docs/assets/town-choice.jpg create mode 100644 docs/assets/town-text.jpg create mode 100644 docs/en.md create mode 100644 docs/es.md create mode 100644 docs/ja.md create mode 100644 docs/ko.md create mode 100644 docs/ru.md create mode 100644 docs/vi.md create mode 100644 docs/zh.md create mode 100644 test_suites/doc_shots/manifest.json create mode 100644 test_suites/doc_shots/src/DocShotsDriver.cs create mode 100644 test_suites/doc_shots/src/DocShotsTestInitializer.cs diff --git a/docs/assets/bar-text.jpg b/docs/assets/bar-text.jpg new file mode 100644 index 0000000000000000000000000000000000000000..52d6b948a04ac6bd4252f6c5efa4fc38c9f9418a GIT binary patch literal 56596 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%0A?UjNf20XAu^m+;Z|iP3RkzVK?j_ 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 literal 0 HcmV?d00001 diff --git a/docs/assets/town-text.jpg b/docs/assets/town-text.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94ae6fc6fa54e82fea1f974039626266f347f960 GIT binary patch literal 71683 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

H$!n*j-nmkcU?u0Wip{|xh6tdD`~h0 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 z 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 :bar +option "Go back home" key=my_novel/town/opt_home -> :home + +:bar +switch_scene my_novel_bar +end + +:home +switch_scene my_novel_home +end +``` + +- **The header** above `---` says when the scenario plays: `scene:` names the scene, `priority:` orders several scenarios of one scene (lower plays first). More header lines are below. +- `text "…"` shows a line and waits for a click. `key=` is the translation key of the line; the quoted text is what is shown when no translation is found. +- `select` asks a question, and each `option` is an answer that jumps to a **label** (`-> :bar`). +- `:bar` is a label; `switch_scene` goes to another scene; `end` finishes the scenario. +- A line starting with `#` is a note for the author. + +To add a story to a scene, put a `.scenario` file anywhere in your mod's `scenarios/` folder and name the scene in its header. + +## Writing a story + +**Lines and portraits.** `text "…" first=marao/sad` shows a portrait in the first place, `second=…` in the second (see Characters Engine). `ptext` is the same as `text`, and also replaces `${name}` with the value of a variable. `title "…"` shows a chapter title. + +**Choices and jumps.** An answer can be shown only when a condition holds: `option "Pay" "if=item('money/coin') >= 5" -> :pay` (a condition with spaces is quoted together with `if=`). `goto -> :label` jumps without asking. `when "" -> :label` jumps if the condition holds at that moment: + +```scenario +when "rpg_wolf_dead == 1" -> :lantern +``` + +**Remembering things.** `flag rpg_quest_taken 1` sets a story flag that is saved with the game; conditions read it as `rpg_quest_taken == 1`. `set name value` sets a variable of the running dialog; `ptext` shows it as `${name}` and actions can read it. + +**Conditions** are one shared language: flags, `item('id')` from Items Base, quest checks from Quests Engine, stats and equipment from their mods, joined with `&&`, `||` and `!`. + +**The scene.** `background`, `foreground`, `background_color`, `music`, `sound`, `effect`, `delay`, `light_set`, `hide_dialog`/`show_dialog`, `interactive_add`/`interactive_remove`, `notify`. + +**Game actions.** `action key=value …` runs an action of another mod, for example `action item.add id=money/coin count=3` or `action quest.set_status quest_id=woodland_ward status=Progress`. The schema files of the mods list the actions, and Editor Tools offers them in its scenario editor and command palette. + +## When a scenario plays + +The header decides it: + +```scenario +scene: prolog_alley +priority: 15 +condition: AwakeningQuest.notHasTag("cloak_taken") +is_one_run: true +save_allowed: true +--- +``` + +- `scene:` — the scene where it plays when the player arrives. +- `priority:` — order among scenarios of the same scene; the lowest number that may play goes first, and the next one starts when the dialog ends. +- `condition:` — it plays only while the condition holds; when a flag or quest changes, the scene checks again. +- `is_one_run: true` — it plays only once per game. +- `after:` — it waits until the named scenario has played. +- `save_allowed: true` — the player may save in this scene. + +A scenario without a `scene:` header is not started by a scene; it is run by something else, such as a click on an interactive object or a map event. + +## Other mods add and replace scenarios + +Scenarios of all mods are collected together. A mod adds a story to someone else's scene simply by naming that scene. A mod that depends on another and ships a scenario with the same file name replaces it. + +## If something goes wrong + +1. **A scenario never plays.** Its `scene:` name is wrong, its `condition` is false, or it has `is_one_run` and has already played. +2. **The line is shown in the wrong language.** The `key=` is missing from the mod's `locale` files for that language; the quoted text is shown instead. +3. **An answer leads nowhere.** The label after `->` must exist in the same file, written with a colon (`:bar`). +4. **An `action` does nothing.** The mod that owns the action is not part of the game (the log says the action "is not registered"), or a parameter name is wrong — compare it with the action in the scenario editor of Editor Tools. diff --git a/docs/es.md b/docs/es.md new file mode 100644 index 0000000..f019f5e --- /dev/null +++ b/docs/es.md @@ -0,0 +1,99 @@ +# Dialog Engine — la caja de diálogo y el lenguaje de escenarios + +Dialog Engine es lo que el jugador lee y pulsa: la caja de diálogo con sus líneas, retratos y respuestas. Detrás está el **lenguaje de escenarios** — pequeños archivos de texto `.scenario` en los que la historia se escribe línea a línea: quién dice qué, qué respuestas hay, adónde conduce cada una y qué ocurre en el juego (un fondo nuevo, música, un objeto, un paso de misión, otra escena). Con él cuentan su historia todos los juegos de la colección, desde la plantilla de novela hasta RPG Plus. + +## Lo que ve el jugador + +El escenario de una escena arranca solo cuando el jugador entra en ella. Las líneas aparecen en la caja inferior; un clic muestra la siguiente: + +![El pueblo de My Novel: la calle de tarde, y en la caja de diálogo la línea «El pueblo, al anochecer. Las farolas ya están encendidas y un aire fresco corre entre los adoquines».](assets/town-text.jpg) + +Cuando la historia hace una pregunta, las respuestas aparecen a la derecha, y espera a que se elija una: + +![La pregunta «¿A dónde ir?» en la caja de diálogo y sus dos respuestas a la derecha: «Entrar al bar» y «Volver a casa».](assets/town-choice.jpg) + +«Entrar al bar» lleva al jugador a la escena del bar, que arranca su propio escenario: + +![El bar de My Novel con su primera línea en la caja de diálogo.](assets/bar-text.jpg) + +## El escenario detrás de estas imágenes + +Este es el escenario completo del pueblo de la plantilla de novela (`my_novel_game/scenarios/my_novel_town.scenario`): + +```scenario +scene: my_novel_town +priority: 10 +--- +# El pueblo es el centro: en cada visita aparece la misma elección. +text "El pueblo, al anochecer. Las farolas ya están encendidas y un aire fresco corre entre los adoquines." key=my_novel/town/intro +select "¿A dónde ir?" key=my_novel/town/prompt +option "Entrar al bar" key=my_novel/town/opt_bar -> :bar +option "Volver a casa" key=my_novel/town/opt_home -> :home + +:bar +switch_scene my_novel_bar +end + +:home +switch_scene my_novel_home +end +``` + +- **La cabecera**, sobre `---`, dice cuándo se reproduce el escenario: `scene:` nombra la escena y `priority:` ordena varios escenarios de una misma escena (se reproduce antes el número más bajo). Más adelante hay más líneas de cabecera. +- `text "…"` muestra una línea y espera un clic. `key=` es la clave de traducción de la línea; el texto entrecomillado es lo que se muestra cuando no hay traducción. +- `select` plantea una pregunta, y cada `option` es una respuesta que salta a una **etiqueta** (`-> :bar`). +- `:bar` es una etiqueta; `switch_scene` pasa a otra escena; `end` termina el escenario. +- Una línea que empieza por `#` es una nota para el autor. + +Para añadir una historia a una escena, coloca un archivo `.scenario` en cualquier punto de la carpeta `scenarios/` de tu mod y nombra la escena en la cabecera. + +## Escribir una historia + +**Líneas y retratos.** `text "…" first=marao/sad` muestra un retrato en el primer puesto, `second=…` en el segundo (véase Characters Engine). `ptext` hace lo mismo que `text` y además sustituye `${name}` por el valor de una variable. `title "…"` muestra el título de un capítulo. + +**Opciones y saltos.** Una respuesta puede mostrarse solo mientras se cumpla una condición: `option "Pay" "if=item('money/coin') >= 5" -> :pay` (una condición con espacios se entrecomilla junto con `if=`). `goto -> :label` salta sin preguntar. `when "" -> :label` salta si la condición se cumple en ese momento: + +```scenario +when "rpg_wolf_dead == 1" -> :lantern +``` + +**Recordar cosas.** `flag rpg_quest_taken 1` activa un marcador argumental que se guarda con la partida; las condiciones lo leen como `rpg_quest_taken == 1`. `set name value` asigna una variable del diálogo en curso: `ptext` la muestra como `${name}` y las acciones pueden leerla. + +**Las condiciones** son un único lenguaje común: marcadores, `item('id')` de Items Base, comprobaciones de misiones de Quests Engine, atributos y equipo de sus respectivos mods, unidos con `&&`, `||` y `!`. + +**La escena.** `background`, `foreground`, `background_color`, `music`, `sound`, `effect`, `delay`, `light_set`, `hide_dialog`/`show_dialog`, `interactive_add`/`interactive_remove`, `notify`. + +**Acciones de juego.** `action key=value …` ejecuta una acción de otro mod, por ejemplo `action item.add id=money/coin count=3` o `action quest.set_status quest_id=woodland_ward status=Progress`. Los archivos schema de los mods enumeran las acciones, y Editor Tools las ofrece en su editor de escenarios y en la paleta de comandos. + +## Cuándo se reproduce un escenario + +Lo decide la cabecera: + +```scenario +scene: prolog_alley +priority: 15 +condition: AwakeningQuest.notHasTag("cloak_taken") +is_one_run: true +save_allowed: true +--- +``` + +- `scene:` — la escena donde se reproduce cuando el jugador llega. +- `priority:` — el orden entre los escenarios de una misma escena; va primero el número más bajo que pueda reproducirse, y el siguiente empieza cuando termina el diálogo. +- `condition:` — solo se reproduce mientras se cumple la condición; cuando cambia un marcador o una misión, la escena vuelve a comprobar. +- `is_one_run: true` — se reproduce una sola vez por partida. +- `after:` — espera a que se haya reproducido el escenario indicado. +- `save_allowed: true` — el jugador puede guardar en esta escena. + +Un escenario sin cabecera `scene:` no lo arranca ninguna escena: lo ejecuta otra cosa, como un clic sobre un objeto interactivo o un evento del mapa. + +## Los demás mods añaden y reemplazan escenarios + +Los escenarios de todos los mods se reúnen en un mismo conjunto. Un mod añade una historia a la escena de otro con solo nombrarla. Y un mod que depende de otro e incluye un escenario con el mismo nombre de archivo lo reemplaza. + +## Si algo falla + +1. **El escenario nunca se reproduce.** El nombre de `scene:` es incorrecto, la `condition` es falsa, o tiene `is_one_run` y ya se reprodujo. +2. **La línea aparece en otro idioma.** Falta la clave `key=` en los archivos `locale` del mod para ese idioma, y se muestra el texto entrecomillado. +3. **Una respuesta no lleva a ninguna parte.** La etiqueta tras `->` debe existir en el mismo archivo, escrita con dos puntos (`:bar`). +4. **Una `action` no hace nada.** El mod dueño de la acción no forma parte del juego (el registro dice que la acción "is not registered") o hay un nombre de parámetro equivocado: compáralo con la acción en el editor de escenarios de Editor Tools. diff --git a/docs/ja.md b/docs/ja.md new file mode 100644 index 0000000..4affb87 --- /dev/null +++ b/docs/ja.md @@ -0,0 +1,99 @@ +# Dialog Engine — ダイアログボックスとシナリオ言語 + +Dialog Engine は、プレイヤーが読んでクリックする部分すべてを担います。台詞・ポートレート・選択肢を表示するダイアログボックスであり、その背後には**シナリオ言語**があります。`.scenario` という小さなテキストファイルに物語を一行ずつ書いていく言語で、誰が何を言うか、どんな選択肢があり、それぞれがどこへ続くか、ゲーム内で何が起きるか(背景の切り替え、音楽、アイテム、クエストの進行、別シーンへの移動)をすべて記述します。コレクションに収録されたすべてのゲームが、小説テンプレートから RPG Plus まで、この言語で物語を語ります。 + +## プレイヤーに見えるもの + +シーンに入ると、そのシーンのシナリオは自動的に始まります。台詞が画面下部のボックスに表示され、クリックで次の台詞に進みます。 + +![My Novel の町: 夕暮れの通り。ダイアログボックスには「夕暮れの町。街灯はすでにともり、石畳を涼しい風が抜けていく」という台詞が表示されています。](assets/town-text.jpg) + +物語が何かを尋ねるときは、選択肢が右側に現れます。選ばれるまで物語は待ちます。 + +![ダイアログボックスに表示された質問「どこへ行く?」と、右側の二つの選択肢「バーに入る」「家に帰る」。](assets/town-choice.jpg) + +「バーに入る」を選ぶと、プレイヤーはバーのシーンへ移動し、そこのシナリオが始まります。 + +![My Novel のバー。ダイアログボックスには最初の台詞が表示されています。](assets/bar-text.jpg) + +## これらの画面の裏にあるシナリオ + +小説テンプレートの町のシナリオ全文がこちらです(`my_novel_game/scenarios/my_novel_town.scenario`)。 + +```scenario +scene: my_novel_town +priority: 10 +--- +# 町はハブ:訪れるたびに同じ選択肢が表示される。 +text "夕暮れの町。街灯はすでにともり、石畳を涼しい風が抜けていく。" key=my_novel/town/intro +select "どこへ行く?" key=my_novel/town/prompt +option "バーに入る" key=my_novel/town/opt_bar -> :bar +option "家に帰る" key=my_novel/town/opt_home -> :home + +:bar +switch_scene my_novel_bar +end + +:home +switch_scene my_novel_home +end +``` + +- `---` より上の**ヘッダー**は、シナリオがいつ再生されるかを決めます。`scene:` はシーン名、`priority:` は同じシーンの複数シナリオの順序(小さいほうが先)です。ヘッダー行はこのほかにもあります。 +- `text "…"` は台詞を表示してクリックを待ちます。`key=` は台詞の翻訳キーで、引用したテキストは翻訳が見つからないときに表示されます。 +- `select` は質問を出し、各 `option` は**ラベル**(`-> :bar`)へ飛ぶ選択肢です。 +- `:bar` はラベル、`switch_scene` は別のシーンへの移動、`end` はシナリオの終了です。 +- `#` で始まる行は作者向けのメモです。 + +シーンに物語を追加するには、`.scenario` ファイルを自分の mod の `scenarios/` フォルダーのどこかに置き、ヘッダーでシーン名を指定します。 + +## 物語を書く + +**台詞とポートレート。** `text "…" first=marao/sad` は一つ目の位置にポートレートを表示し、`second=…` は二つ目に表示します(Characters Engine を参照)。`ptext` は `text` と同じ動作に加え、`${name}` を変数の値で置き換えます。`title "…"` は章タイトルを表示します。 + +**選択肢とジャンプ。** 条件が満たされたときだけ選択肢を表示できます。`option "Pay" "if=item('money/coin') >= 5" -> :pay`(空白を含む条件は `if=` ごと引用符で囲みます)。`goto -> :label` は尋ねずにジャンプします。`when "" -> :label` は、その時点で条件が満たされていればジャンプします。 + +```scenario +when "rpg_wolf_dead == 1" -> :lantern +``` + +**状態の記憶。** `flag rpg_quest_taken 1` は、ゲームのセーブと一緒に保存される物語フラグを立てます。条件では `rpg_quest_taken == 1` と読みます。`set name value` は実行中のダイアログの変数を設定します。`ptext` はこれを `${name}` として表示し、アクションからも読めます。 + +**条件**は共通の言語です。フラグ、Items Base の `item('id')`、Quests Engine のクエスト判定、各 mod のステータスや装備を、`&&`、`||`、`!` で組み合わせられます。 + +**シーンの演出。** `background`、`foreground`、`background_color`、`music`、`sound`、`effect`、`delay`、`light_set`、`hide_dialog`/`show_dialog`、`interactive_add`/`interactive_remove`、`notify`。 + +**ゲームアクション。** `action key=value …` は他の mod のアクションを実行します。例は `action item.add id=money/coin count=3` や `action quest.set_status quest_id=woodland_ward status=Progress` です。アクションの一覧は各 mod のスキーマファイルにあり、Editor Tools のシナリオエディターとコマンドパレットからも入力できます。 + +## シナリオが再生されるタイミング + +決めるのはヘッダーです。 + +```scenario +scene: prolog_alley +priority: 15 +condition: AwakeningQuest.notHasTag("cloak_taken") +is_one_run: true +save_allowed: true +--- +``` + +- `scene:` — プレイヤーが到着したときに再生されるシーン。 +- `priority:` — 同じシーンのシナリオ同士の順序。再生できる最小の番号が先になり、ダイアログが終わると次が始まります。 +- `condition:` — 条件が満たされている間だけ再生します。フラグやクエストが変わると、シーンは再度判定します。 +- `is_one_run: true` — 1 回のゲームで一度だけ再生。 +- `after:` — 指定したシナリオが再生されるのを待ちます。 +- `save_allowed: true` — このシーンではセーブできます。 + +`scene:` ヘッダーのないシナリオはシーンからは始まりません。インタラクティブオブジェクトのクリックやマップイベントなど、別のきっかけで実行されます。 + +## 他の mod による追加と置き換え + +すべての mod のシナリオは一つにまとめられます。mod は、シーン名を書くだけで他人のシーンに物語を追加できます。別の mod に依存し、同じファイル名のシナリオを同梱した mod は、それを置き換えます。 + +## うまく動かないとき + +1. **シナリオが再生されない。** `scene:` の名前が違う、`condition` が偽、あるいは `is_one_run` 付きで既に再生済みです。 +2. **台詞が別の言語で表示される。** その言語の翻訳キー `key=` が mod の `locale` ファイルになく、引用したテキストがそのまま表示されています。 +3. **選択肢がどこにも行かない。** `->` の後のラベルは、同じファイル内にコロン付き(`:bar`)で存在しなければなりません。 +4. **`action` が何もしない。** アクションを持つ mod がゲームに含まれていない(ログに "is not registered" と出ます)か、パラメーター名が間違っています。Editor Tools のシナリオエディターで該当アクションと見比べてください。 diff --git a/docs/ko.md b/docs/ko.md new file mode 100644 index 0000000..199b0d1 --- /dev/null +++ b/docs/ko.md @@ -0,0 +1,99 @@ +# Dialog Engine — 대화 상자와 시나리오 언어 + +Dialog Engine은 플레이어가 읽고 클릭하는 모든 것을 담당합니다. 대사·초상화·선택지가 표시되는 대화 상자이며, 그 뒤에는 **시나리오 언어**가 있습니다. `.scenario`라는 짧은 텍스트 파일에 이야기를 한 줄씩 적어 나가는 언어로, 누가 무엇을 말하는지, 어떤 선택지가 있는지, 각 선택지가 어디로 이어지는지, 게임 안에서 무슨 일이 일어나는지(배경 전환, 음악, 아이템, 퀘스트 진행, 다른 장면으로 이동)를 모두 적습니다. 컬렉션의 모든 게임이 소설 템플릿부터 RPG Plus까지 이 언어로 이야기를 전합니다. + +## 플레이어가 보는 것 + +장면에 들어가면 그 장면의 시나리오가 저절로 시작됩니다. 대사는 화면 아래 상자에 나타나고, 클릭하면 다음 대사로 넘어갑니다. + +![My Novel의 마을: 저녁 거리. 대화 상자에 "저녁 마을. 가로등이 이미 켜졌고, 돌바닥을 따라 차가운 바람이 불어 옵니다."라는 대사가 표시되어 있습니다.](assets/town-text.jpg) + +이야기가 무언가를 물으면 선택지가 오른쪽에 나타나고, 플레이어가 고를 때까지 기다립니다. + +![대화 상자의 질문 "어디로 갈까요?"와 오른쪽의 두 선택지 "술집에 들어가기", "집으로 돌아가기".](assets/town-choice.jpg) + +"술집에 들어가기"를 고르면 플레이어는 술집 장면으로 이동하고, 그곳의 시나리오가 시작됩니다. + +![My Novel의 술집. 대화 상자에는 첫 대사가 표시되어 있습니다.](assets/bar-text.jpg) + +## 이 화면 뒤의 시나리오 + +소설 템플릿 마을 시나리오의 전문입니다(`my_novel_game/scenarios/my_novel_town.scenario`). + +```scenario +scene: my_novel_town +priority: 10 +--- +# 마을은 허브:방문할 때마다 같은 선택지가 표시된다. +text "저녁 마을. 가로등은 이미 켜졌고, 돌바닥을 따라 차가운 바람이 불어 옵니다." key=my_novel/town/intro +select "어디로 갈까요?" key=my_novel/town/prompt +option "술집에 들어가기" key=my_novel/town/opt_bar -> :bar +option "집으로 돌아가기" key=my_novel/town/opt_home -> :home + +:bar +switch_scene my_novel_bar +end + +:home +switch_scene my_novel_home +end +``` + +- `---` 위의 **헤더**는 시나리오가 언제 재생되는지를 정합니다. `scene:`은 장면 이름, `priority:`는 같은 장면의 여러 시나리오 순서(작은 쪽이 먼저)입니다. 헤더 행은 아래에 더 있습니다. +- `text "…"`는 대사를 보여 주고 클릭을 기다립니다. `key=`는 대사의 번역 키이며, 따옴표 안의 텍스트는 번역이 없을 때 표시됩니다. +- `select`는 질문을 던지고, 각 `option`은 **레이블**( `-> :bar` )로 이동하는 선택지입니다. +- `:bar`는 레이블, `switch_scene`는 다른 장면으로 이동, `end`는 시나리오 종료입니다. +- `#`으로 시작하는 줄은 작성자를 위한 메모입니다. + +장면에 이야기를 추가하려면 `.scenario` 파일을 자신의 mod `scenarios/` 폴더 어디에나 두고 헤더에 장면 이름을 적으면 됩니다. + +## 이야기 쓰기 + +**대사와 초상화.** `text "…" first=marao/sad`는 첫 번째 자리에 초상화를, `second=…`는 두 번째 자리에 표시합니다(Characters Engine 참조). `ptext`는 `text`와 같으며 `${name}`을 변수 값으로 바꾸는 기능이 하나 더 있습니다. `title "…"`는 장 제목을 표시합니다. + +**선택지와 점프.** 조건이 맞을 때만 선택지를 보이게 할 수 있습니다. `option "Pay" "if=item('money/coin') >= 5" -> :pay` (공백이 있는 조건은 `if=`까지 따옴표로 묶습니다). `goto -> :label`은 묻지 않고 건너뜁니다. `when "" -> :label`은 그 순간 조건이 맞으면 이동합니다. + +```scenario +when "rpg_wolf_dead == 1" -> :lantern +``` + +**상태 기억.** `flag rpg_quest_taken 1`은 게임 저장에 함께 저장되는 스토리 플래그를 설정합니다. 조건에서는 `rpg_quest_taken == 1`로 읽습니다. `set name value`는 실행 중인 대화의 변수를 정합니다. `ptext`는 이를 `${name}`으로 표시하고 액션에서도 읽을 수 있습니다. + +**조건**은 하나의 공용 언어입니다. 플래그, Items Base의 `item('id')`, Quests Engine의 퀘스트 확인, 각 mod의 스탯과 장비를 `&&`, `||`, `!`로 조합합니다. + +**장면 연출.** `background`, `foreground`, `background_color`, `music`, `sound`, `effect`, `delay`, `light_set`, `hide_dialog`/`show_dialog`, `interactive_add`/`interactive_remove`, `notify`. + +**게임 액션.** `action key=value …`는 다른 mod의 액션을 실행합니다. 예를 들어 `action item.add id=money/coin count=3`, `action quest.set_status quest_id=woodland_ward status=Progress`입니다. 액션 목록은 각 mod의 스키마 파일에 있으며, Editor Tools의 시나리오 편집기와 커맨드 팔레트에서 바로 쓸 수 있습니다. + +## 시나리오가 재생되는 시점 + +헤더가 결정합니다. + +```scenario +scene: prolog_alley +priority: 15 +condition: AwakeningQuest.notHasTag("cloak_taken") +is_one_run: true +save_allowed: true +--- +``` + +- `scene:` — 플레이어가 도착했을 때 시나리오가 재생되는 장면. +- `priority:` — 같은 장면 시나리오끼리의 순서. 재생 가능한 가장 작은 번호가 먼저이며, 대화가 끝나면 다음이 시작됩니다. +- `condition:` — 조건이 유지되는 동안에만 재생. 플래그나 퀘스트가 바뀌면 장면이 다시 확인합니다. +- `is_one_run: true` — 게임당 한 번만 재생. +- `after:` — 지정한 시나리오가 재생될 때까지 기다립니다. +- `save_allowed: true` — 이 장면에서 저장할 수 있습니다. + +`scene:` 헤더가 없는 시나리오는 장면이 시작하지 않습니다. 인터랙티브 오브젝트 클릭이나 맵 이벤트 같은 다른 계기가 실행합니다. + +## 다른 mod의 추가와 교체 + +모든 mod의 시나리오는 한데 모입니다. mod는 장면 이름만 적으면 다른 mod의 장면에 이야기를 추가할 수 있습니다. 다른 mod에 의존하면서 같은 파일 이름의 시나리오를 포함한 mod는 그 시나리오를 교체합니다. + +## 문제가 생겼을 때 + +1. **시나리오가 재생되지 않습니다.** `scene:` 이름이 틀렸거나, `condition`이 거짓이거나, `is_one_run`이 붙어 있어 이미 재생된 경우입니다. +2. **대사가 다른 언어로 표시됩니다.** 해당 언어의 번역 키 `key=`가 mod의 `locale` 파일에 없어서 따옴표 안의 텍스트가 그대로 보입니다. +3. **선택지가 어디로도 이어지지 않습니다.** `->` 뒤의 레이블은 같은 파일 안에 콜론을 붙여(`:bar`) 존재해야 합니다. +4. **`action`이 아무것도 하지 않습니다.** 액션을 소유한 mod가 게임에 없거나(로그에 "is not registered"라고 기록됨), 매개변수 이름이 틀렸습니다. Editor Tools의 시나리오 편집기에서 해당 액션과 비교해 보세요. diff --git a/docs/ru.md b/docs/ru.md new file mode 100644 index 0000000..3a9f884 --- /dev/null +++ b/docs/ru.md @@ -0,0 +1,99 @@ +# Dialog Engine — окно диалога и язык сценариев + +Dialog Engine — это то, что игрок читает и по чему щёлкает: окно диалога с репликами, портретами и вариантами ответа. За ним стоит **язык сценариев** — небольшие текстовые файлы `.scenario`, в которых история записана строка за строкой: кто что говорит, какие есть варианты ответа, куда ведёт каждый из них и что при этом происходит в игре (новый фон, музыка, предмет, шаг задания, другая сцена). С его помощью рассказывает свою история каждая игра коллекции — от шаблона новеллы до RPG Plus. + +## Что видит игрок + +Сценарий сцены запускается сам, как только игрок входит в неё. Реплики появляются в окне внизу экрана; щелчок показывает следующую: + +![Город из My Novel: вечерняя улица, в окне диалога — реплика «Вечерний город. Фонари уже горят, по мостовой тянет прохладой».](assets/town-text.jpg) + +Когда история о чём-то спрашивает, справа появляются варианты ответа — и она ждёт, пока игрок выберет один из них: + +![Вопрос «Куда пойти?» в окне диалога и два варианта справа: «Зайти в бар» и «Вернуться домой».](assets/town-choice.jpg) + +Вариант «Зайти в бар» переносит игрока в сцену бара, где запускается уже его собственный сценарий: + +![Бар из My Novel и его первая реплика в окне диалога.](assets/bar-text.jpg) + +## Сценарий этих кадров + +Вот весь сценарий города из шаблона новеллы (`my_novel_game/scenarios/my_novel_town.scenario`): + +```scenario +scene: my_novel_town +priority: 10 +--- +# Город — хаб: при каждом визите игрок видит один и тот же выбор. +text "Вечерний город. Фонари уже горят, по мостовой тянет прохладой." key=my_novel/town/intro +select "Куда пойти?" key=my_novel/town/prompt +option "Зайти в бар" key=my_novel/town/opt_bar -> :bar +option "Вернуться домой" key=my_novel/town/opt_home -> :home + +:bar +switch_scene my_novel_bar +end + +:home +switch_scene my_novel_home +end +``` + +- **Заголовок** над `---` говорит, когда сценарий играет: `scene:` называет сцену, `priority:` упорядочивает несколько сценариев одной сцены (с меньшим числом играет первым). Ниже встречаются и другие строки заголовка. +- `text "…"` показывает реплику и ждёт щелчка. `key=` — ключ перевода реплики; текст в кавычках показывается, если перевода не нашлось. +- `select` задаёт вопрос, и каждый `option` — вариант ответа, который ведёт к **метке** (`-> :bar`). +- `:bar` — метка; `switch_scene` уходит в другую сцену; `end` завершает сценарий. +- Строка, начинающаяся с `#`, — заметка для автора. + +Чтобы добавить историю в сцену, положите файл `.scenario` в любое место папки `scenarios/` своего мода и назовите сцену в заголовке. + +## Как писать историю + +**Реплики и портреты.** `text "…" first=marao/sad` показывает портрет на первом месте, `second=…` — на втором (см. Characters Engine). `ptext` делает то же, что `text`, и вдобавок подставляет вместо `${name}` значение переменной. `title "…"` показывает заголовок главы. + +**Выбор и переходы.** Вариант ответа можно показывать только при выполнении условия: `option "Pay" "if=item('money/coin') >= 5" -> :pay` (условие с пробелами берётся в кавычки вместе с `if=`). `goto -> :label` перескакивает без вопросов. `when "" -> :label` выполняет переход, если условие выполнено в этот момент: + +```scenario +when "rpg_wolf_dead == 1" -> :lantern +``` + +**Запоминание.** `flag rpg_quest_taken 1` ставит сюжетный флаг, который сохраняется вместе с игрой; условия читают его как `rpg_quest_taken == 1`. `set name value` задаёт переменную текущего диалога: `ptext` покажет её как `${name}`, а действия смогут её прочитать. + +**Условия** — один общий язык: флаги, `item('id')` из Items Base, проверки заданий из Quests Engine, характеристики и экипировка из своих модов, соединённые через `&&`, `||` и `!`. + +**Сцена.** `background`, `foreground`, `background_color`, `music`, `sound`, `effect`, `delay`, `light_set`, `hide_dialog`/`show_dialog`, `interactive_add`/`interactive_remove`, `notify`. + +**Игровые действия.** `action key=value …` запускает действие другого мода, например `action item.add id=money/coin count=3` или `action quest.set_status quest_id=woodland_ward status=Progress`. Все действия перечислены в schema-файлах модов, а Editor Tools предлагает их в редакторе сценариев и палитре команд. + +## Когда сценарий запускается + +Решает заголовок: + +```scenario +scene: prolog_alley +priority: 15 +condition: AwakeningQuest.notHasTag("cloak_taken") +is_one_run: true +save_allowed: true +--- +``` + +- `scene:` — сцена, в которой сценарий играет, когда игрок приходит. +- `priority:` — порядок среди сценариев одной сцены; первым играет тот, у кого наименьшее допустимое число, а следующий стартует, когда диалог закончится. +- `condition:` — сценарий играет, только пока условие выполнено; когда флаг или задание меняется, сцена проверяет снова. +- `is_one_run: true` — играется один раз за игру. +- `after:` — ждёт, пока названный сценарий не будет пройден. +- `save_allowed: true` — в этой сцене можно сохраняться. + +Сценарий без строки `scene:` не запускается сценой — его запускает что-то другое: например, щелчок по интерактивному объекту или событие на карте. + +## Чужие моды добавляют и заменяют сценарии + +Сценарии всех модов собираются в общий набор. Добавить историю в чужую сцену просто: назовите эту сцену в заголовке. А мод, который зависит от владельца и кладёт в себя сценарий с тем же именем файла, заменяет его. + +## Если что-то пошло не так + +1. **Сценарий никогда не играет.** Ошибочное имя в `scene:`, ложное условие в `condition` — или у сценария есть `is_one_run`, и он уже играл. +2. **Реплика показывается не на том языке.** Ключа `key=` нет в файлах `locale` мода для этого языка, и вместо перевода показывается текст в кавычках. +3. **Ответ ведёт в никуда.** Метка после `->` должна существовать в том же файле и записываться с двоеточием (`:bar`). +4. **`action` ничего не делает.** Мод — владелец действия не входит в игру (в логе написано, что действие "is not registered"), или имя параметра неверное — сверьте его с действием в редакторе сценариев Editor Tools. diff --git a/docs/vi.md b/docs/vi.md new file mode 100644 index 0000000..76019af --- /dev/null +++ b/docs/vi.md @@ -0,0 +1,99 @@ +# Dialog Engine — hộp hội thoại và ngôn ngữ kịch bản + +Dialog Engine là mọi thứ người chơi đọc và nhấp vào: hộp hội thoại với các câu thoại, chân dung và phương án trả lời. Đằng sau đó là **ngôn ngữ kịch bản** — những tệp văn bản `.scenario` nhỏ, nơi câu chuyện được viết từng dòng: ai nói gì, có những lựa chọn nào, mỗi lựa chọn dẫn đi đâu, và chuyện gì xảy ra trong game (đổi nền, bật nhạc, thêm vật phẩm, tiến nhiệm vụ, sang cảnh khác). Mọi trò chơi trong bộ sưu tập, từ mẫu truyện đến RPG Plus, đều kể câu chuyện của mình bằng ngôn ngữ này. + +## Những gì người chơi nhìn thấy + +Kịch bản của một cảnh tự bắt đầu khi người chơi bước vào. Các câu thoại hiện trong hộp ở đáy màn hình; mỗi cú nhấp hiện câu tiếp theo. + +![Thị trấn của My Novel: con phố buổi chiều, trong hộp hội thoại là câu "Buổi chiều ở thị trấn. Đèn đường đã sáng, một cơn gió mát thổi qua đường lát đá".](assets/town-text.jpg) + +Khi câu chuyện hỏi điều gì đó, các lựa chọn hiện ra bên phải, và câu chuyện chờ cho đến khi người chơi chọn xong. + +![Câu hỏi "Đi đâu đây?" trong hộp hội thoại cùng hai lựa chọn bên phải: "Ghé vào quán bar" và "Về nhà".](assets/town-choice.jpg) + +"Ghé vào quán bar" đưa người chơi sang cảnh quán bar, nơi bắt đầu kịch bản riêng của nó. + +![Quán bar của My Novel với câu thoại đầu tiên trong hộp hội thoại.](assets/bar-text.jpg) + +## Kịch bản đứng sau những hình này + +Đây là toàn bộ kịch bản thị trấn của mẫu truyện (`my_novel_game/scenarios/my_novel_town.scenario`). + +```scenario +scene: my_novel_town +priority: 10 +--- +# Thị trấn là điểm tụ: lần nào ghé thăm cũng thấy cùng một lựa chọn. +text "Buổi chiều ở thị trấn. Đèn đường đã sáng, một cơn gió mát thổi qua đường lát đá." key=my_novel/town/intro +select "Đi đâu đây?" key=my_novel/town/prompt +option "Ghé vào quán bar" key=my_novel/town/opt_bar -> :bar +option "Về nhà" key=my_novel/town/opt_home -> :home + +:bar +switch_scene my_novel_bar +end + +:home +switch_scene my_novel_home +end +``` + +- **Phần đầu** phía trên `---` cho biết kịch bản chạy khi nào: `scene:` nêu tên cảnh, `priority:` sắp thứ tự cho nhiều kịch bản của cùng một cảnh (số nhỏ chạy trước). Bên dưới còn vài dòng đầu khác sẽ được giới thiệu. +- `text "…"` hiện một câu thoại và chờ cú nhấp. `key=` là khóa dịch của câu thoại; văn bản trong ngoặc kép được hiển thị khi không tìm thấy bản dịch. +- `select` đặt một câu hỏi, mỗi `option` là một lựa chọn nhảy tới một **nhãn** (`-> :bar`). +- `:bar` là nhãn; `switch_scene` chuyển sang cảnh khác; `end` kết thúc kịch bản. +- Dòng bắt đầu bằng `#` là ghi chú dành cho tác giả. + +Muốn thêm câu chuyện vào một cảnh, bạn chỉ cần đặt tệp `.scenario` vào bất kỳ đâu trong thư mục `scenarios/` của mod và nêu tên cảnh trong phần đầu. + +## Viết câu chuyện + +**Câu thoại và chân dung.** `text "…" first=marao/sad` hiện chân dung ở vị trí thứ nhất, `second=…` ở vị trí thứ hai (xem Characters Engine). `ptext` giống `text` và thay thêm `${name}` bằng giá trị của biến. `title "…"` hiện tiêu đề chương. + +**Lựa chọn và bước nhảy.** Có thể chỉ hiện một lựa chọn khi điều kiện thỏa mãn: `option "Pay" "if=item('money/coin') >= 5" -> :pay` (điều kiện có dấu cách thì bọc cả `if=` trong ngoặc kép). `goto -> :label` nhảy luôn không hỏi. `when "" -> :label` nhảy nếu điều kiện thỏa tại thời điểm đó. + +```scenario +when "rpg_wolf_dead == 1" -> :lantern +``` + +**Ghi nhớ thông tin.** `flag rpg_quest_taken 1` đặt một cờ cốt truyện được lưu cùng game; điều kiện đọc nó dưới dạng `rpg_quest_taken == 1`. `set name value` đặt biến của phiên hội thoại đang chạy: `ptext` hiển thị nó dưới dạng `${name}` và các hành động cũng đọc được. + +**Điều kiện** là một ngôn ngữ chung: cờ, `item('id')` từ Items Base, phép kiểm tra nhiệm vụ từ Quests Engine, chỉ số và trang bị từ mod tương ứng, nối với nhau bằng `&&`, `||` và `!`. + +**Tổ chức cảnh.** `background`, `foreground`, `background_color`, `music`, `sound`, `effect`, `delay`, `light_set`, `hide_dialog`/`show_dialog`, `interactive_add`/`interactive_remove`, `notify`. + +**Hành động của game.** `action key=value …` chạy một hành động của mod khác, ví dụ `action item.add id=money/coin count=3` hay `action quest.set_status quest_id=woodland_ward status=Progress`. Các tệp schema của mod liệt kê hành động, còn Editor Tools đưa chúng vào trình soạn thảo kịch bản và bảng lệnh. + +## Khi nào kịch bản chạy + +Phần đầu quyết định điều đó. + +```scenario +scene: prolog_alley +priority: 15 +condition: AwakeningQuest.notHasTag("cloak_taken") +is_one_run: true +save_allowed: true +--- +``` + +- `scene:` — cảnh mà kịch bản chạy khi người chơi tới. +- `priority:` — thứ tự giữa các kịch bản của cùng một cảnh; số nhỏ nhất được phép chạy sẽ chạy trước, kịch bản kế tiếp bắt đầu khi hội thoại kết thúc. +- `condition:` — chỉ chạy khi điều kiện còn thỏa mãn; khi cờ hoặc nhiệm vụ đổi, cảnh sẽ kiểm tra lại. +- `is_one_run: true` — chỉ chạy một lần mỗi ván chơi. +- `after:` — chờ cho đến khi kịch bản được nêu đã chạy xong. +- `save_allowed: true` — người chơi được lưu trong cảnh này. + +Kịch bản không có dòng `scene:` thì không do cảnh khởi chạy; nó do thứ khác chạy, chẳng hạn cú nhấp vào vật thể tương tác hay sự kiện bản đồ. + +## Mod khác thêm và thay thế kịch bản + +Kịch bản của mọi mod được gom chung với nhau. Một mod thêm câu chuyện vào cảnh của mod khác đơn giản chỉ bằng cách nêu tên cảnh đó. Mod phụ thuộc vào mod khác và kèm theo một tệp kịch bản trùng tên sẽ thay thế tệp ấy. + +## Khi có trục trặc + +1. **Kịch bản không bao giờ chạy.** Tên trong `scene:` sai, `condition` sai, hoặc kịch bản có `is_one_run` và đã chạy rồi. +2. **Câu thoại hiện sai ngôn ngữ.** Thiếu khóa `key=` trong các tệp `locale` của mod cho ngôn ngữ đó; văn bản trong ngoặc kép được hiển thị thay thế. +3. **Lựa chọn dẫn đến hư không.** Nhãn sau `->` phải tồn tại trong cùng tệp, viết kèm dấu hai chấm (`:bar`). +4. **`action` không làm gì cả.** Mod sở hữu hành động không có trong game (log ghi hành động "is not registered"), hoặc tên tham số sai — hãy so với hành động trong trình soạn thảo kịch bản của Editor Tools. diff --git a/docs/zh.md b/docs/zh.md new file mode 100644 index 0000000..03dd854 --- /dev/null +++ b/docs/zh.md @@ -0,0 +1,99 @@ +# Dialog Engine — 对话框与剧本语言 + +Dialog Engine 负责玩家阅读和点击的一切:带台词、肖像和选项的对话框。它背后是**剧本语言**——一些简短的 `.scenario` 文本文件,故事在其中一行一行地写下来:谁说了什么、有哪些选项、每个选项通向哪里、游戏里会发生什么(换背景、放音乐、给物品、推进任务、切换场景)。合集里的每一款游戏,从小说模板到 RPG Plus,都用它讲述自己的故事。 + +## 玩家看到什么 + +进入场景时,场景的剧本会自动开始。台词出现在屏幕下方的对话框里,点击一下就显示下一句: + +![My Novel 的小镇:傍晚的街道,对话框中显示台词"傍晚的小镇。路灯已经亮起,石板路上吹过一阵凉风。"。](assets/town-text.jpg) + +当故事向玩家提问时,选项会出现在右侧,并等待玩家做出选择: + +![对话框中的问题"接下来去哪儿?"以及右侧的两个选项:"去酒吧"和"回家"。](assets/town-choice.jpg) + +选择"去酒吧"后,玩家来到酒吧场景,那里开始播放自己的剧本: + +![My Novel 的酒吧,对话框中是它的第一句台词。](assets/bar-text.jpg) + +## 这些截图背后的剧本 + +这就是小说模板小镇场景的完整剧本(`my_novel_game/scenarios/my_novel_town.scenario`): + +```scenario +scene: my_novel_town +priority: 10 +--- +# 小镇是枢纽:每次到访都显示同样的选择。 +text "傍晚的小镇。路灯已经亮起,石板路上吹过一阵凉风。" key=my_novel/town/intro +select "接下来去哪儿?" key=my_novel/town/prompt +option "去酒吧" key=my_novel/town/opt_bar -> :bar +option "回家" key=my_novel/town/opt_home -> :home + +:bar +switch_scene my_novel_bar +end + +:home +switch_scene my_novel_home +end +``` + +- `---` 之上的**头部**说明剧本何时播放:`scene:` 指明场景,`priority:` 排定同一场景多个剧本的先后(数字小的先播)。后文还会介绍其他头部行。 +- `text "…"` 显示一句台词并等待点击。`key=` 是这句台词的翻译键;引号里的文本在找不到翻译时显示。 +- `select` 提出一个问题,每个 `option` 都是一个选项,跳转到某个**标签**(`-> :bar`)。 +- `:bar` 是标签;`switch_scene` 切换到另一场景;`end` 结束剧本。 +- 以 `#` 开头的行是给作者看的注释。 + +要给场景添加故事,只需把 `.scenario` 文件放进自己 mod 的 `scenarios/` 文件夹(位置不限),并在头部写明场景名。 + +## 编写故事 + +**台词与肖像。** `text "…" first=marao/sad` 在第一个位置显示肖像,`second=…` 在第二个位置(参见 Characters Engine)。`ptext` 与 `text` 相同,还会把 `${name}` 替换为变量的值。`title "…"` 显示章节标题。 + +**选项与跳转。** 选项可以只在条件成立时显示:`option "Pay" "if=item('money/coin') >= 5" -> :pay`(条件里有空格时,连 `if=` 一起加引号)。`goto -> :label` 不作询问直接跳转。`when "" -> :label` 在条件此刻成立时跳转: + +```scenario +when "rpg_wolf_dead == 1" -> :lantern +``` + +**记住状态。** `flag rpg_quest_taken 1` 设置一个随游戏存档保存的剧情标记;条件写作 `rpg_quest_taken == 1` 即可读取。`set name value` 设置当前对话的变量:`ptext` 把它显示为 `${name}`,动作也能读取它。 + +**条件**是一门统一的语言:标记、来自 Items Base 的 `item('id')`、来自 Quests Engine 的任务检查、各 mod 自带的属性与装备,用 `&&`、`||` 和 `!` 组合起来。 + +**场景演出。** `background`、`foreground`、`background_color`、`music`、`sound`、`effect`、`delay`、`light_set`、`hide_dialog`/`show_dialog`、`interactive_add`/`interactive_remove`、`notify`。 + +**游戏动作。** `action key=value …` 执行另一个 mod 的动作,例如 `action item.add id=money/coin count=3` 或 `action quest.set_status quest_id=woodland_ward status=Progress`。各 mod 的 schema 文件列出了这些动作,Editor Tools 会在剧本编辑器和命令面板中提供它们。 + +## 剧本何时播放 + +这由头部决定: + +```scenario +scene: prolog_alley +priority: 15 +condition: AwakeningQuest.notHasTag("cloak_taken") +is_one_run: true +save_allowed: true +--- +``` + +- `scene:` — 玩家到达时播放剧本的场景。 +- `priority:` — 同一场景中各剧本的先后顺序;可播放的编号最小者先播,对话结束后下一个才开始。 +- `condition:` — 仅在条件成立时播放;标记或任务发生变化时,场景会重新检查。 +- `is_one_run: true` — 每局游戏只播放一次。 +- `after:` — 等待指定剧本播放完毕。 +- `save_allowed: true` — 玩家可以在该场景存档。 + +没有 `scene:` 头部的剧本不会由场景启动,而是由其他东西触发,比如点击场景中的交互物或地图事件。 + +## 其他 mod 的添加与替换 + +所有 mod 的剧本汇总在一起。mod 只要在头部写明场景名,就能把自己的故事加进别人的场景。声明了依赖并附带同名剧本文件的 mod 会替换原剧本。 + +## 出问题时 + +1. **剧本从不播放。** `scene:` 的场景名写错了、`condition` 为假,或者剧本带 `is_one_run` 且已经播放过。 +2. **台词显示成了别的语言。** 该语言的翻译键 `key=` 在 mod 的 `locale` 文件里缺失,于是显示引号里的原文。 +3. **选项跳了个空。** `->` 后面的标签必须存在于同一文件中,并带冒号(`:bar`)。 +4. **`action` 没有反应。** 动作所属的 mod 不在游戏内(日志提示动作 "is not registered"),或者参数名写错——与 Editor Tools 剧本编辑器中的动作对照一下。 diff --git a/locale/en.properties b/locale/en.properties index 0b6eed8..6eb39af 100644 --- a/locale/en.properties +++ b/locale/en.properties @@ -1,2 +1,2 @@ mod_dialog_base_name = Dialog Engine -mod_dialog_base_desc = Engine dialog subsystem: DialogBox/DialogCanvas/AnswerBox UI, the dialog queue with the full DSL action set, the .scenario parser, executable event chains and the /root/DialogRunner for interactive dialogs. +mod_dialog_base_desc = Dialog engine: the dialog box with portraits and answers, and the .scenario language in which every game of the collection tells its story. diff --git a/locale/es.properties b/locale/es.properties index 286dc2a..fd437fc 100644 --- a/locale/es.properties +++ b/locale/es.properties @@ -1,2 +1,2 @@ mod_dialog_base_name = Motor de diálogos -mod_dialog_base_desc = Subsistema de diálogos del motor: interfaz DialogBox/DialogCanvas/AnswerBox, la cola de diálogos con el conjunto completo de acciones del DSL, el analizador de .scenario, cadenas de eventos ejecutables y /root/DialogRunner para los diálogos interactivos. +mod_dialog_base_desc = Motor de diálogos: la caja de diálogo con retratos y respuestas, y el lenguaje .scenario con el que cada juego de la colección cuenta su historia. diff --git a/locale/ja.properties b/locale/ja.properties index 872c4ad..f3af448 100644 --- a/locale/ja.properties +++ b/locale/ja.properties @@ -1,2 +1,2 @@ mod_dialog_base_name = ダイアログエンジン -mod_dialog_base_desc = エンジンのダイアログサブシステム:DialogBox/DialogCanvas/AnswerBox の UI、DSL の全アクションを備えたダイアログキュー、.scenario パーサー、実行可能なイベントチェーン、インタラクティブなダイアログ用の /root/DialogRunner。 +mod_dialog_base_desc = ダイアログエンジン:ポートレートと選択肢を備えたダイアログボックス、そしてコレクションのすべてのゲームが物語を語る .scenario 言語。 diff --git a/locale/ko.properties b/locale/ko.properties index c4f2012..21bd9b9 100644 --- a/locale/ko.properties +++ b/locale/ko.properties @@ -1,2 +1,2 @@ mod_dialog_base_name = 대화 엔진 -mod_dialog_base_desc = 엔진 대화 하위 시스템: DialogBox/DialogCanvas/AnswerBox UI, 전체 DSL 액션을 갖춘 대화 큐, .scenario 파서, 실행 가능한 이벤트 체인, 상호작용 대화용 /root/DialogRunner. +mod_dialog_base_desc = 대화 엔진: 초상화와 선택지가 있는 대화 상자, 그리고 컬렉션의 모든 게임이 이야기를 전하게 하는 .scenario 언어. diff --git a/locale/ru.properties b/locale/ru.properties index 173b73f..668ff43 100644 --- a/locale/ru.properties +++ b/locale/ru.properties @@ -1,2 +1,2 @@ mod_dialog_base_name = Движок диалогов -mod_dialog_base_desc = Подсистема диалогов движка: UI DialogBox/DialogCanvas/AnswerBox, очередь диалогов с полным набором DSL-действий, парсер .scenario, цепочки событий и /root/DialogRunner для интерактивных диалогов. +mod_dialog_base_desc = Движок диалогов: окно диалога с портретами и вариантами ответов и язык .scenario, на котором рассказывает свою история каждая игра коллекции. diff --git a/locale/vi.properties b/locale/vi.properties index 47b4220..7dad9aa 100644 --- a/locale/vi.properties +++ b/locale/vi.properties @@ -1,2 +1,2 @@ mod_dialog_base_name = Engine hội thoại -mod_dialog_base_desc = Hệ thống con hội thoại của engine: giao diện DialogBox/DialogCanvas/AnswerBox, hàng đợi hội thoại với đầy đủ hành động DSL, trình phân tích .scenario, chuỗi sự kiện thực thi được và /root/DialogRunner cho hội thoại tương tác. +mod_dialog_base_desc = Engine hội thoại: hộp hội thoại với chân dung và các lựa chọn, cùng ngôn ngữ .scenario mà mọi trò chơi trong bộ sưu tập dùng để kể câu chuyện của mình. diff --git a/locale/zh.properties b/locale/zh.properties index c7dfaf5..c7285c7 100644 --- a/locale/zh.properties +++ b/locale/zh.properties @@ -1,2 +1,2 @@ mod_dialog_base_name = 对话引擎 -mod_dialog_base_desc = 引擎对话子系统:DialogBox/DialogCanvas/AnswerBox 界面、带完整 DSL 动作集的对话队列、.scenario 解析器、可执行事件链以及用于交互对话的 /root/DialogRunner。 +mod_dialog_base_desc = 对话引擎:带肖像与选项的对话框,以及让合集中的每个游戏讲述自身故事的 .scenario 语言。 diff --git a/manifest.json b/manifest.json index 6341570..71ee6ae 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Dialog Engine", "version": "1.0.0", "author": "ct", - "description": "Engine dialog subsystem: DialogBox/DialogCanvas/AnswerBox UI, the dialog queue runtime with the full DSL action set, the .scenario parser with command strategies, the executable event chains and the /root/DialogRunner for interactive dialogs. Replaces the former Core/UI/Dialog, Core/UI/Executable and Core/Scenarios implementations — SceneManager and SaveService keep driving chains and events through the core contracts (IDialogBox, IExecutableEvent, IExecutableEventChain, IScenarioEventFactory).", + "description": "Dialog engine: the dialog box with portraits and answers, and the .scenario language in which every game of the collection tells its story.", "category": "engine, library", "sources": [ "src/**/*.cs" @@ -15,6 +15,7 @@ "ui": [], "test_suites": [ {"id": "autoplay", "activate": ["--choices=", "--timeout="]}, - {"id": "gdscript", "activate": ["--itest=gdscript"]} + {"id": "gdscript", "activate": ["--itest=gdscript"]}, + {"id": "doc_shots", "activate": ["--itest=doc_shots"]} ] } diff --git a/test_suites/doc_shots/manifest.json b/test_suites/doc_shots/manifest.json new file mode 100644 index 0000000..22ce143 --- /dev/null +++ b/test_suites/doc_shots/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "Documentation Screenshots", + "description": "Plays a steps file (scene switches, clock, dialog answers, panels, keys, inventory/party seeding) in the running game and saves a screenshot at every 'shot' step for mod documentation. Activated by --itest=doc_shots with --doc-steps= and --shots=

(windowed runs only).", + "sources": [ + "src/*.cs" + ] +} diff --git a/test_suites/doc_shots/src/DocShotsDriver.cs b/test_suites/doc_shots/src/DocShotsDriver.cs new file mode 100644 index 0000000..fd013d8 --- /dev/null +++ b/test_suites/doc_shots/src/DocShotsDriver.cs @@ -0,0 +1,415 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Cthangover.Core.Bootstrap; +using Cthangover.Core.Interactive; +using Cthangover.Core.Scenes; +using Cthangover.Core.Settings; +using Cthangover.Core.UI; +using Cthangover.Core.UI.Tool; +using Cthangover.Core.Utils; +using Cthangover.Mods.Interface.Tool; +using Cthangover.Mods.Interface.View; +using Godot; + +namespace Cthangover.Mods.Dialog.DocShots +{ + /// + /// Plays a plain-text steps file in a running game and saves screenshots for + /// mod documentation, so a page's pictures come from the real application + /// without one driver per mod. One step per line, # starts a comment: + /// + /// scene <name> — aborts the running dialog (as "Go to scene" does) and switches; waits for the scene, then settles. + /// time HH:MM — sets the clock of the current day. + /// wait <ticks> — 0.1 s ticks. + /// abort, next [n], choose <i>, waitanswer — the dialog box. + /// panel <id> — toggles a toolbar panel like its button. + /// key <Key> [ticks] — presses a key (Godot name, e.g. E, W, Escape) and releases it after the ticks. + /// tap <node> <i> — left-clicks child i of the first node with that name (an inventory cell); press <text> — presses the visible button with that text or with a label of that text inside. + /// give <item> [count], party <character> — seeds the inventory and the party. + /// signal <node> <signal> [arg] — emits a signal of the first node with that name, as its own input handling would (a world map zone click). + /// hover <x> <y>, click <x> <y> — moves the mouse to (and left-clicks at) a point given as fractions of the window, through the normal input routing (scene interactives). + /// drag <x1> <y1> <x2> <y2> — presses the left button at the first point, moves to the second with it held and releases there (dragging a battle card onto a target). + /// hurt <character> <hp> — sets a party member's current health (to show healing). + /// tool <id> — opens a registered tool window (schema_palette, items_editor…) the way the toolbar's tool list does. + /// type <text> — replaces the text of the focused line edit (click it first). + /// call <tool> <method> [args…] — calls a public method with string arguments on a window opened by tool. + /// run <scenario line> — runs one scenario line through the dialog runner, as an interactive object's inline commands do (run action rpg.battle enemies=rpg_wolf). + /// shot <name> — saves <name>.png (windowed runs only). + /// + /// Waits are tick counts, not conditions on the picture; only reaching each + /// scene and the dialog states is checked. Result line: + /// [TEST_RESULT] name=doc_shots passed=N failed=M, exit 0/1, 300 s watchdog. + /// + public partial class DocShotsDriver : Node + { + private const float TickSeconds = 0.1f; + private const float TimeoutSeconds = 300f; + private const int SettleTicks = 30; + private const int NextGapTicks = 5; + private const long MinutesPerDay = 24 * 60; + + private readonly string shotsDir; + private readonly List steps = new(); + private readonly List failures = new(); + private int passed; + private int index; + private int waitTicks; + private int repeat; + private double elapsed; + private bool started; + private string pendingScene; + private Key heldKey = Key.None; + private readonly Dictionary tools = new(); + private Window lastTool; + + /// Reads the steps; a missing file fails the run at the first tick. + public DocShotsDriver(string stepsFile, string shotsDir) + { + this.shotsDir = shotsDir; + Name = "DocShotsDriver"; + if (stepsFile != null && File.Exists(stepsFile)) + { + foreach (var line in File.ReadAllLines(stepsFile)) + { + var text = line.Split('#')[0].Trim(); + if (text.Length > 0) + steps.Add(text.Split(' ', StringSplitOptions.RemoveEmptyEntries)); + } + } + else + { + failures.Add($"steps file '{stepsFile}' not found"); + } + var timer = new Timer { WaitTime = TickSeconds, Autostart = true }; + AddChild(timer); + timer.Timeout += Tick; + } + + private SceneManager Scenes => GetTree().Root.GetNodeOrNull("SceneManager"); + + private static DialogBox Box => SceneContextNode.FindNode("DialogBox"); + + private void Tick() + { + if (index < 0) + return; + elapsed += TickSeconds; + if (failures.Count > 0 && !started) + { + Finish(); + return; + } + if (elapsed > TimeoutSeconds) + { + Fail($"timeout at step {index + 1} (scene='{SceneManager.GetCurrentSceneName()}')"); + Finish(); + return; + } + if (waitTicks > 0) + { + waitTicks--; + return; + } + if (heldKey != Key.None) + { + Input.ParseInputEvent(new InputEventKey { PhysicalKeycode = heldKey, Keycode = heldKey, Pressed = false }); + heldKey = Key.None; + waitTicks = NextGapTicks; + return; + } + if (!started) + { + if (!Boot.IsReady || string.IsNullOrEmpty(SceneManager.GetCurrentSceneName())) + return; + started = true; + GameLogger.Log("TEST", $"DocShotsDriver: started in '{SceneManager.GetCurrentSceneName()}', {steps.Count} steps"); + waitTicks = SettleTicks; + return; + } + if (index >= steps.Count) + { + Finish(); + return; + } + + try + { + if (RunStep(steps[index])) + { + index++; + repeat = 0; + } + } + catch (Exception ex) + { + Fail($"step {index + 1} '{string.Join(' ', steps[index])}': {ex.GetType().Name}: {ex.Message}"); + Finish(); + } + } + + /// Runs one step; false keeps it for the next tick. + private bool RunStep(string[] step) + { + var arg = step.Length > 1 ? step[1] : null; + switch (step[0]) + { + case "scene": + if (pendingScene == null) + { + pendingScene = arg; + Box?.Abort(); + Scenes.SwitchScene(arg); + return false; + } + if (SceneManager.GetCurrentSceneName() != pendingScene) + return false; + Check(true, $"entered '{pendingScene}'"); + pendingScene = null; + waitTicks = SettleTicks; + return true; + case "time": + var parts = arg.Split(':'); + var time = GameData.Instance.Runtime.Time; + time.SetTime(time.Tick - time.Tick % MinutesPerDay + int.Parse(parts[0]) * 60 + int.Parse(parts[1])); + waitTicks = NextGapTicks; + return true; + case "wait": + waitTicks = int.Parse(arg); + return true; + case "abort": + Box?.Abort(); + waitTicks = NextGapTicks; + return true; + case "next": + Box?.NextAction(); + waitTicks = NextGapTicks; + repeat++; + return repeat >= (arg == null ? 1 : int.Parse(arg)); + case "waitanswer": + if (Box?.IsWaitingAnswer != true) + { + if (Box != null && Box.IsRunning) + Box.NextAction(); + waitTicks = NextGapTicks; + return false; + } + Check(true, "dialog waits for an answer"); + return true; + case "choose": + Check(Box != null && Box.TrySelectVariant(int.Parse(arg)), $"option {arg} taken"); + waitTicks = SettleTicks; + return true; + case "panel": + UiRegistry.Toggle(arg); + waitTicks = SettleTicks / 2; + return true; + case "key": + heldKey = Enum.Parse(arg); + Input.ParseInputEvent(new InputEventKey { PhysicalKeycode = heldKey, Keycode = heldKey, Pressed = true }); + waitTicks = step.Length > 2 ? int.Parse(step[2]) : 1; + return true; + case "tap": + Check(Tap(arg, int.Parse(step[2])), $"tap {arg} {step[2]}"); + waitTicks = NextGapTicks; + return true; + case "press": + var label = string.Join(" ", step.Skip(1)); + Check(Press(GetTree().Root, label), $"press '{label}'"); + waitTicks = NextGapTicks; + return true; + case "give": + GameData.Instance.Runtime.Inventory.Add(arg, step.Length > 2 ? int.Parse(step[2]) : 1); + return true; + case "party": + GameData.Instance.Runtime.CharacterData.AddCharacterToParty(arg); + return true; + case "signal": + var source = GetTree().Root.FindChild(arg, true, false); + Check(source != null && source.HasSignal(step[2]), $"signal {arg} {step[2]}"); + if (source != null && source.HasSignal(step[2])) + { + if (step.Length > 3) + source.EmitSignal(step[2], step[3]); + else + source.EmitSignal(step[2]); + } + waitTicks = NextGapTicks; + return true; + case "hover": + case "click": + Mouse(ParseFraction(arg), ParseFraction(step[2]), step[0] == "click"); + waitTicks = NextGapTicks; + return true; + case "drag": + Drag(ParseFraction(arg), ParseFraction(step[2]), ParseFraction(step[3]), ParseFraction(step[4])); + waitTicks = NextGapTicks; + return true; + case "hurt": + Check(GameData.Instance.Runtime.CharacterData.Characters.TryGetValue(arg, out var hurt) && hurt.Attributes?.Health != null, $"hurt {arg}"); + if (hurt?.Attributes?.Health != null) + hurt.Attributes.Health.Value = int.Parse(step[2]); + return true; + case "tool": + var provider = ToolFactory.Instance.GetAll().FirstOrDefault(t => t.Id == arg); + Check(provider != null, $"tool {arg}"); + if (provider != null) + tools[arg] = lastTool = ToolWindow.ShowWindow(provider.CreateWindow()); + waitTicks = SettleTicks; + return true; + case "type": + TypeText(string.Join(' ', step.Skip(1))); + waitTicks = SettleTicks / 3; + return true; + case "call": + CallTool(step); + waitTicks = SettleTicks / 2; + return true; + case "run": + var runner = GetTree().Root.GetNodeOrNull("/root/DialogRunner") as IInteractiveDialogRunner; + Check(runner != null, $"run {string.Join(' ', step.Skip(1))}"); + runner?.ExecuteInlineCommands(string.Join(' ', step.Skip(1))); + waitTicks = NextGapTicks; + return true; + case "shot": + Shot(arg); + waitTicks = NextGapTicks; + return true; + default: + throw new InvalidOperationException("unknown step"); + } + } + + private void Check(bool condition, string what) + { + if (condition) + { + passed++; + GameLogger.Log("TEST", $"[PASS] {what}"); + } + else + { + Fail(what); + } + } + + private void Fail(string what) + { + failures.Add(what); + GameLogger.Log("TEST", $"[FAIL] {what}", LogLevel.Error); + } + + private bool Tap(string nodeName, int child) + { + var parent = GetTree().Root.FindChild(nodeName, true, false); + if (parent == null || child >= parent.GetChildCount() || parent.GetChild(child) is not Control target) + return false; + target.EmitSignal(Control.SignalName.GuiInput, new InputEventMouseButton { ButtonIndex = MouseButton.Left, Pressed = true }); + return true; + } + + private static bool Press(Node node, string label) + { + if (node is BaseButton button && button.IsVisibleInTree() && !button.Disabled + && (((button as Button)?.Text ?? string.Empty).Trim() == label || HasLabel(button, label))) + { + button.EmitSignal(BaseButton.SignalName.Pressed); + return true; + } + foreach (var child in node.GetChildren()) + if (Press(child, label)) + return true; + return false; + } + + private static bool HasLabel(Node node, string label) + { + foreach (var child in node.GetChildren()) + if ((child is Label text && text.Text.Trim() == label) || HasLabel(child, label)) + return true; + return false; + } + + private void Mouse(float x, float y, bool click) + { + var viewport = GetViewport(); + var position = new Vector2(x, y) * viewport.GetVisibleRect().Size; + viewport.WarpMouse(position); + viewport.PushInput(new InputEventMouseMotion { Position = position, GlobalPosition = position }); + if (!click) + return; + viewport.PushInput(new InputEventMouseButton { ButtonIndex = MouseButton.Left, Pressed = true, Position = position, GlobalPosition = position }); + viewport.PushInput(new InputEventMouseButton { ButtonIndex = MouseButton.Left, Pressed = false, Position = position, GlobalPosition = position }); + } + + /// + /// Replaces the text of the focused line edit (in the last opened tool window, else in the game) and emits its + /// change signal, as a player's typing would; focus it first with click. + /// + private void TypeText(string text) + { + var viewport = GodotObject.IsInstanceValid(lastTool) ? (Viewport)lastTool : GetViewport(); + var edit = viewport.GuiGetFocusOwner() as LineEdit; + Check(edit != null, $"type {text}"); + if (edit == null) + return; + edit.Text = text; + edit.EmitSignal(LineEdit.SignalName.TextChanged, text); + } + + /// + /// Calls a public method of a tool window opened by an earlier tool step, by name and with string + /// arguments: call schema_palette SetValue stat str. The tool types live in mods this suite does not + /// depend on, so the method is found by reflection; a missing window or method is a failure. + /// + private void CallTool(string[] step) + { + var window = step.Length > 2 && tools.TryGetValue(step[1], out var w) ? w : null; + var args = step.Skip(3).Cast().ToArray(); + var method = window?.GetType().GetMethods().FirstOrDefault(m => m.Name == step[2] + && m.GetParameters().Length == args.Length && m.GetParameters().All(p => p.ParameterType == typeof(string))); + Check(method != null, $"call {string.Join(' ', step.Skip(1))}"); + method?.Invoke(window, args); + } + + private void Drag(float x1, float y1, float x2, float y2) + { + var viewport = GetViewport(); + var size = viewport.GetVisibleRect().Size; + var from = new Vector2(x1, y1) * size; + var to = new Vector2(x2, y2) * size; + viewport.WarpMouse(from); + viewport.PushInput(new InputEventMouseMotion { Position = from, GlobalPosition = from }); + viewport.PushInput(new InputEventMouseButton { ButtonIndex = MouseButton.Left, Pressed = true, Position = from, GlobalPosition = from, ButtonMask = MouseButtonMask.Left }); + for (var i = 1; i <= 8; i++) + { + var point = from.Lerp(to, i / 8f); + viewport.PushInput(new InputEventMouseMotion { Position = point, GlobalPosition = point, ButtonMask = MouseButtonMask.Left, Relative = (to - from) / 8f }); + } + viewport.WarpMouse(to); + viewport.PushInput(new InputEventMouseButton { ButtonIndex = MouseButton.Left, Pressed = false, Position = to, GlobalPosition = to }); + } + + private static float ParseFraction(string text) + { + return float.Parse(text, System.Globalization.CultureInfo.InvariantCulture); + } + + private void Shot(string name) + { + if (string.IsNullOrEmpty(shotsDir) || DisplayServer.GetName() == "headless") + return; + DirAccess.MakeDirRecursiveAbsolute(shotsDir); + ViewportCapture.SavePng(GetViewport(), shotsDir.TrimEnd('/', '\\') + "/" + name + ".png"); + GameLogger.Log("TEST", $"DocShotsDriver: saved {name}.png"); + } + + private void Finish() + { + index = -1; + GameLogger.Log("TEST", $"[TEST_RESULT] name=doc_shots passed={passed} failed={failures.Count}"); + GetTree().Quit(failures.Count == 0 ? 0 : 1); + } + } +} diff --git a/test_suites/doc_shots/src/DocShotsTestInitializer.cs b/test_suites/doc_shots/src/DocShotsTestInitializer.cs new file mode 100644 index 0000000..4dfe462 --- /dev/null +++ b/test_suites/doc_shots/src/DocShotsTestInitializer.cs @@ -0,0 +1,41 @@ +using System.Linq; +using Cthangover.Core.Mods; +using Cthangover.Core.Utils; +using Godot; + +namespace Cthangover.Mods.Dialog.DocShots +{ + /// + /// Entry point of the doc_shots suite: adds the driver when the exact flag + /// --itest=doc_shots is given. --doc-steps=<file> is the + /// steps file, --shots=<dir> where the pictures go. + /// + public class DocShotsTestInitializer : IModInitializer + { + private static bool driverQueued; + + /// Nothing per mod. + public void OnModLoaded(string modId) + { + } + + /// Queues the driver once. + public void OnModResourcesReady() + { + var args = OS.GetCmdlineUserArgs(); + if (driverQueued || !args.Any(a => a == "--itest=doc_shots")) + return; + + driverQueued = true; + var steps = ArgValue(args, "--doc-steps="); + var shots = ArgValue(args, "--shots="); + GameLogger.Log("TEST", $"DocShotsTestInitializer: steps={steps ?? "none"}, shots={shots ?? "off"}"); + ModRoot.AddDeferred(new DocShotsDriver(steps, shots)); + } + + private static string ArgValue(string[] args, string prefix) => + args.Where(a => a.StartsWith(prefix, System.StringComparison.Ordinal)) + .Select(a => a.Substring(prefix.Length)) + .FirstOrDefault(); + } +}