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

    クラス CardLane

    フィールドエリアの1レーン。カードは横スクロールで送る(ScreenLayout.md 7節 フィールドエリア)。

    レーンからはみ出したカードは切り抜かず、隣接エリアの背景板が上から覆って隠す。 ロケーションレーンの現在地カードも同様に、スクロール領域より後に描いて上へ重ねる。

    並ぶ単位は枠(LaneCell)で、位置=添字。表示は背景 → カード → 重ねる物の3層で、カードの 居ない枠の破線と枠を強調する縁が1層目、カードに重ねる文字が3層目に入る(CardView.md 11節)。

    内容が変わったときは作り直さずreconcileで差し替える。同じインスタンスを映しているカードは そのまま残して新しい位置へ滑らせ、出入りするカードだけを呼び出し側へ渡す。カードを作るのも 消すのも呼び出し側(CardTable)——レーンは枠の幾何と、枠に居る間の置き場所だけを受け持つ。

    インデックス
    _cardObjects: (Card | undefined)[] = []

    並んでいるカードの表示物。空き枠はundefined。位置=添字(_cellsと対応)。

    _cells: readonly LaneCell[] = []

    並んでいる枠。位置=添字。

    cardHeight: number
    cardLayer: Container
    cardWidth: number
    cardY: number
    cellLayer: Container

    枠の3層(CardView.md 11節)。器として先に作っておくことで、カードが出入りしても空き枠が手前へ 出たり、枠の縁と重ねた文字がカードの下へ潜ったりしない。

    hazeTargets: HazeTarget[] = []

    陽炎を掛ける表示物(LaneHaze参照)。ピン留め部分の背景板・現在地カード・区切り線も含めて、 レーンに見えているものをすべて挙げる。一部だけを歪ませると、そこに境目が見えてしまう。

    insertMarkWidth: number
    metrics: ScreenMetrics
    overlayLayer: Container
    ownedObjects: (GameObject & Depth)[] = []

    stripに属さない表示物(背景板・ピン留め部分)。カードはstripごと消えるが、これらは 個別に破棄しないと残ってしまう(背景板は入力も吸い続ける)。

    pinnedRect: Rect | undefined

    ピン留めしたカードの矩形(持たないレーンではundefined)。

    pitch: number

    カード1枚分の送り幅(カード幅+ギャップ)とカードの実寸。

    rect: Rect

    レーンの矩形。ドロップ先の判定(dropTargetAt)に使う。

    scene: Scene
    scroll: ScrollArea

    はみ出した分の送り(ScrollArea)。ドラッグもホイールも切り抜きもこれが持つ。

    scrollIndicator: ScrollIndicator

    送り具合を示すスクロールバー。送る必要が無いときは自分で姿を消す。

    scrollingBackgroundTiles: TileSprite[] = []

    絵を敷いた背景板のうち、カードと同じだけ横へ送るもの(背景色だけのレーンでは空)。スクロールの たびに敷き位置を更新する。ピン留め部分の背景板は固定なので含めない(addPinnedCell参照)。

    strip: Container
    stripWidth: number

    札が並ぶ帯(strip)の可視域の幅。

    • get hazeSurface(): HazeSurface | undefined

      陽炎を掛けるための面(LaneHaze参照)。レーンに見えているものを1枚の空気の下に置く。 地面の絵が無いレーン(背景色だけ)には掛けようがないのでundefined。

      戻り値 HazeSurface | undefined

    • 背景板を1枚置く。絵があれば敷き、無ければ背景色で塗る。どちらも入力を遮る(addInputBlockingPanel参照)。 置いた板は自分で片付ける(ownedObjects)。scrollsWithCardsを倒すと、絵をスクロールで送る対象から外す。

      パラメータ

      • rect: Rect
      • background: number
      • art: string | undefined
      • scrollsWithCards: boolean = true

      戻り値 Rectangle | TileSprite

    • 現在地カードはレーン左端に固定し、区切り線を挟んで右にスクロール領域を置く。

      背景板もカードと一緒に固定する(scrollToの対象から外す)。スクロール量0では下のレーン背景と 同じ位置に敷かれるため1枚の絵として繋がり、送っている間だけ区切り線を境に地面が分かれて見える。

      パラメータ

      • rect: Rect
      • background: number
      • art: string | undefined
      • cardY: number
      • pinned: CardContent

      戻り値 Rectangle | TileSprite

    • ドラッグによる横スクロールを始める(今のスクロール量を基準として憶える)。カードの上から始めた ドラッグをスクロールとして扱う場合もここから入る(CardDragController参照)。

      戻り値 void

    • レーンごと片付ける(子ウィンドウを閉じるとき)。カード自体はstripの破棄でまとめて消える。

      戻り値 void

    • 画面上の1点が指すドロップ先(レーンの外ならundefined)。

      カードの中央部分だけを「そのカードに重ねた」とみなし、左右のCARD_EDGE_RATIO分とカード同士の隙間は 「隙間へ落とした」として扱う。空き枠は送り幅いっぱいが「その枠へ落とした」——枠が見えている以上、 狙うのは両隣の隙間ではなく枠そのものになるため。並びの末尾より右も、末尾が空き枠ならその枠 (受け皿の枠は並びの終わりそのもので、その先に別の落とし先は無い)。

      パラメータ

      • x: number
      • y: number

      戻り値 LaneDropTarget | undefined

    • その札が居る枠の添字(このレーンに居なければundefined)。

      パラメータ

      戻り値 number | undefined

    • 画面上の1点が、添字のカードの本体を指しているか。カードの上から始まったドラッグが、そのカードを 掴んだ操作なのかレーンの横スクロールなのかを見分けるのに使う(CardDragController参照)。 本体とみなす範囲は落とし先の判定と同じで、左右のCARD_EDGE_RATIO分はレーン側に譲る。

      パラメータ

      • x: number
      • y: number
      • index: number

      戻り値 boolean

    • 並べる枠を差し替える。同じインスタンスを映しているカード(identityが1つでも重なるもの)は 作り直さず、新しい位置へ滑らせる。新しく現れる内容の札はcreateで作らせて所定の位置に置くが、 どこから来たのかはこのレーンには分からないので、非表示のまま呼び出し側へ渡す。

      パラメータ

      戻り値 LaneUpdate

    • 枠の1層目(空き枠の背景・強調の縁)と3層目(重ねる文字)を作り直す。どちらも位置以外の状態を 持たないので、カードのように残して動かす必要が無い。

      戻り値 void

    • beginScrollの時点からのポインタの移動量を、スクロール量へ反映する。

      パラメータ

      • deltaX: number

      戻り値 void