Skip to content

Outcasts Fuseforks v0.2.2

Choose a tag to compare

@github-actions github-actions released this 09 Sep 02:06

The map now fits inside the zoom ceiling

Hiding all but one group left the two remaining servants pushed to the top-left of the Kizuna map, drawn small, with the offset growing the wider the pane was.

The cause was in the graph library, not in the roster. When the content is small and the pane is wide, fitToContents computes a zoom above the ceiling — 4.88 at a pane width of 1,200 px, against a ceiling of 2 — and then rounds the zoom down to the ceiling while applying the pan it had computed for 4.88. Measured: matrix(2,0,0,2,354,138) put the content centre at (475, 170) where the pane centre was (601, 201). At a pane width of 300 px the requested zoom is 1.47, under the ceiling, and nothing shifts — which is why the pane width looked like the trigger.

This release leaves the library's path alone and widens the margin instead, so the zoom it computes lands exactly on the ceiling and is never rounded. The pan is then the library's own, correct value (matrix(2,0,0,2,480,170), content centre = pane centre).

Two things changed along the way:

  • Only visible servants are handed to the map. A hidden servant's position stays in world.json, so showing its group again puts it back where you placed it.
  • Changing which groups are visible re-fits the map. Hiding or showing a group now settles onto what is left, instead of keeping the previous viewport.

No Rust changed in this release — the core, the wires, the budget and the logs behave exactly as in v0.2.1.

What you take on

  • Toggling a group's visibility now moves the viewport. If you had zoomed in on one corner of the map, showing or hiding a group discards that view and fits to the visible servants. There is no setting to keep the previous viewport.
  • If you never hide a group, nothing changes for you. With every servant visible the requested zoom stays under the ceiling, which is where it already was. This release is worth taking only if you use groups, or work with a wide map pane.

絆の地図が上限ズームの内側に収まるようになりました

グループを 1 つだけ残して隠すと、残った 2 体が地図の左上へ寄り、小さく描かれていました。ペインが広いほどずれが大きくなります。

原因は顔ぶれの側ではなく描画ライブラリにありました。内容が小さくペインが広いとき、fitToContents は上限を超える倍率を計算し(幅 1,200 px で 4.88。上限は 2)、倍率だけを上限へ丸めて、位置は 4.88 用のまま当てます。実測では matrix(2,0,0,2,354,138) で内容の中心が (475, 170)、ペインの中心は (601, 201) でした。幅 300 px なら要求倍率が 1.47 で上限の下に収まり、ずれません — 「ペインの幅で変わる」ように見えていたのはこれが理由です。

この版ではライブラリの経路をそのままにし、代わりに余白を広げます。ライブラリの計算する倍率が上限ちょうどに落ちて丸められないので、位置もライブラリ自身の正しい値になります(matrix(2,0,0,2,480,170)・内容の中心 = ペインの中心)。

あわせて 2 つ変わりました。

  • 地図へ渡すのは見えている個体だけになりました。 隠れた個体の座標は world.json に残るので、グループを出し直せば置いた場所へ戻ります。
  • 表示するグループを変えると地図が収まり直します。 隠した / 出した直後に、残った個体へ Fit が掛かります。

この版で Rust は 1 行も変わっていません — 核・ワイヤ・予算・ログの挙動は v0.2.1 と同一です。

利用者が負う条件

  • グループの表示を切り替えると視点が動きます。 地図の一角を拡大していた場合、その視点は破棄されて見えている個体へ収まります。前の視点を保つ設定はありません。
  • グループを隠さない使い方なら、何も変わりません。 全員が見えている状態では要求倍率が上限を超えないので、元から正しく収まっていました。この版を取る価値があるのは、グループを使うか、地図のペインを広く取っている場合だけです。