Znajome kształty z sieci, przebudowane wokół tego, czego potrzebuje od nich gra.
GoRewardCalendar — codzienna obecność
Wybierak daty prawie nigdy nie przydaje się w grze. Kształt kalendarza — owszem: przy nagrodach za obecność, gdzie liczy się to, który to dzień z rzędu, a nie która jest data.
var attendance := GoRewardCalendar.make(days, claimed_until)
attendance.claimed.connect(func(day: int) -> void: server.claim_day(day))
Nacisnąć można wyłącznie dzisiejszą komórkę — przycisk, który po naciśnięciu nic nie robi, czyta się jako zepsuty. Odebrane, dzisiejsze i przyszłe różnią się trzema rzeczami naraz: znaczkiem odhaczenia, ramką w kolorze akcentu i przygaszeniem.
GoRadar i GoDonut — statystyki na pierwszy rzut oka
var stats := GoRadar.make({"STR": 0.85, "AGI": 0.5, "INT": 0.3, "VIT": 0.7, "LUK": 0.45})
stats.set_compare(with_new_sword) # przerywana nakładka
var share := GoDonut.make([{"label": "Fizyczne", "value": 620}, {"label": "Magiczne", "value": 340}])
card.add_child(share.legend())
Wartości radaru mieszczą się w 0–1, bo to, co uchodzi za pełnię, jest decyzją gry — surowe 120 STR obok 45 INT narysowałoby kłamstwo. Wartości pierścienia są surowe i dzieli je za ciebie; powyżej pięciu wycinków zwija resztę, bo szósty wycinek to nitka, której nikt nie odczyta. Linia porównania jest przerywana, a nie tylko w innym kolorze, a legenda wypisuje procent słowami.
GoCarousel — banery i wybór postaci
banners.set_pages([promo, event, pack])
banners.autoplay_seconds = 5.0 # domyślnie wyłączone
Sam nie przesuwa się dalej, dopóki go o to nie poprosisz, a pięć sekund to dolna granica: baner zmieniający się co
trzy zabiera tekst, zanim zostanie przeczytany. Dotknięcie zeruje licznik czasu, a przy włączonym
reduce_motion nie przesuwa się sam nigdy. Kropki naciska się w minimum dotykowym, choć
rysowana kropka jest mała.
GoKbd — podpowiedzi klawiszy, które nie kłamią
hint.add_child(GoKbd.for_action(&"interact")) # czyta prawdziwe przypisanie
Wpisane na sztywno „Naciśnij F” wciąż mówi F po tym, jak gracz zmieni przypisanie — najczęstsze kłamstwo w interfejsie na komputerze.
for_action() czyta InputMap; jeśli akcja przypisana jest zamiast tego do pada, zwraca
pustkę i widżet się chowa, bo „Brak” byłoby kłamstwem samym w sobie. Na Androidzie i iOS chowa się sam.