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({"힘": 0.85, "민첩": 0.5, "지능": 0.3, "체력": 0.7, "행운": 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             # 기본은 꺼져 있다

시키지 않으면 스스로 넘어가지 않고, 5초가 하한이다 — 3초마다 바뀌는 배너는 글을 다 읽기도 전에 글을 걷어 간다. 손을 대면 타이머가 처음부터 다시 가고, reduce_motion 이면 스스로는 절대 넘어가지 않는다. 점은 작게 그려져도 터치 최소 크기로 눌린다.

GoKbd — 거짓말하지 않는 키 안내

hint.add_child(GoKbd.for_action(&"interact"))   # 실제 배정된 키를 읽는다

코드에 박아 넣은 "F 를 누르세요" 는 플레이어가 키를 바꾼 뒤에도 계속 F 라고 말한다 — PC UI 에서 가장 흔한 거짓말이다. for_action()InputMap 을 읽는다. 그 동작이 패드에만 배정되어 있으면 빈 값을 돌려주고 위젯은 숨는다. "없음" 이라고 적는 것 역시 또 하나의 거짓말이기 때문이다. Android 와 iOS 에서는 스스로 숨는다.