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

    インターフェイス EffectReader

    一時的な効果(9・10節)が何を宣言しているかを読み上げる相手(ActiveEffect.readBy)。

    効果の木そのものは外へ出さない。出すのは「setがある」「pickの候補が3つあって重みはこれ」という 宣言の読み上げだけで、それをどう解釈するか(重みを確率へ直す・期待値を取る・値域の端を割ったと みなす)は読み手の裁量——定義から数値を導く近似は、ドメインではなく解析側(src/analysis)に置く。

    動詞ごとにメソッドを持つのは、効果を1つ足したときに読み手が黙って取りこぼさないようにするため (readByは抽象なので、実装を書かない効果はコンパイルが通らない)。

    interface EffectReader {
        add(reading: AddReading): void;
        become(
            subject: ObjectRefReading,
            axisValues: ReadonlyMap<string, string>,
        ): void;
        conditional(reading: ConditionalReading): void;
        destroy(target: ObjectRefReading, reason: string | undefined): void;
        move(
            subject: ObjectRefReading,
            destination: ObjectRefReading,
            slotGlobalId: SlotGlobalId | undefined,
        ): void;
        pick(reading: PickReading): void;
        set(
            target: ReferenceRoot,
            propertyGlobalId: PropertyGlobalId,
            value: SetValueReading,
        ): void;
        signal(name: string): void;
        spawn(objectGlobalId: ObjectGlobalId, count: number): void;
        transfer(reading: TransferReading): void;
    }
    インデックス
    • become(9.9節)。行き先は識別子ではなく座標——動かす軸とその値——で渡す(3.5節)。 どの型になるかは対象が今居る座標との組み合わせで決まるので、宣言だけでは定まらない。

      パラメータ

      戻り値 void

    • 条件つきの効果(rangeイベントのconditions、6.3節)。排他な二択を、排他なまま渡す—— 満たした回の効果と満たさない回の効果を並べて渡すと、宣言順を「順に起こる」と読む読み手が、 起こりえない組み合わせを1つの場合として畳む。

      pickと違い重みが無いので、どちらへ倒れるかは確率としては言えない。枝を読ませる口は 読み上げ(ConditionalReading)自身が持つので、読み手は自分の問いに合う口を呼ぶだけでよい ——どれが自分の問いに合うかは、口それぞれの説明が持つ。

      パラメータ

      戻り値 void

    • destroy(9.3節)。reasonはこの消滅が名乗る名前で、書かれていなければundefined (名乗らない消滅は、消された側にも何も残らない)。

      パラメータ

      戻り値 void

    • pick(10節)。重みは宣言のまま(リテラルか参照)渡す。確率へ直すのも、全部0のときに 先頭を選ぶ規約(PickEffect.selectWeighted)を当てはめるのも読み手の側。

      候補を読ませる口は読み上げ(PickReading)自身が持つので、読み手は自分の問いに合う口を 呼ぶだけでよい——どれが自分の問いに合うかは、口それぞれの説明が持つ。

      パラメータ

      戻り値 void

    • signal(9.8節)。世界の形は何も変わらない。

      誰の身に起きたかは渡さない。 「避けた」のか「避けられた」のかは識別子を付けた側の裁量で、 読む側がその意味に関心を持てない以上、対象にも関心を持てない。

      パラメータ

      • name: string

      戻り値 void

    • spawn(9.4節)。配置先(into)は読み上げない——どこへ入るかは世界の形の話で、宣言の意味ではない。

      パラメータ

      戻り値 void