選択肢とコンテナ状態
このページは Ktory の設計原則 に従い、現在の契約と長期目標を区別します。
選択肢とコンテナ
Section titled “選択肢とコンテナ”#choice は基本選択に使う慣用的なコンテナ名です。パーサーはインデントした子項目を認識し、コアは決定可能な項目を判断します。ボタンやリストなどの表示方法はホストが決めます。
* [塔について聞く] アリス: 何百年も前からここにあるの。 + [外を見る] : 風はまだ止んでいない。 + [出る] -> break
: 扉を開けた。一度きりの項目と繰り返せる項目
Section titled “一度きりの項目と繰り返せる項目”* は有効な決定後に消費済みとなり、同じセッションでメニューを開き直しても選べません。+ は消費されません。表示は ChoiceOption.CanSelect と IsConsumed に従い、消費済みの項目を再び有効にしないでください。Start() は履歴を初期化します。この段階ではディスクへ永続化しません。
選択の確定には進行が含まれる
Section titled “選択の確定には進行が含まれる”メニュー表示中は Status == AwaitingChoice です。Step() では通過できません。SubmitChoice(option.Id, menu.PresentationId) で有効な項目を決定し、直ちに次の出力を読みます。コアは選択先の最初の拍で止まり、その拍はセリフ、文字のない指令、別の選択肢のいずれかになります。
.loop は分岐の終了後にメニューを開き直し、-> break は最も近い活動中のループを抜けます。決定可能な項目がない基本選択は自然に通過します。言語切替でラベルが変わるため、表示文字列を固定 ID として使わず、項目の Id を使ってください。
独自 Handler の登録と未知コンテナの診断は、実際の実装で確認が必要です。試読時に外部条件を緩く扱っても、実際のゲームで条件が成立したことにはなりません。
