gohud

Aspettare, dire, contare

← Widget

GoSnackbar — il messaggio che si colloca da sé

Sta in basso (o in alto), sopra l'area sicura e sopra la tastiera, e se ne va da solo. Senza, il livello, la collocazione, il timer e lo smontaggio li scrivi in ogni schermata che deve dire "salvato".

snack.show_text("Salvato", GoTheme.SUCCESS)

# Una possibilità di annullare — 0 è il primo pulsante, -1 significa che è scaduto il tempo
if await snack.post({"text": "Oggetto gettato", "actions": ["Annulla"]}) == 0:
    restore_item()

I messaggi si mettono in coda invece di sovrascriversi a vicenda, e le ripetizioni della stessa riga vengono unite — un server che fallisce quattro volte al secondo non impila più quattro minuti di avvisi. Una snackbar senza pulsanti lascia passare l'input, così il gioco sotto continua a girare.

Non è il posto in cui chiedere qualcosa. Se ne va da sé, quindi chi gioca potrebbe non vederla mai. Le conferme irreversibili vanno in GoDialogs. Qui i pulsanti devono essere facoltativi — Annulla, Dettagli, Riprova.

GoNotice è l'altra metà della coppia: non prende mai input né focus, ed è la schermata che lo possiede a decidere dove va. Quello non può contenere un pulsante; questa sì.

GoSpinner — un'attesa di cui non si vede la fine

I giochi che parlano con un server ne hanno bisogno più di qualunque altra cosa in questa pagina: una schermata ferma si legge come un blocco. Una chiamata trasforma il pulsante che hai premuto in uno spinner sul posto.

GoSpinner.busy(buy_button, true)
var ok := await server.purchase(item)
GoSpinner.busy(buy_button, false)

Il pulsante mantiene la sua dimensione — l'etichetta diventa trasparente invece di sparire, così la riga non sobbalza — ed è disattivato mentre gira. È la seconda parte quella che conta: un acquisto non deve partire due volte mentre sei in await. Con reduce_motion attivo non gira; al suo posto pulsano tre puntini.

Un avanzamento che puoi misurare è una GoBar. Uno spinner non promette nulla su quando finirà.

GoBadge — il puntino dei non letti, l'etichetta NUOVO, il 99+

GoBadge.attach(mail_button, unread_count)   # a zero si nasconde da sé
GoBadge.attach(shop_button, 0, "NUOVO")
GoBadge.attach(friend_button, 3, "", true) # un puntino — "c'è qualcosa"

Si appende con gli ancoraggi all'angolo in alto a destra dell'ospite, quindi segue un ospite la cui dimensione viene decisa dopo, e agganciarlo due volte restituisce lo stesso badge. Usa un numero quando il conteggio cambia quello che chi gioca fa, un puntino quando conta solo che "c'è qualcosa".

Il colore del testo viene scelto per contrasto con il colore che la skin ha dato al badge — mai dato per bianco — e porta con sé un nome accessibile, perché un puntino colorato non dice nulla a un lettore di schermo.