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

    クラス PlayScene

    プレイ中の画面(ScreenLayout.md)。

    カードはレーンからはみ出しても切り抜かず、後から描く隣接エリアの背景板で隠す。そのため 組み立ての順序(フィールドエリア → ダッシュボード → オプション/フィルターバー)に意味がある。 フィールドエリアの表示物だけは、順序ではなくSCREEN_DEPTH.fieldの層で奥へ置く(そこだけを 作り直すため)。

    階層 (一覧を見る)

    インデックス
    activity: Activity = 'idle'

    今この画面が見せている最中のこと。立てるのは始める側、降ろすのは終わらせる側の1箇所ずつ ——別々のbooleanで持つと、片方だけ降ろし忘れて操作を受け付けないまま固まる。

    • exploring: 探索の結果待ち(経過も見せている。次の探索は始められない)
    • elapsing: 行動の経過を見せている(passTime参照)
    • transiting: 場面転換の暗転 → フィールドエリアの作り直し → 明転(transit参照)
    alertFrame: ScreenAlertFrame

    致命的域のステータスがある間、画面全体の枠を明滅させる。

    土地の絵の遅延ロード。initで必ず設定される。

    artWaitGeneration: number = 0

    絵待ちの世代番号。画面の作り直し(rebuild)は張っていた暗幕ごと表示物を捨てるため、 捨てられた幕を明転させようとする古い待ちをこの番号の不一致で無効にする (revealWhenLocationArtLoaded参照)。

    cardTable: CardTable
    childWindow: ObjectWindow | undefined

    開いている子ウィンドウ(ObjectWindow)と、それが映しているもの。画面の作り直しをまたいで 開いたままにするために持つ。

    childWindowPlaceは今開いているタブが映している場所(説明のタブではundefined)。中身を 映している間は、その場所が手持ちの「隣」になる(ShownCards.edgeTargets・stacksOf参照)。

    childWindowDef: string | undefined

    開いているタブを覚える型の名前(覚えない相手ではundefined、Windows.md 1.2節)。

    childWindowPlace: Slot | undefined
    childWindowTabs: readonly { key: string; place: Slot }[] = []

    タブに並べているスロットと、その識別子(説明のタブは並びの外なので持たない)。

    codex: WorldCodex

    いずれもinitで必ず設定される(Phaserはinit→createの順に呼ぶ)。

    conditionRow: Container

    状況アイコンの行。中身は行動のたびに入れ替わる(showConditions)ので、画面の組み立て時に器を 作っておき、以後はこの中だけを作り直す——あとから作った表示物は、開いている子ウィンドウの覆いより 手前へ出てしまう(buildStatusAreaと同じ理由)。

    daybreakOverlay: DaybreakOverlay | undefined

    出ている最中の日の出・日の入りの演出。次のがすぐ来る(夜を通して眠る)ときは差し替える。

    emptyCellCycle: number = 0

    空き枠に出している型の番号(slotCells)。1秒ごとに1つ進む。

    fieldPanel: Rectangle

    フィールドエリアの背景板。レーンと合わせて、フィールドエリアだけを作り直すときに捨てる。

    filterButtons: Button[] = []
    fixtureLane: CardLane

    カードを並べるレーンと、その内容の差し替えを動きとして見せる層。buildのたびに作り直される。

    gameSession: StartedGame
    handLane: CardLane
    haze: LaneHaze

    アイテムレーンに立てる陽炎。掛ける対象はフィールドエリアの作り直しで入れ替わる。

    itemLane: CardLane

    各エリアの位置・大きさ。画面寸法から決まるので、buildのたびに作り直される。

    locale: Localization
    mapPositions: Map<number, MapPlacement> = ...

    ユーザが地図に置いたカードの位置(サイトindex→正規化座標)。セーブデータが持つ値の 作業用の複製で、カードを置くたびにスロットへ書き戻す(placeMapCard)。

    mapWindow: MapWindow | undefined

    開いている地図ウィンドウ。探索の子ウィンドウと同じく、画面の作り直しをまたいで開いたままにする。

    metrics: ScreenMetrics = ...

    現在の画面寸法。buildの中でだけ参照する。

    portraitLane: CardLane

    ポートレイトを置く枠1つのレーン(CardLaneOptions.bare)。キャラクタ自身の札も他と同じレーンの 札なので、子ウィンドウへ貸し出すのも、そこから帰ってくるのも他のカードとまったく同じ経路を通る。

    portraitRect: Rect | undefined

    ポートレイトカードの枠。キャラクタ自身を映す札なので、回復の粒の行き先になる(showGains)。

    recipeWindow: RecipeWindow | undefined

    開いているレシピ一覧(RecipeWindow)。開いていなければundefined。

    save: SaveData

    開いているセーブデータとそのスロット番号。固定表示の書き戻し先として持つ(savePinnedStatuses)。 シナリオからの起動はスロットを使わないため-1。

    selectedFilter: number = 0

    選んでいる絞り込みのボタンの位置(0は「すべて」=絞り込まない、ScreenLayout.md 8.1.6節)。 場所を移っても時間が経っても続くので、画面の作り直しでは捨てない。

    settings: Settings = ...

    タブの記憶の置き場所。セーブ枠ではなくプレイヤーの好みなので、設定と同じところに置く。

    shown: ShownCards = ...

    画面に出ている札の並び(ShownCards)。表示もタップもドラッグもここを通す——見えている札と 操作が動かすインスタンスを別々に数えないため。

    読む先は呼び出しで渡す。viewは行動のたびに作り直され、借り出しも開閉のたびに変わるので、 控えを持たせると古い並びを答えることになる。

    shownDaylight: DaylightMoment

    今この画面が映している日付と時刻。次に映すものと比べて、日の出・日の入りの境目をまたいだかを 訊く(showDaybreak)ので、またいだかを憶えるのではなく、映しているものだけを憶える。

    shownLocationDepth: number = 0

    設置物レーンが映している場所を、現在地から外側へ数えた段(0が現在地。ScreenLayout.md 7.1.1節)。 覚えるのは段であって場所そのものではない——外側が無くなれば(筏から降りれば)自動的に 現在地へ戻り、外側を見ていたという記憶がどこにも残らない。

    situationPanel: WeatherPanel
    skyTint: ScreenSkyTint

    明るさに応じて画面全体へかぶせる翳り・輝き。雨と同じく作り直しの対象外。

    slotIndex: number = -1
    status: ShownStatuses = ...

    ステータスエリアに出ている行と、その見え方(ShownStatuses)。行の選び方・増減・固定表示を 混ぜた結果はここが答える——画面はバーを並べる位置だけを決める。

    statusBars: ReadonlyMap<string, StatusBar> = ...

    ステータスエリアに出しうるバー(プロパティの識別子で引く)。出す行と並び順は行動のたびに変わるが、 バー自体は画面の組み立て時に全プロパティ分を作っておく(showStatuses参照)。

    statusDetailKey: string | undefined
    statusDetailWindow: StatusDetailWindow | undefined

    開いているステータス詳細ウィンドウと、それが映しているステータスの識別子。画面の作り直しを またいで開いたままにするため、どのステータスを映していたかを憶える(値は引き直す)。

    statusRowGap: number = 0

    ステータスエリアの行の間隔(どのバーをどの行へ置くかは行動のたびに引き直す)。

    sunlight: SunlightHours

    太陽の光だけで手元の細かい作業ができる時刻(SunlightHours)。世界の宣言から決まるので、 このプレイの間は変わらない。

    weatherOverlay: WeatherOverlay

    天気に応じてフィールドエリアへ降らせる雨。現在地には依らないので、作り直しの対象外。

    • get busy(): boolean

      演出を見せている最中か。この間はワールドを変える操作を受け付けない(acceptsOperation)。

      戻り値 boolean

    • get currentLandArtKey(): string

      今の土地の識別子。絵の遅延ロードの単位(artFiles参照)で、土地カードの絵とレーンの地が この1つの名前で束ねられている。

      札の絵とは別物。 札が映す絵は段で差し替わりうる(art_by_stage)が、読む単位は土地そのもの ——札の絵の名前で待つと、段の絵しか見ずにレーンの地を待ち損ねる。

      戻り値 string

    • get draggableLanes(): readonly CardLane[]

      今ドラッグの相手にできるレーンを、画面で手前に重なっているものから。

      子ウィンドウは設置物とアイテムのレーンを覆っているので、開いている間その2つは外す。残すと ドロップ先の判定(重なりを見ず「最初に当たったレーン」、CardDragController.dropCandidateAt)で 覆われている側が先に当たり、ウィンドウの中のカードへ落とせないうえ、隠れているはずの枠に 「ここへ落とせる」という印が出る。手持ちはウィンドウの外なので残る(slotWindowArea)。

      openLanes自体は並べ替えられない——差し替えの中身と位置で対応付けている(showView)。

      ポートレイトは落とし先にしない。 キャラクタ自身の札はワールドの場所を映す枠ではないので、 そこへ落としても行き先が決まらない。

      戻り値 readonly CardLane[]

    • get locationArtLoaded(): boolean

      現在地の絵が届いているか。絵が1枚も無い土地(最小のCodex)では、待つものが無いので即座に真。

      待っているのはレーンの地。 札の絵は届いた時点で貼り替わる(Card)が、レーンの地は組み立て時に しか差し込めない。同じ単位で一度に届くので、札の絵と別々には待たない。

      戻り値 boolean

    • get midAction(): boolean

      行動の途中の値を見せているか(isMidAction)。

      戻り値 boolean

    • get openLanes(): readonly CardLane[]

      今画面に出ているレーン。札を探すため(rectOfInstance)のもので、並びは引き直さない。

      戻り値 readonly CardLane[]

    • get shownDepth(): number

      設置物レーンが今映している段。映せる段が減っていたら内側へ引き戻すので、筏から降りた後に 「もう無い外側」を指し続けることがない。

      戻り値 number

    • get shownLanes(): readonly ShownLane[]

      今カードが並んでいるレーンと、それが映しているもの。レーンと場所の対を書くのはここだけ ——別々に書くと、レーンがどこを映しているかの答えが場所ごとに食い違う。

      ポートレイトも枠1つのレーンで、子ウィンドウを開いている間は借りた札の枠も中身の並びも同じ 差し替えに乗る——手持ちとの間でカードが行き来するため、外していると出ていったカードが現れない。

      戻り値 readonly ShownLane[]

    • 掴んだ札を重ねれば何かが起きる札(CardDragController.showAcceptingCards)。受け入れるかを 決めるのはShownCardsで、ここはレーンと場所を突き合わせるだけ。

      今ワールドの場所を映していないレーンは落とし先にならないので、そこの札は光らない (子ウィンドウが説明のタブを開いている間の中身のレーン、札を借りていない窓の札の枠)。

      パラメータ

      戻り値 ReadonlySet<Card>

    • アクションを子ウィンドウのボタンの形へ直す。ownerは、エラー報告に残す「誰のアクションか」 (errorReport参照)。カードのものもキャラクタ自身のものも同じ経路を通る。

      パラメータ

      戻り値 ObjectWindowAction[]

    • バーの送り具合を映すスクロールバー。縦に送るバーには同じ物を90度回して立てる——横の帯の絵を 回して縦の区切りに敷くのと同じ(shapes.addTiledImageVertical)。回すと厚みは手前側へ伸びるので、 起点はバーの終わりの辺に置く。

      パラメータ

      • bar: Rect
      • axis: "x" | "y"

      戻り値 ScrollIndicator

    • バーのアイコンボタン。枠線の色は置かれるバーが決める(地の色に合わせるため。theme参照)。

      スロットボタンと同じく紙として置かれるので、同じ影を落とす(addSlotButton参照)。

      押されたことにするのはButtonに任せる(生のpointerupを繋がない)——バーは送れるので、 よそで始めたドラッグを離した先がこのボタンでも、押されたことになってはいけない。

      パラメータ

      • rect: Rect
      • spec: BarIcon
      • active: boolean
      • border: number
      • オプションonTap: () => void

      戻り値 Button

    • 地図・装備・怪我・レシピのボタン。絵を中央に1つ置くだけで、文字は載せない(ScreenLayout.md 4.2節)。

      どれも役割が固定なので、絵だけで区別が付く。文字を持たなければ、言語ごとに変わる文字数を ボタンの内側へ収める必要も無い(日時のフリップカードと同じ考え方)。

      カードは絵に影が焼いてあり(card_frame.json)、このボタンだけが本のページに貼り付いて 見えていた。紙として置く見せ方そのものはPaperButtonが持つ。

      パラメータ

      • rect: Rect
      • spec: {
            art:
                | "map"
                | "settings"
                | "equipment"
                | "injury"
                | "recipe"
                | "codex"
                | "diary"
                | "filter_all";
            fill: number;
            icon: string;
            onTap: () => void;
        }
      • index: number

      戻り値 void

    • 地図・装備・怪我・レシピの4ボタンを、渡した列へ縦に並べる。

      並びは持ち物の近さの順。地図と装備は身につけているもの、装備と怪我は開く子ウィンドウの形が 同じで、地図が最も押す頻度が低いので端に来る。レシピは持ち物ではないので反対の端。

      パラメータ

      戻り値 void

    • タグで書かれた受け入れ・要求の空き枠に出す型を1つ進める(1秒ごと)。出す型が1つしかないなら 引き直さない——見た目が変わらない差し替えを毎秒走らせる理由が無い。

      戻り値 void

    • ドロップで手から放したもの(releasedBy)は手を離した場所に居るので、そこから動き出す。

      combinationの成果物がどこから出るかは渡さない。効果を宣言している側の札(重ねた相手か、 逆向きに成立したなら掴んだ札)を、世界の変化が出どころとして答える(originRectsOf)。

      パラメータ

      戻り値 void

    • ワールドを変える操作を実行し、その結果を画面へ反映する。実行するかどうかもここが決める ——changeがundefined(何も起きない落とし方)でも、演出中でも、決めた側として後始末まで行う。

      releasedは、その操作で手から放したもの(MotionContext.released)。画面の事実だけを受け取る ——新しく現れるカードがどこから飛んでくるかは、この中で起きた世界の変化が答える(originRectsOf)。

      その操作がゲーム内時間を消費した場合(durationを持つcombination等)は、探索と同じく経過分だけ 実時間をかけてから結果を見せる。時間を消費しない操作は待たずにそのまま反映される(passTime参照)。

      移動を伴う操作かどうかはワールドを変えた時点で分かる(画面へ反映するのはその後なので、経過前の 状態が出たまま)。そのため、場面転換の暗転を時間経過と並行して進められる(transit参照)。

      labelは、エラー報告に残す「何をしたか」(errorReport参照)。ワールドを変える操作はすべてここを 通るので、再現手順として読める言葉を渡す。

      パラメータ

      • label: string
      • change: (() => void) | undefined
      • オプションreleased: { followers: readonly number[]; grabbed: number; rect: Rect }

      戻り値 void

    • ポートレイトカードと、地図・装備・怪我・レシピのボタン、条件のアイコン(ScreenLayout.md 4.1節)。

      ボタンはポートレイトの右へ縦積みする。このエリアで最も背の高いポートレイト(320u)の 高さをボタンが使い切るので、下へ積むより1つあたりを大きく取れる。縦型・横型で同じ組み方に なるため、向きによる分岐も要らない。

      戻り値 void

    • 絞り込みのボタン列(ScreenLayout.md 8節)。選択中のタグは背景色を反転させて強調する。

      並ぶボタンを決めるのはワールド(card_filters、同8.1.3節)で、画面が足すのは先頭の 「すべて」だけ。絵も絵文字もその宣言が名乗るので、ここに対応表は無い。

      戻り値 void

    • 設置物レーン。ピン留めの札も敷く絵も、映している場所のもの(ScreenLayout.md 7.1.1節)なので、 映す先が変われば作り直す相手はこのレーンだけになる(rebuildFixtureLane)。

      戻り値 CardLane

    • バーに並ぶアイコンボタンを組む(オプション・フィルター共通)。バーに収まらない数を渡されても 全部押せる——並びを送れる面に載せ、はみ出した分をドラッグとホイールで送る (ScreenLayout.md 8節。収まっていれば送り先が無く、スクロールバーも出ない)。

      ボタン自身も送る面に含める。 ボタンがバーの厚みいっぱいを占めるので、地の見えている隙間 だけでは掴む所がほとんど残らない。

      送った先は切り抜かない(CardLaneと同じ)——並びが伸びる先は画面の外か、この後に置く隣のバーの 背景板が覆う。

      パラメータ

      戻り値 Button[]

    • 情報エリアの背景(1枚の本のページ)。フィールドエリアに接する辺だけ、表紙の縁がフィールドへ 食い込む(informationArt参照)。内訳の各エリアは自前の背景板を持たず、このページの上に直接載る。

      絵は縦横同率で拡大縮小し、フィールドエリア側の辺を基準に置く。反対側(横型の左・縦型の上)は 画面外へはみ出す前提で、絵の側に十分な余白が取られている。極端な画面比で絵が届かない場合に 備えて、下地に紙の色の背景板を敷く。背景板はレーンからはみ出したカードを隠す役目も兼ねる。

      戻り値 void

    • 縦型は画面最上部の横長バー(右寄せ)、横型は右サイドバー上段の縦積み。

      戻り値 void

    • バーは上端に揃える。表示件数が変わっても位置が動かないようにするため(StatusArea.md 1節)。

      出す行は行動のたびに変わる(安全域のステータスは出さない)が、バーはここで全プロパティ分を作って おき、以後は見せ方と位置だけを変える。あとから作ると、開いている子ウィンドウの覆いより手前へ 出てしまうため(CardTable参照)。

      戻り値 void

    • その場所を映すレーンに並べる枠(slotCells)。絞り込みが札を隠しているレーンには、隠れている 枚数の印が付く(hiddenCountCells)——どこに絞り込みが効くかを知っているのはShownCardsなので、 絞り込みの効かない場所(手持ち・子ウィンドウ)では隠れている枚数が0になり、印も付かない。

      パラメータ

      戻り値 readonly LaneCell[]

    • 開いたタブが変わった。映している場所ごと変わるので、落とし先も並びも引き直す (ドラッグの相手になるレーンはタブごとに作り直されている)。

      パラメータ

      • tab: string

      戻り値 void

    • 今のワールド時刻(エラー報告と操作の記録に添える)。

      戻り値 string

    • 子ウィンドウを片付け、映していた札を手放す。返すのはその札の出どころ(ウィンドウの枠) ——手放した札は次の差し替えから元の枠に並ぶので、そこから飛んで帰る(MotionContext.origins)。

      並びの引き直しは呼び出し側——閉じるのは差し替えの途中のこともあるため。

      戻り値 ReadonlyMap<number, Rect>

    • 現在地の絵がまだ届いていなければ(プレイ開始直後・絵待ち中の作り直し)、届くまでフィールド エリアを暗幕で覆う。届いた時点で作り直して明転する——組み立て済みの表示に絵だけを後から 差し込む経路は無いため。

      戻り値 void

    • 周回そのものを消す。スロットを使わないシナリオからの起動(slotIndexが-1)では消すものが無い。

      戻り値 void

    • 死んだセーブデータを消して、セーブ選択画面へ戻る。続きから始められる状態は残さない ——このゲームにはハードコアモードしか無い(SaveDataManagement.md)。

      戻り値 void

    • そのドロップについて言うこと(何も言うことが無ければundefined)。何が起きるかの判断はShownCards、 ここは吹き出しの文字列に直すだけ。ただ位置を変えるだけの移動には説明が要らないので中身は空。

      離せば起きるとは限らない——理由を言うためだけの落とし先はenabledをfalseで返す (CardInteraction.md 2.1節)。

      パラメータ

      戻り値 CardDropInfo | undefined

    • そのドロップを、再現手順として読める言葉にする(errorReport参照)。

      パラメータ

      戻り値 string

    • ドロップを、レーンを場所(CardSpot)に直した形へ(判断はShownCardsが行う)。どちらかの レーンがワールドの場所を映していなければ、落とし先の決まらない操作なのでundefined。レーン上の 位置は、スロットの中の位置へ直して渡す(slotPositionAt)。

      パラメータ

      戻り値 ShownDrop | undefined

    • 設置物レーンが映している場所を1回探索する(外側を映していれば外側が探索の相手になる)。

      探索はゲーム内時間を消費するアクションなので、その分だけ実時間をかけて進める。ワールド自体は 先に変えてしまい、時計だけを実時間で動かして、結果(見つかったカード・探索率)は経過し切って から見せる。押した瞬間に発見物の枠が空へ戻り、時間が経ってから埋まる。

      前の探索で見つかったものは、始める前に本来の場所へ帰す(Windows.md 5.1節)。枠から 消えるだけだと、その札が画面のどこにも居ない時間ができてしまう。

      戻り値 void

    • ハンドレーンに一度に見えている枠の数。手持ちの前詰めにしか使わない(viewOfGame)。

      this.metricsはbuildの中でしか今の画面を指さない(ResponsiveScene)が、写し取りはinitでも 起きるので、ここだけは画面寸法から測り直す。

      戻り値 number

    • バーのアイコンボタンの台紙(選択中は塗りを反転し、枠線の色は置かれるバーが決める)。

      パラメータ

      • active: boolean
      • border: number

      戻り値 BoxStyle

    • セーブデータのシードから世界を作り直す。ワールド状態そのものの保存はまだ無いため (SaveDataManagement.md)、新規作成でも既存スロットを開いた場合でも、同じシードから 同じ開始状態を組み立てて表示する。

      パラメータ

      戻り値 void

    • レーンの全面に敷く絵(用意されていなければundefinedで、レーンは単色になる)。 どのスロットにどの絵を敷くかは画面側では決めず、絵のファイル名が名乗る(backgroundArt参照)。

      パラメータ

      戻り値 string | undefined

    • ピン留めした場所の札が出す端の操作——上で1段外側の場所へ、下で内側へ(ScreenLayout.md 7.1.1節)。外側の場所を持たない土地に居る間はどちらも出ないので、陸では札の見え方が変わらない。

      戻り値 readonly CardEdgeAction[]

    • 起きた変化を、カードの動きの文脈へ直す(MotionContext)。呼ぶのはレーンを差し替える前 ——出どころの札は差し替えで消えることも動くこともあるが、その時点の画面にはまだ居る。

      パラメータ

      戻り値 MotionContext

    • 起きた操作を、そのときのワールド時刻を添えて控える(errorReport参照)。添え方はここだけが 決める——操作ごとに書式を持つと、同じ「何をしたか+いつか」の組み立てが対応表に並ぶ。

      パラメータ

      • label: string

      戻り値 void

    • 行動の前後でステータスを比べ、増減を控える。次の行動まで記号を出し続けるので、移動で フィールドエリアを作り直してもそのまま出る。

      時間を消費しない操作では記号を消さない(statusChangesAfter)。

      パラメータ

      戻り値 void

    • 日時とポートレイトを押すと開く、キャラクタ自身の子ウィンドウ(Windows.md 4節)。休息のアクション (Characters.md 休息節)が並ぶ。カードのウィンドウと同じ経路——映しているのは自分の札で、 ボタンはそのオブジェクトが宣言しているアクションそのもの。

      装備・怪我のボタンから開くときはopensPlaceを渡す。渡すのは最初に開くタブがどれかだけで (記憶より優先する、Windows.md 1.2節)、窓の中身はどの入口から来ても同じ。

      パラメータ

      • オプションopensPlace: Slot

      戻り値 void

    • 子ウィンドウを開く。同時に開けるのは1つだけなので、開いているものはcloseChildWindowReturningOriginsで先に 片付けてから呼ぶ——借りる札を決めるのは呼び出し側なので、前の札を手放す順もそちらが持つ (手放す前に借りると、同じ1枚が2箇所に出る)。originsはそこで受け取った出どころ。

      映すオブジェクトのカードを出すウィンドウでは、その札は元の枠からここへ移る (Windows.md 1.1節)。運びは並びの差し替えがそのまま見せる。

      パラメータ

      • window: ObjectWindowView
      • origins: ReadonlyMap<number, Rect>
      • オプションopened: {
            opensPlace?: Slot;
            properties?: readonly PropertyCategory[];
            stack?: ObjectCardStack;
        }
        • オプション 読み取り専用opensPlace?: Slot
        • オプション 読み取り専用properties?: readonly PropertyCategory[]

          プロパティのタブに出すカテゴリ。画面が覚えている固定表示の印を重ねたい対象だけが渡す (キャラクタ、ShownStatuses)。渡さなければワールドから引いたものをそのまま出す。

        • オプション 読み取り専用stack?: ObjectCardStack

      戻り値 void

    • 設置物レーンが映している場所そのものを映す子ウィンドウ(ピン留めの札を押したとき)。

      出どころを渡すのはここ。 ピン留めの札はレーンの並びに居ないので、差し替えは「直前に居た枠」 として憶えていない(cardMotionPlan.resolve)——渡さないと、札は飛ばずにウィンドウの中に現れる。

      戻り値 void

    • 地図ボタンから開く地図ウィンドウ。既知の土地と発見済みの道を、ユーザが並べた位置で見せる。

      戻り値 void

    • カードを押すと開く子ウィンドウ。そのカードで実行できるアクション(ActionSystem.md 1節)を ボタンとして並べ、中身のスロットを持つカード(コンテナ・怪我)ならその並びも一緒に出す。

      ボタンでは閉じない。閉じるのは映しているものが世界から消えたとき(refreshChildWindowReturningOrigins)。 押した後に何が起きたかは、開いたままのウィンドウがそのまま見せる。

      アクションで生まれたものは、このカードを出どころとして飛ぶ(ヤシの木から採った実は木から手元へ)。 それを決めるのはこのウィンドウではなく世界の変化——アクションを宣言しているのがこのカードの オブジェクトだから、主体としてそれが付く(originRectsOf)。

      パラメータ

      戻り値 void

    • 何を作るかを選ぶ一覧を開く。選ぶと製作中オブジェクトが現在地に生まれる。

      戻り値 void

    • 行をタップしたときに開く、そのステータスの詳細(Windows.md 8節)。開き直しでも同じ経路を 通せるよう、受け取るのは中身ではなくプロパティの識別子で、中身は今のviewから引き直す。

      ステータスエリアからもプロパティのタブの行からも開くため、既に開いていれば入れ替える。

      パラメータ

      • key: string

      戻り値 void

    • 起きた変化を、新しく現れるインスタンスごとの出発点へ直す(MotionContext.origins)。

      壊された物や使い切った道具の枠も引ける(motionOfの呼ぶ時点による)。

      パラメータ

      戻り値 ReadonlyMap<number, Rect>

    • fromMinutesからtoMinutesまで、ゲーム内時間の経過を実時間(realMsFor)で時計とドーナツグラフへ 映し、経過し切ったらonElapsedを呼ぶ。

      何をどの順で運ぶかはplaybackStepsが決める(死んだら止める・粒は待たずに散らす・周回の終わりは 見せ終わってから)。ここが持つのは、その1つずつをどう見せるかだけ。

      見せ終わった時点で演出中を降ろすのはここだけ(activity)。何を見せている最中かは始めた側が 既に立てているので(探索)、立っていなければ経過そのものとして立てる。

      パラメータ

      • fromMinutes: number
      • toMinutes: number
      • recording: Recording
      • onElapsed: () => void

      戻り値 void

    • 地図でカードを置いた位置をセーブデータへ書き戻す(savePinnedStatusesと同じ扱い)。

      パラメータ

      戻り値 void

    • 常に見えている3つのレーンが今映している場所。土地を移れば別の場所を指すので、その都度 ビューへ訊く(cardPlaces)。

      設置物レーンだけは現在地の外側を映せる(ScreenLayout.md 7.1.1節)。アイテムレーンと ハンドレーンは現在地とプレイヤーのものから動かない。

      パラメータ

      戻り値 Slot

    • タブの識別子が指す場所(説明のタブではundefined)。

      パラメータ

      • tab: string

      戻り値 Slot | undefined

    • エラー報告に載せる、場所1つ。同じ型の入れ物が複数あっても見分けられるよう、持ち主も出す。

      パラメータ

      戻り値 string

    • ポートレイトのレーンの枠。押すとキャラクタ自身の子ウィンドウが開く(ScreenLayout.md 4.1節)。 キャラクタ自身の札も他の札と同じで、子ウィンドウへ出ている間はここに印だけが残る。

      戻り値 readonly LaneCell[]

    • 画面を作り直す。リサイズのほか、設定の変更のように画面全体を組み直したいときに呼ぶ (表示内容の変化は、プレイ画面では差し替えで反映する。PlayScene.showView)。

      戻り値 void

    • フィールドエリアだけを作り直す。移動で現在地が変わると、レーンの中身だけでなく現在地カードも 背景の絵も総取り替えになるので、差し替え(showView)では追いつかない。

      他のエリアは現在地に依らないため触らない(時計とステータスの反映はshowInformationが行う)。

      戻り値 void

    • 設置物レーンだけを、今映している場所のものへ作り直す(ScreenLayout.md 7.1.1節)。

      他の2レーンは作り直さない。 映す先を切り替えても現在地から見える範囲は変わらないので、 アイテムと手持ちに出ている札はそのまま同じ実体が残る(CardLane.reconcile)——3レーンとも 建て直すと、変わっていない札まで一度消えて出直すことになる。

      戻り値 void

    • そのインスタンスを今映しているカードの枠。どのレーンにも出ていなければundefined。

      設置物レーンが映している場所だけはレーンに並ぶカードを持たない(ピン留めの枠)ので、そこで 答える。映しているのは現在地とは限らない(外側の段を映していればそちら、shownLocation)。 探索で見つかった物がその場所から飛んでくるのも、子ウィンドウへ札が移るのもこの1行による。

      パラメータ

      • instanceId: number

      戻り値 Rect | undefined

    • その物の姿が今出ている札の枠。自分の札を持たない物は、それを抱えている親の札が代表している ——見えないスロットの中身には札が無いので、外側へ順に見る。

      パラメータ

      戻り値 Rect | undefined

    • 子ウィンドウが映しているものを、今のワールドで借り直す。差し替えの前後で束は別物になっているので、 そのまま使うと次のアクションが古いインスタンスに対して組まれる。

      ウィンドウが閉じるのはここだけ(プレイヤーが「閉じる」を押した場合を除く)。映していた1個が 現在地から見えなくなっていれば、映すものもボタンが効く相手も無いので閉じる——食べた・打ち割った 物も、別の土地へ移って置いてきた物(道)も同じ1つの基準(ShownCards.reborrowedWindow)。 ボタンを押しただけでは閉じない——何が起きたかは開いたままのウィンドウが見せる。 返すのは、閉じたときに手放した札の出どころ。

      枠を組み立てる前に呼ぶ(showView)。閉じるならその枠は並びから消え、引き直せたならその 新しい姿が枠に出る。

      戻り値 ReadonlyMap<number, Rect>

    • そのドロップで手から放したもの(MotionContext.released)。どの個体が動くのかはビューが答える (movedIds)。重ねて実行するcombinationに加わるのは掴んでいた1つだけで、それは束の代表とは 限らない(CardCombination.held参照)。

      パラメータ

      戻り値 { followers: readonly number[]; grabbed: number; rect: Rect } | undefined

    • 控えを実時間で再生し、見せ切ったらonDoneを呼ぶ。

      時計もドーナツグラフも控えもtick境界で刻む(ElapsePlayback)。どれも同じ目盛りから導くので、 塗りが目盛りへ届いた瞬間が、時計の飛ぶ瞬間であり、その控えを見せる瞬間になる。

      パラメータ

      戻り値 void

    • 今の世界で絵が要る土地——現在地と、道の行き先——のロードを始める(冪等)。 道が見つかった瞬間・移動が確定した瞬間(ワールドを変えた直後)に呼ぶことで、その絵が大きく映る 場面(行き先の土地カード・移動後のフィールド)までにロードを済ませておく。間に合わなかった絵は、 カードなら届いた時点で貼り替わり(Card)、移動なら暗転のまま待つ(transit)。

      戻り値 void

    • 画面の作り直し(build)をまたいで持つものを、このプレイのぶんとして構え直す。

      Phaserはシーンのインスタンスを使い回すが、シーンを出るときにinput・eventsの購読をすべて外す (InputPlugin.shutdown)。作り直しのたびに作らないもの——購読を持つ受け口も、開いている ウィンドウや演出の途中も——は、ここで作り直さない限り前のプレイのものが居座る。

      戻り値 void

    • 借りている発見物を、それぞれの本来の場所へ帰す(Windows.md 5.1節)。帰り先はレーンの並びが 決めるので、借りるのをやめて差し替えれば、あとは通常の出どころの規則(origins)が飛ばす。

      戻り値 void

    • 現在地の絵が揃った時点でフィールドエリアを作り直し、明転する。既に揃っていれば同期に進み、 待ちの無い場面転換と同じ流れになる。待っている間に画面が作り直されたら(リサイズ)、幕ごと 捨てられているのでこの待ちも捨てる——作り直し側が改めて幕を張る(coverUntilLocationArtLoaded)。

      パラメータ

      戻り値 void

    • ワールドを変える操作を実行し、経過の控えを取る(runAndRecordChange)。実時間での再生はpassTime。

      パラメータ

      • change: () => void

      戻り値 Recording

    • 固定表示をセーブデータへ書き戻す(SaveDataManagement.md セーブデータのスキーマ節)。 スロットを使わないシナリオからの起動では、そのプレイの間だけ残る。

      戻り値 void

    • 絞り込みを選び直す。同じボタンを押し直すと解除する(ScreenLayout.md 8.1.6節)——選べるのは 1つだけなので、押すたびに入り切りが要る。

      隠れる札が変わるだけでワールドは何も変わらないので、時間は経たない。

      パラメータ

      • index: number

      戻り値 void

    • ドラッグの対象になるレーン。設置物レーンも含める——持ち出せはしないが、同じレーンの中でなら並び替えられるため。

      戻り値 void

    • 開いている子ウィンドウの中身を、今のviewで引き直す。素材を入れれば「作業する」が押せるように なり、抜けば押せなくなる——ボタンの可否もプロパティの行も、渡した時点で固まる (ObjectWindow)ので、世界が変わるたびに渡し直す必要がある。

      戻り値 void

    • 経過分を日数・時刻へ直して時計に出す。画面を作り直した直後はまだ時計が無いことがある。

      パラメータ

      • totalMinutes: number

      戻り値 void

    • 状況アイコンを並べ直す(ScreenLayout.md 4.1.1節)。ポートレイトの真下に1行で左詰めに並べる ——キャラクタの周りの事情なので、本人を映す札の下に続けて置くと誰の周りかが読み取れる。

      押しても何も起きないので、押せる形(Button)にはしない。 出しているのは場所と世界の事実で、 そこから操作する対象が無い。何も妨げていない間は行ごと空になる。

      戻り値 void

    • 前に映した時刻から日の出・日の入りの境目をまたいでいれば、その演出を出す (ScreenLayout.md 7.5.6節)。経過の再生は控えを1つずつここへ通す(showRecorded)ので、 またいだtickのところで出る——経過し切ってからまとめて出ることはない。

      戻り値 void

    • 死んだことを伝えるダイアログ(VitalsSystem.md 6節)。ポートレイトと生存日数と死因だけを出す ——選択肢は無く、閉じる以外にできることが残っていない。

      画面はそのままにする。 死んだキャラクタはもうどの土地にも居ないので、今のワールドを映し直すと 現在地も足元の物も別のものに入れ替わってしまう(fromGameSession)。

      戻り値 void

    • 島を出たことを伝えるダイアログ(docs/concept/GameEndings.md 3節)。閉じると棚へ移る。

      本土に着いた後は描かない。 出すのは、渡り切ったことと、持ち帰った物がこれから棚へ収まる ことだけ——その先の暮らしは周回の外にある。

      戻り値 void

    • 操作そのものが増やしたキャラクタの値を、粒にして飛ばす(CardInteraction.md 10節)。 発生源はその操作を宣言していた札(InteractionGains.sourceAndAncestors)で、行き先はポートレイト。

      絵を持たないプロパティと、rangeを持たず割合を言えないプロパティは出さない——飛ばす絵が無く、 「満タンのどれだけか」も数えられないため。

      パラメータ

      戻り値 void

    • 陽炎はフィールドエリアの3レーンすべてに立てる(LaneHaze参照)。レーンを作り直したら張り直す。

      戻り値 void

    • 情報エリアの表示を今のthis.viewへ合わせる。条件と装備のアイコンはまだ固定値なので引き直さない (PlayScreenView参照)。

      戻り値 void

    • 設置物レーンが映す場所を切り替える。変わるのはそのレーンだけ——現在地から見える範囲は 切り替えても変わらないので、他のレーンに出ている札も開いている子ウィンドウもそのまま残る (rebuildFixtureLane)。ワールドは何も変わらないので、時間は経たない。

      端の操作は押し続けている間くり返し届く(Card.addEdge)ので、既に映している段なら何もしない ——同じ場所のまま設置物レーンを作り直し続けることになる。

      パラメータ

      • depth: number

      戻り値 void

    • 控えておいた時点の表示内容へ切り替える。差し替えの動き(出現・破棄)は普段と同じ経路で出るので、 経過中に壊れた道具はその瞬間に消える。

      掴んで離したカードの出どころ(MotionContext.released)は渡さない。それは経過し切ったときに 見せる動きで(道具は使い終わってから手元へ戻る、CardInteraction.md 6節)、途中で消費してはならない。

      そのtickで生まれた物は、控えと一緒に運んできた出入りが出どころを答える(RecordedView.changes)。

      パラメータ

      戻り値 void

    • 告げられた出来事を、それが起きたオブジェクトの札の上に文字として浮かべる(CardView.md 14節)。

      並びを差し替える前に呼ぶ。 出どころの矩形(originRectsOf)と同じで、その出来事が起きたのは 今出ている並びの上——効果がその物を消していれば、差し替えた後の画面にその札はもう無い。

      画面に出ていないもの(閉じた入れ物の中・別の土地)に起きた出来事は出さない。指すべき札が無く、 宙に文字だけが浮くことになるため。

      パラメータ

      戻り値 void

    • 今の空を画面へ映し直す(ScreenLayout.md 7.5節 空の演出)。

      戻り値 void

    • ステータスエリアの行を今の状態へ引き直す。ワールドが変われば値も増減の記号も、どの域に入るかも 変わるので、行動のたびに呼ぶ(showView)。固定表示のトグルでも呼ぶ。

      出す行が入れ替わると並び順も変わるため、位置と内容はそのつど与える(動きはバー自身が見せる、 StatusBar.show)。

      戻り値 void

    • 今のthis.viewを画面へ反映する。カードは作り直さずに差し替え、動いた分をアニメーションで 見せる(CardTable)。

      パラメータ

      戻り値 void

    • 製作中オブジェクトを現在地へ生み、その子ウィンドウを開く。

      生んだ直後にすることは素材を入れることしかないので、レーンから探し直させない。

      originは一覧で選んだカードの居場所。生まれたカードはそこから飛んでくる——一覧は閉じているので、 選んだ札がそのまま場に出た、という見え方になる。開く子ウィンドウへもそこから直に飛ばす (Windows.md 1.1節)——生んだ札はすぐ借り出されるので、レーンの枠を経由しても一瞬で通り過ぎる。

      これだけは出どころが世界の事実ではない。 プレイヤーの操作が直に生んだので主体が居らず、 出どころも閉じた一覧の中にしか無かった札の位置なので、その矩形を直に渡す(MotionContext.origins)。

      パラメータ

      戻り値 void

    • エラー報告に載せる、今の画面の状態(errorReport.setStateReporter)。

      戻り値 readonly string[]

    • 持ち帰った物を棚へ収め、周回を終える(棚の画面へ移る)。

      パラメータ

      • brought: readonly string[]

      戻り値 void

    • 見つかったものを発見物の枠へ引き取り、それを見せる面へ自分から移る(Windows.md 5節)。 探索は必ず1個以上見つかるので、押した結果がどのタブに出るかを覚えていなくてよい。

      パラメータ

      戻り値 void

    • 暗くなり切ったフィールドエリアを移動先のものへ作り直し、明転する。

      明転し切るまでは演出中のままにして、ワールドを変える操作を止める(busy)。作り直した並びが まだ見えていないため、そこへの操作を受け付けると見えているものと食い違う。

      移った先には無いものを手放すのはここではない。 開いていた子ウィンドウは、映しているものが 見えなくなった時点で自分から畳まれる(refreshChildWindowReturningOrigins)。ここで手放すのは、 どの枠にも帰り先を持たない発見物だけ。

      パラメータ

      戻り値 void

    • 今のワールドから表示内容を作る(fromGameSession)。枠数を添えるのはここだけ——手持ちの 前詰めは画面の都合による場当たりの割り切りで(ScreenLayout.md 7.3節)、そこに要る「レーンに 一度に見えている枠の数」は画面の側にしか無い。

      戻り値 PlayScreenView

    • 演出中は何もしないようにした操作を返す。演出中の画面は、経過中の過去の時点を再現していたり (record)作り直しを暗幕で隠していたり(transit)するため、そこから今のワールドを覗く子ウィンドウを 開かせない——並んでいるカードは既に古い対象を指しており、そのアクションを実行させるわけにいかない。

      型パラメーター

      • A extends readonly unknown[]

      パラメータ

      • onTap: (...args: A) => void

      戻り値 (...args: A) => void