gohud

Over the screen

← Widgets

GoDrawer — the side panel

GoSheet comes from the bottom, which is right for a phone held upright. On a tablet or a desktop the same sheet covers the game; a drawer comes from the side instead.

bag.side = GoDrawer.Side.RIGHT
bag.open("Bag")

The panel reaches the screen edge but the content stays inside the safe area, or a rounded corner clips the first row. LEFT means screen-left even in Arabic; turn on follow_text_direction when "the start side" is the point, and it flips in RTL.

GoPopover — the anchored card

GoPopover.open(slot, item_card(item))

This is GoSurface's anchored placement with the layer, the surface, the anchor and the teardown already wired — the ten lines every game writes over and over. One is open at a time, because stacked cards bury the screen and nobody can tell which card belongs to which slot. The scrim is transparent: a card you opened to compare gear must not darken the gear.

It is not a hover tooltip. Touch has no hover, so anything only a mouse could reveal is invisible to half your players.

GoContextMenu — long-press and right-click

GoContextMenu.attach(item_slot, [
    {"text": "Use", "action": use},
    {"separator": true},
    {"text": "Drop", "action": drop, "danger": true},
])

PopupMenu is already in the engine. What is not is the gesture: half a second to open, cancelled the moment the finger moves, so scrolling a list never pops a menu. Pass a Callable instead of an array when the entries depend on who you pressed.

A long press needs a second way in. Nobody discovers a hidden gesture — pair it with a visible button (open_at()), an icon, or a first-run coach mark.

GoConsole — the developer console

console.register("give", "Grant an item: give <id> <count>", give)
console.toggle()

Cheat and debug commands, with a palette that filters as you type so nobody has to memorise them, and a history on the arrow keys. It sits above everything, so you can debug over a dialog.

It refuses to open in a release build. debug_only is on by default; cheat commands in a player's hands end a game's economy on the first day.