Знайомі з вебу форми, перебудовані навколо того, що потрібно від них грі.
GoRewardCalendar — щоденна відвідуваність
Вибирач дати в грі майже ніколи не стає в пригоді. А от форма календаря — так, для нагород за відвідування, де важить який у вас день поспіль, а не яке сьогодні число.
var attendance := GoRewardCalendar.make(days, claimed_until)
attendance.claimed.connect(func(day: int) -> void: server.claim_day(day))
Натиснути можна лише сьогоднішню комірку — кнопка, яка у відповідь на натискання нічого не робить, читається як зламана. Отримані, сьогоднішній і майбутні відрізняються трьома речами заразом: гліфом галочки, акцентною рамкою та притемненням.
GoRadar і GoDonut — характеристики з одного погляду
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) # пунктирний шар зверху
var share := GoDonut.make([{"label": "Фізична", "value": 620}, {"label": "Магічна", "value": 340}])
card.add_child(share.legend())
Значення радара — від 0 до 1, бо те, що вважати повнотою, вирішує гра: сирі 120 STR поруч із 45 INT намалювали б неправду. Значення пончика сирі, і він ділить їх за вас; після п'ятого сектора решту він згортає, бо шостий сектор — це нитка, якої ніхто не прочитає. Лінія порівняння пунктирна, а не просто іншого кольору, а легенда виписує відсоток словами.
GoCarousel — банери та вибір персонажа
banners.set_pages([promo, event, pack])
banners.autoplay_seconds = 5.0 # типово вимкнено
Сам він не гортає, доки ви не попросите, і п'ять секунд — це нижня межа: банер, що змінюється кожні три,
забирає текст раніше, ніж його прочитають. Дотик скидає таймер, а з увімкненим reduce_motion
він не гортає сам ніколи. Крапки натискаються на мінімальній площі дотику, хоч намальована крапка
й маленька.
GoKbd — підказки клавіш, які не брешуть
hint.add_child(GoKbd.for_action(&"interact")) # читає справжню прив'язку
Жорстко вписане «Натисніть F» каже F і далі, коли гравець перепризначив клавішу, — найпоширеніша неправда
в інтерфейсі на ПК. for_action() читає InputMap; якщо дія натомість прив'язана
до геймпада, він повертає порожнє, і віджет ховається, бо «Немає» було б неправдою вже саме собою.
На Android та iOS він ховається сам.