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

    クラス RawObjectDef

    object_defs(GameElementDefinition.md 4節)の1エントリの、まだtrait解決を経ていない生の形。 trait上書きマージ(resolve参照)がまだ起こりうるフィールドは、意味解釈済みの型にせず 生YAMLノードのまま持つ。globalIdのみパース時点で確定し、tags・prop/slot名等はresolveで 初めて確定する。

    インデックス
    body: RawDeclarationBody = ...

    混ぜ込める宣言一式(traitと共有する部分)。

    declaredNode: YAMLMap

    nodeの実体。modifyDeclarationが初めて書き換えるとき、自分の複製に差し替わる。

    globalId: ObjectGlobalId

    object_defsのキーとして作った名前(WorldCodexYamlLoader.defineObjectName)のグローバルID。trait解決を待たずパース時点で確定する。

    isSingleton: boolean = false
    name: string
    ownsDeclaredNode: boolean = false

    declaredNodeが自分の複製か(=そのまま書き換えてよいか)。

    packName: string | undefined

    この宣言を持ち込んだアセットパックの識別子(同梱ぶんならundefined)。絵の出所を決める ——この型の絵は、まずこのパックの在庫表から探す(AssetPack.md 5節、artName参照)。

    recipes: YAMLMap<unknown, unknown> | undefined

    recipes(13節)。成果物ごとの内容なのでtrait合成の対象にしない(resolve参照)。

    source: string

    読み込み元。重複エラーメッセージの出所表示にのみ使う。

    traitNames: string[] = []
    variationAxes: YAMLMap<unknown, unknown> | undefined

    variation_axes(3.5節)。この型の変種を並べる軸で、読むのは生成器(axisVariants.ts)だけ。 trait合成の対象にしない——どんな変種を持つかは、混ぜ込まれる側ではなく型自身の性質。

    • get node(): YAMLMap

      宣言そのもの。読むだけ——渡された時点では読み込み元のもので、そちらは同じノードを次の 読み込みへも配る(loadWorldCodex)。書き換えるならmodifyDeclarationを通す。

      戻り値 YAMLMap

    • この型が名乗る絵の名前(art、4.3節。宣言が無ければ識別子そのもの)。パックの型には出所の パックを添える(AssetPack.md 5節)——引く側はこれ1本で、そのパックの絵を先に見て、無ければ 同梱ぶんへ落ちる(objectArt)。

      パラメータ

      • declared: string | undefined

      戻り値 string | undefined

    • 宣言を書き換える(patch、3.4節)。書き換えは読み込み元へ残らない——受け取った宣言は 他人のものなので、初めて書き換えるときに自分の複製へ移ってから渡す。

      書き換えが済んだら下の各フィールドを取り直す。フィールドはこのノードの一部を指しているだけ なので、両者が食い違ったままresolveへ進まないよう、取り直しはこのクラス自身が引き受ける。

      パラメータ

      • modify: (node: YAMLMap) => void

      戻り値 void

    • 宣言から各フィールドを取り直す。trait合成がまだ起こりうるものは生YAMLノードのまま持つ。

      戻り値 void

    • 参照するtraitを合成し(フェーズ1: YAMLノードレベルのマージ)、そこから最終的なObjectDefを 組み立てる(フェーズ2: loaderの各parse関数による意味解釈)。

      合成規則(フェーズ1):

      • props/slots/interactions: 同名エントリが複数のtraitにあればエラー(5節)。 object_def自身が同名エントリを持つ場合はフィールド単位で上書き(残りはtrait側を引き継ぐ)。
      • passives/covers: 識別子を持たないため単純に連結(trait由来→自分自身の順)。
      • stack_order/art/art_by_stage/resists/layer: 自分自身の指定を優先。無ければちょうど1つの traitが指定している必要がある(複数ならエラー)。
      • recipes: 成果物ごとの内容なので合成せず、自分自身の宣言だけを読む。

      パラメータ

      戻り値 ObjectDef