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

    クラス ReferenceScope

    宣言が置かれた場所が、参照の解決に何を用意できるか(GameElementDefinition.md 14.1節。操作の3役に ついては同11.5節「役を書ける場所」)。

    ロード時に弾く根拠と、実行時に組むReferenceContextは同じ1つの事実。 agentが居ない場所で agentを指せてしまうと、書けたのに実行時は必ず空振りする。だから場所ごとに許すrootを数え上げるのでは なく、場所は自分が何を持つかだけを宣言し、rootの側が何を要るかを言う。両者の食い違いは、 一覧を書き写す代わりに導出で消える。

    下のstaticは11.5節の表の行と1対1ではない。 持つものが同じ場所は同じstaticを使う——dragと put_inはacting.withInstrumentを、on_max/on_minとresists(7.13節)はdeclarationを共有する。 表の行ごとにstaticを立てると、数え上げをこちら側で作り直すことになる。

    インデックス
    acting: ReferenceScope = ...

    宣言元の個体に加えて、操作している者が居る場所(誰かが押した・引いた結果として起きる、11節)。

    操作の宣言はpatientに乗る(11.5節)ので、patientが居るのはここから。ただしselfと同じ物を 指すので名前としては書けない(selfIsPatient)。使う物が運ばれてくるかは場所ごとに違うので、 そちらだけをwithInstrumentが足す。

    broadcasts: boolean

    相手が1つに定まらなくてよいか。childを指せるのはここが真の場所だけ(8.1節のブロードキャスト登録)。

    declaration: ReferenceScope = ...

    宣言元の個体だけが居る場所(on_max/on_min 6.3節・resists 7.13節)。操作ではないので役は居ない。

    hasAgent: boolean

    操作している者(agent)が居るか。誰かが操作しているとは限らない場所には居ない。

    hasInstrument: boolean

    働きかけに使われる物(instrument)が居るか。真になるのは物が運ばれてくる場所だけ(下のwithInstrument)。

    hasPatient: boolean

    働きかけられる物(patient)が居るか。操作の場と、その参加者のpropsだけ(11.5節)。

    hasPicked: boolean

    amongが選んだ相手(picked)が居るか。amongを書いた候補の中だけ(10.3節)。

    hasSelf: boolean

    宣言元の個体(self)が居るか。parent・ancestorもここから辿るので、無ければ揃って解けない。

    namesProperty: boolean

    参照先のプロパティ名が決まっているか。ancestorはそれで祖先を探すので、無ければ解けない。

    participantProps: ReferenceScope = ...

    参加者のprops(base 6.5節・passives 8節)。3役とも書ける——そこには「宣言元がどの役に就くか」 を静的に決めるものが無いので、patientもselfの言い換えにはならない(11.5節)。

    pushesReversibly: boolean

    押すのが可逆な寄与か(modify、8.3節)。寄与は相手の上で合計されて誰の分か見分けられなくなるので、 同時に2つの操作へ就きうる役(instrument・patient)へは押せない。agentは1つの操作に1人しか 居ないので混ざらない。

    selfIsPatient: boolean

    その patient が宣言元(self)と同じ物か。操作の宣言はpatientに乗る(11.5節)ので、操作の宣言の 中では必ず真になり、そこではpatientと書けない——同じ物に2つの名前が付くと、読む側は毎回どちらが 正かを考えることになる。参加者のpropsでは宣言元がどの役に就くかが静的に決まらないので偽。

    • get pushingReversibly(): ReferenceScope

      可逆な寄与(modify、8.3節)を押す場所。同時に2つの操作へ就きうる役へは押せない——寄与は 相手の上で合計され、読んだ側は誰の寄与かを見分けられないので、混ざると戻せなくなる。

      戻り値 ReferenceScope

    • get sharedRoleReason(): string | undefined

      複数の操作に同時に就きうる役(instrument・patient)を、この場所が拒む理由。拒まないならundefined。 拒むのは可逆な寄与を押す場所だけ(8.3節)。

      戻り値 string | undefined

    • get withoutSelf(): ReferenceScope

      宣言元の個体が居ない場所(レシピの解放条件13.2節・crafting_conditions 13.4節)。居ない理由は 場所ごとに違うので、13.2・13.4節が各々で述べる。

      selfを外すと、それだけを指していたpatientも道連れで外れる——selfIsPatientな場所(acting) ではpatientに独立した名前が無く、selfの言い換えでしかないため(11.5節)。

      戻り値 ReferenceScope

    • rootがこの場所で解決先を持たない理由(この場所に何が無いか)。持つならundefined。 呼び出し側は、どこの宣言かを添えてロード時エラーにする。

      パラメータ

      戻り値 string | undefined