コンテンツにスキップ

選択肢とコンテナ状態

このページは Ktory の設計原則 に従い、現在の契約と長期目標を区別します。

#choice は基本選択に使う慣用的なコンテナ名です。パーサーはインデントした子項目を認識し、コアは決定可能な項目を判断します。ボタンやリストなどの表示方法はホストが決めます。

choice.loop
* [塔について聞く]
アリス: 何百年も前からここにあるの。
+ [外を見る]
: 風はまだ止んでいない。
+ [出る] -> break
: 扉を開けた。

一度きりの項目と繰り返せる項目

Section titled “一度きりの項目と繰り返せる項目”

* は有効な決定後に消費済みとなり、同じセッションでメニューを開き直しても選べません。+ は消費されません。表示は ChoiceOption.CanSelect と IsConsumed に従い、消費済みの項目を再び有効にしないでください。Start() は履歴を初期化します。この段階ではディスクへ永続化しません。

選択の確定には進行が含まれる

Section titled “選択の確定には進行が含まれる”

メニュー表示中は Status == AwaitingChoice です。Step() では通過できません。SubmitChoice(option.Id, menu.PresentationId) で有効な項目を決定し、直ちに次の出力を読みます。コアは選択先の最初の拍で止まり、その拍はセリフ、文字のない指令、別の選択肢のいずれかになります。

.loop は分岐の終了後にメニューを開き直し、-> break は最も近い活動中のループを抜けます。決定可能な項目がない基本選択は自然に通過します。言語切替でラベルが変わるため、表示文字列を固定 ID として使わず、項目の Id を使ってください。

独自 Handler の登録と未知コンテナの診断は、実際の実装で確認が必要です。試読時に外部条件を緩く扱っても、実際のゲームで条件が成立したことにはなりません。