gohud

画面の上に重ねる

← ウィジェット

GoDrawer — 横から出るパネル

GoSheet は下から出る。縦に持ったスマートフォンにはそれが正しい。タブレットやデスクトップでは、 同じシートがゲームを覆ってしまう。ドロワーは代わりに横から出る。

bag.side = GoDrawer.Side.RIGHT
bag.open("かばん")

パネルは画面の端まで届くが、中身はセーフエリアの内側に留まる。そうしないと、丸めた角が最初の行を切り 落とす。LEFT はアラビア語でも画面の左だ。「始まりの側」であることが要点なら follow_text_direction を有効にする。RTL では左右が入れ替わる。

GoPopover — 脇に留まるカード

GoPopover.open(slot, item_card(item))

GoSurface の脇に留まる配置に、レイヤーもサーフェスもアンカーも後片付けも配線済みの ものだ — どのゲームも何度も書く、あの10行である。開くのは一度に1つだけだ。カードが積み重なると画面が埋まり、 どのカードがどのスロットのものか分からなくなる。幕は透明だ。装備を見比べるために開いたカードが、その装備を 暗くしてはならない。

ホバーのツールチップではない。 タッチにホバーはない。マウスでしか現れないものは、プレイヤーの半分 には見えないままだ。

GoContextMenu — 長押しと右クリック

GoContextMenu.attach(item_slot, [
    {"text": "使う", "action": use},
    {"separator": true},
    {"text": "捨てる", "action": drop, "danger": true},
])

PopupMenu はエンジンにすでにある。ないのはジェスチャーのほうだ。開くまで 0.5 秒、 指が動いた瞬間に取り消す。だからリストをスクロールしてもメニューは出てこない。項目が「どれを押したか」 で変わるなら、配列の代わりに Callable を渡す。

長押しには、もう1つの入り口が要る。 隠れたジェスチャーは誰にも見つけられない — 目に見える ボタン(open_at())や、アイコンや、初回のコーチマークと組み合わせる。

GoConsole — 開発者コンソール

console.register("give", "アイテムを与える: give <id> <count>", give)
console.toggle()

チートとデバッグのコマンドだ。打つそばから絞り込むパレットが付くので、覚えておく必要はない。履歴は 矢印キーに載っている。すべての上に出るので、ダイアログの上からでもデバッグできる。

リリースビルドでは開かない。 debug_only は既定で有効だ。チートコマンドがプレイヤーの手に 渡れば、ゲームの経済は初日で終わる。