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

    クラス ObjectDef

    型定義(object_defs の1エントリ、4節)。ロード完了後は不変として扱う。 実行時インスタンスは WorldObject(runtime)。

    インデックス
    actionTriggers: readonly ActionTrigger[]

    相手を伴わない操作(11節)。名前で引く側が、きっかけの種類を見分けずに読む。

    artByStagePropertyGlobalId: PropertyGlobalId | undefined

    カードに出す絵を段で切り替えるプロパティのグローバルID(art_by_stage、6.4節)。undefinedなら 持たず、常にこの型自身の絵(artName.png)を出す。

    1つの型につき高々1つ——複数のプロパティが同時に絵を主張する曖昧さを構造で禁じる。art(段の 兄弟キー)を宣言できるのは、ここが指すプロパティの段だけ(ロード時に検証、RawObjectDef.resolve)。

    artName: string

    この型の絵の名前(art、4.3節)。src/assets/objects/<この名前>.png を指す。既定は自分の 識別子で、art を宣言した型だけがそれ以外を名乗る(1枚を複数の型で共有するため)。アセット パックの型には出所のパックが添う(<パックのid>:<絵の名前>、AssetPack.md 5節)。

    絵を引く鍵はこちらであって識別子ではない。 識別子で引くと、共有している型が絵を持たない 扱いになり、黙って絵文字の代役へ落ちる。

    boundToOwner: boolean

    単独では存在できない型か(7.9節、既定false)。trueなら、入っていた親が消えるとき一緒に消える。

    身体から離れた「捻挫」も、器の無い水も、繋がる土地の無い道も存在しない。falseの物(包帯・石)は 親が消えるとその親の親へこぼれ出る。

    dragTriggers: readonly DragTrigger[]

    このObjectDefが(selfとして)持つ、カードを重ねて起こす操作(12節)。

    globalId: ObjectGlobalId
    isInProgress: boolean

    作りかけの物の型か(製作中オブジェクト、RecipeSystem.md 1節)。カードに青をかぶせる判定 (CardView.md 10節)が読む。判定はロード時に済ませる——型ごとに一度決まれば変わらない。

    isSingleton: boolean

    唯一のインスタンスしか存在しない想定(9節、例: world)。

    isStorage: boolean

    物を溜める入れ物として使う型か(storage、7.12節)。名乗った型は、上限(capacity)を持つ スロットの詰まり具合をカードのバーに出す(CardView.md 8節)。

    menuTriggers: readonly MenuTrigger[]

    画面のボタンに出る操作(11.1節)。

    name: string

    このObjectDefが宣言する持続効果(8節)の一式(ObjectPassiveEffects参照)。

    placementSlots: Readonly<Record<Placement, readonly SlotDef[]>>

    slotDefsのうち、それぞれの走査(placement、7.7節)に参加するものだけを宣言順に並べたもの。

    propertyDefs: readonly PropertyDef[]

    ローカルindexで並ぶ密配列。propertyIndexByGlobalId と対になる。

    propertyIndexByGlobalId: LocalIndexByGlobalId<PropertyGlobalId>

    グローバルなプロパティID → このObjectDefにおけるローカルindex。

    recipesProducingThis: readonly RecipeDef[]

    この型を成果物とするレシピ(13節)。宣言順。

    resists: ConditionNode | undefined

    持ち主を持てなくなる条件(resists、7.13節)。宣言が無ければundefinedで、いつでも誰の下へでも 入れる。bound_to_owner の対称形で、あちらが「今の持ち主から離れられない」を言うのに対し、 こちらは成立している間だけ「そもそも持ち主に付けない」を言う。

    slotDefs: readonly SlotDef[]

    このobject_defが持つスロットの定義(宣言順)。

    slotIndexByGlobalId: LocalIndexByGlobalId<SlotGlobalId>

    グローバルなスロットID → このObjectDefにおけるローカルindex。

    stackable: boolean

    同種と束ねてよい型か(既定true)。falseなら、同じ型でも1個ずつ別の枠に並ぶ。

    束ねたくないのは、その個体を名指しで操作する必要があるとき。道は行き先が個体ごとに違い、かごは 中身が個体ごとに違うので、束ねると代表の行き先・中身しか触れなくなる。入れ物ではなく物の性質 なので、スロットではなくここで宣言する(SlotSystem.md 4節)。

    stackOrder: StackOrderDef | undefined

    スタック内での並び順(表示専用)。undefined なら並び順は未定義で、常にスタックの末尾へ 追加される(新規インスタンス同士の相対順序=挿入順)。

    tags: readonly TagGlobalId[]

    この object_def が持つタグのグローバルIDの一覧(4節)。自分自身が直接宣言したタグと、参照した trait(5節)が宣言していたタグの両方を合成済みで持つ(trait自体は合成後に消えるため、 タグ指定のマッチング(TypeMatchRule)はこのタグ集合だけを見る)。

    tickTriggers: readonly TickTrigger[]

    時間が起こす操作(11.1節)。

    triggers: readonly InteractionTrigger[]

    このObjectDefが宣言している操作のきっかけ(11節・12節)。宣言順で、種類は混ざっている ——ページに並べるときと名前で引くときだけ、この並びを見る。

    visibleSlotGlobalIds: readonly SlotGlobalId[]

    外から中身が見えるスロット(visible_slots、7.11節)のグローバルID。並びが表示順で、 子ウィンドウのタブになる(Windows.md 1.2節)。名乗らないスロットは、中に入らないと分からない。

    wornCoverage: WornCoverage | undefined

    身につけたときに占める場所(covers / layer、7.5節)。宣言が無ければundefinedで、 何着でも重ねられる(部位を持たない物は誰の場所も奪わない)。

    • art_by_stage(6.4節)が指すプロパティの、stagesが宣言しているart接尾辞の一覧。art_by_stageが無ければ空。

      src の読み手は居ない——画面が要るのは今の段の接尾辞1つ(WorldObject.artSuffix)。開いて いるのは、宣言された接尾辞を全部数える口がここしか無く、絵のファイル名を確かめる側(tests/art)が要るため。

      戻り値 readonly string[]

    • その名前の操作を宣言しているか(きっかけは問わない)。

      パラメータ

      • name: string

      戻り値 boolean

    • その走査(placement、7.7節)で宛先候補になるSlotDefを宣言順に列挙する。行き先を宣言順に探す 規約は1つで、入口が2つあるだけ——autoはspawn/moveが、manualは札を重ねたドロップが辿る。

      走査から外したスロットは、こぼれ落ちる先を探すとき(WorldObject.spillTo)にも候補にならない ——「そもそも自動では入らない」という宣言だから。

      パラメータ

      戻り値 readonly SlotDef[]