UnmappedIsland ソースリファレンス - v0.1.0
    検索インデックスを準備しています...

    クラス ReferenceContext<S>

    宣言に書かれたReferenceRootを実行時のオブジェクトへ解くための、どの役に誰が居るかという文脈 (その場所がどの役を用意できるかはReferenceScopeが持つ)。

    参照を持つ側はこれを組み立てず、受け取ったものをそのまま下へ渡す。組み立てるのは「誰がこの行動を しているか」を知っている一番外側だけで、途中の誰も中身をばらして持ち回らない。

    ancestorはここでは解けない——「参照先のプロパティを定義している最初の祖先」なので、探すプロパティを 知っている側(PropertyPath)でしか決まらない。

    selfが居るかは型引数Sが持つ。 selfを要る側(InteractionDef.tryExecute・効果のapply)は ReferenceContext<WorldObject>を受け取るので、selfの居ない文脈を渡せない。

    型パラメーター

    インデックス
    agent: WorldObject | undefined

    この操作をしている者。操作でもなく、問う側がagentを渡すのでもない文脈ではundefined(11.5節)。

    instrument: WorldObject | undefined

    この操作で働きかけに使われる物。それを伴わない操作ではundefined(11.5節)。

    patient: WorldObject | undefined

    この操作で働きかけられる物。操作の外(rangeイベント等)ではundefined(11.5節)。

    picked: WorldObject | undefined

    amongが周りから選んだ相手。amongを書いた候補の中でのみ居る(10.3節)。

    self: S

    この文脈のself。効果の宣言元であり、parent・ancestorはここから辿る。

    session: WorldSession

    この文脈が指している世界。役はどれも欠けうる——selfの居ない文脈(asking)も、役の解決先を 持たない文脈(forSelf)もある——ので、どの役から引くかを受け取る側に選ばせず、組み立てた側が 答える。組み立てる口はどれも、役に就く物を少なくとも1つ必ず受け取るので、ここが空になる 経路は無い。

    どの役が答えるかは口ごとに違う——selfを受け取る口はself、askingはagent、withRolesはpatient。 1つの文脈の役はすべて同じ世界の物なので、居るものから引けばどれでも同じ。

    • 操作ではないが、問う側がagentを渡す場所(レシピの解放条件・crafting_conditions、13.2・13.4節)。 関係は張らない——「誰にとって解放されているか」を問う判定であって、誰も何にも働きかけていない (11.5節)。成果物のインスタンスがまだ無いのでselfも居ない。

      問いが「誰にとって」なので、agentは必ず居る(13.2節)。誰かを立てずに条件そのものの有無を 見たいなら、条件を持っているか(RecipeDef.unlock)を直接見る。

      パラメータ

      戻り値 ReferenceContext<undefined>

    • rootが指すオブジェクト。解決先を持たないrootはundefined——childは相手が1つに定まらず (PropertyPassiveEffect.setChildRegistered)、ancestorは探すプロパティが要る(ownerOfProperty)。

      パラメータ

      戻り値 WorldObject | undefined