gohud

游戏真正用得上的形态

← 控件

那些网页上眼熟的形态,按游戏真正要从它们身上拿到的东西重做了一遍。

GoRewardCalendar —— 每日签到

日期选择器在游戏里几乎派不上用场,日历这个形态却用得上 —— 用在签到奖励上, 要紧的是你签到到第几天了,而不是今天几号。

var attendance := GoRewardCalendar.make(days, claimed_until)
attendance.claimed.connect(func(day: int) -> void: server.claim_day(day))

只有今天这一格按得动 —— 一颗按下去什么都不发生的按钮,看上去就是坏的。已领取、今天和将来 这三种,同时靠三样东西区分开:一个对勾字形、一圈强调色描边,以及变暗。

GoRadarGoDonut —— 一眼看完的属性

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 点力量和 45 点智力 并排画出来,画出来的是一句谎话。环形图给的是原始值,占比由它替你除;超过五块它会把剩下的合起来, 因为第六块只是一根谁都读不出来的细线。对比线是虚线,而不只是换一个颜色; 图例会把百分比用文字写出来。

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 上它会自己藏起来。