Formas conhecidas da web, refeitas em torno do que um jogo precisa delas.
GoRewardCalendar — presença diária
Um seletor de data quase nunca serve em um jogo. Uma forma de calendário serve — para recompensas de presença, onde o que importa é em que dia você está, não que data é hoje.
var attendance := GoRewardCalendar.make(days, claimed_until)
attendance.claimed.connect(func(day: int) -> void: server.claim_day(day))
Só a célula de hoje pode ser pressionada — um botão que não faz nada quando pressionado passa a impressão de coisa quebrada. Resgatado, hoje e futuro se diferenciam por três coisas ao mesmo tempo: um glifo de visto, uma borda de destaque e o escurecimento.
GoRadar e GoDonut — atributos de relance
var stats := GoRadar.make({"FOR": 0.85, "AGI": 0.5, "INT": 0.3, "VIT": 0.7, "SOR": 0.45})
stats.set_compare(with_new_sword) # uma sobreposição tracejada
var share := GoDonut.make([{"label": "Físico", "value": 620}, {"label": "Mágico", "value": 340}])
card.add_child(share.legend())
Os valores do radar vão de 0 a 1 porque o que conta como cheio é uma decisão do jogo — 120 de força puros ao lado de 45 de inteligência desenhariam uma mentira. Os valores da rosca são brutos e ela faz a divisão por você; passando de cinco fatias, ela junta o resto, já que uma sexta fatia é um fiozinho que ninguém consegue ler. A linha de comparação é tracejada, não só de outra cor, e a legenda escreve a porcentagem em palavras.
GoCarousel — banners e seleção de personagem
banners.set_pages([promo, event, pack])
banners.autoplay_seconds = 5.0 # desligado por padrão
Ele não avança sozinho a não ser que você peça, e cinco segundos é o piso: um banner que muda a cada três leva
o texto embora antes de ele ser lido. Tocar nele reinicia o cronômetro, e com o reduce_motion
ligado ele nunca avança por conta própria. Os pontinhos são pressionáveis no mínimo de toque mesmo com o ponto
desenhado sendo pequeno.
GoKbd — dicas de tecla que não mentem
hint.add_child(GoKbd.for_action(&"interact")) # lê o atalho de verdade
Um "Aperte F" escrito na mão continua dizendo F depois que o jogador remapeia — a mentira mais comum de uma
interface de PC. O for_action() lê o InputMap; se a ação estiver mapeada em um
controle, ele devolve vazio e o widget se esconde, porque "Nenhuma" seria uma mentira em si. No Android e no
iOS ele se esconde sozinho.