網頁上熟悉的那些形狀,照遊戲真正需要的樣子重做了一遍。
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 — 這是 PC 介面上最常見的謊。
for_action() 會去讀 InputMap;如果那個動作綁的是遊戲手把,
它會回傳空的、控制項自己隱藏,因為顯示「無」本身也是一個謊。在 Android 與 iOS 上它會自己隱藏。