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

    インターフェイス CardOperationsFactory

    札の上でプレイヤーが起こせること(ActionSystem.md・SlotSystem.md)。見た目(cardLooks)と違い、 誰が・どのセッションで行うのかが要る——実行にかかる時間も、要件を満たすかも、操作する本人で 決まるため。gameから読むのは操作者(player.instance)・セッション・自動補充が探す現在地だけ。

    interface CardOperationsFactory {
        actionsOf: (instance: WorldObject) => readonly CardAction[];
        combinationBetween: (
            dropped: WorldObject,
            carried: readonly WorldObject[],
            count?: number,
        ) => CardCombination | undefined;
        forStack: (stack: readonly WorldObject[], place: Slot) => CardOperations;
    }
    インデックス
    actionsOf: (instance: WorldObject) => readonly CardAction[]

    その物で実行できる操作だけ。札にならないもの(キャラクタ自身・現在地)は動かせないので、 場所を持たないこちらを使う。

    combinationBetween: (
        dropped: WorldObject,
        carried: readonly WorldObject[],
        count?: number,
    ) => CardCombination | undefined

    2枚の札を重ねたときに画面へ出す組み合わせ1つ(引けるものが無ければundefined)。droppedは 落とされた側の代表、carriedは掴んで運んできた個体を運んできた順に並べたもの(先頭が指の掴んだ 札)で、countはまとめて実行する個数。

    両向きを見る——落とされた側が宣言している組み合わせも、掴んだ側が宣言しているものも引く (CardInteraction.md 2節)。素材側に1つ書けば、道具を素材へ運んでも素材を道具へ運んでも同じ 組み合わせが成立する。

    実行する手段とは限らない——どちらの向きにも成立するものが無く、宣言が断る理由を持って いればそれを enabled: false で返す(同2.1節)。

    forStack: (stack: readonly WorldObject[], place: Slot) => CardOperations

    その束を1枚の札として動かす操作。placeは今その束が居る場所。