feat(creation): distinguish granted skills as owned, and enlarge the small text
Two F6-review follow-ups from the human's read of the running screen.
1. GRANTED skill chips now read as 'you already have this', not 'unavailable'.
The elf's granted `perception` shared SkillChip's dim `disabled` look with the
'picks are spent' chips, so it read as blocked. Split out a fourth state,
SkillChipGranted — a solid gold fill, cream text, and a ✓ prefix (owned) — while
the pool-is-spent chips keep the plain dim disabled. Applied per-chip in _bind_skills.
2. Enlarged the small mono/body/prose roles for readability on sub-1920 laptops
(the 1920 design canvas scales DOWN on a smaller screen, so 11-13px text got
tiny): DM prose 20->22, MONO 13->14, section labels 13->14, card title 19->20,
card body 13->14, chips 11->12, skill chips 12->14, the two flag pills +1. Big
serif headings unchanged.
Two layout consequences the guards caught and I fixed, not silenced:
- Race cards overflowed the taller blurb -> card min-height 140->180 (the overflow
guard, which measures against the card the engine does NOT derive from the text,
went red first; traps.md #17).
- The 9-chip Human bonus row, wider at the bigger font, blew the whole sheet past
the viewport -> BonusRow HBoxContainer -> HFlowContainer so it wraps instead of
forcing the sheet wide. Nothing depends on the row's type (tests check child
count + visibility only).
319 client tests green (theme drift guard + overflow guard included); screenshot-
verified at 1280x720: granted chip owned, no clipping, bonus row wraps cleanly.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -41,7 +41,7 @@ var _ability_cards: Array = []
|
||||
@onready var _detail_mech: Label = $Split/Sheet/Body/CallingSection/Detail/Box/Mechanics
|
||||
@onready var _pool_row: HBoxContainer = $Split/Sheet/Body/SkillSection/PoolRow
|
||||
@onready var _pool_count: Label = $Split/Sheet/Body/SkillSection/PoolRow/Count
|
||||
@onready var _bonus_row: HBoxContainer = $Split/Sheet/Body/SkillSection/BonusRow
|
||||
@onready var _bonus_row: HFlowContainer = $Split/Sheet/Body/SkillSection/BonusRow
|
||||
@onready var _ability_row: HBoxContainer = $Split/Sheet/Body/AbilitySection/Cards
|
||||
@onready var _points: Label = $Split/Sheet/Body/AbilitySection/Head/Points
|
||||
@onready var _reroll: Button = $Split/Sheet/Body/AbilitySection/Head/Reroll
|
||||
@@ -225,11 +225,16 @@ func _bind_skills() -> void:
|
||||
chip.visible = false
|
||||
continue
|
||||
var skill: String = pool[i]
|
||||
var granted := draft.is_granted(skill)
|
||||
chip.visible = true
|
||||
chip.text = CreationCopy.skill_label(skill)
|
||||
# A granted skill reads as OWNED (gold + ✓ via SkillChipGranted), not merely
|
||||
# disabled — otherwise it looks identical to a "picks are spent" chip and reads
|
||||
# as "unavailable" rather than "you already have this".
|
||||
chip.theme_type_variation = ThemeKeys.SKILL_CHIP_GRANTED if granted else ThemeKeys.SKILL_CHIP
|
||||
chip.text = ("✓ " + CreationCopy.skill_label(skill)) if granted else CreationCopy.skill_label(skill)
|
||||
chip.button_pressed = draft.is_picked(skill)
|
||||
# Inert when the race already granted it, or when the picks are spent.
|
||||
chip.disabled = draft.is_granted(skill) or (not draft.is_picked(skill) and not draft.can_pick(skill))
|
||||
chip.disabled = granted or (not draft.is_picked(skill) and not draft.can_pick(skill))
|
||||
|
||||
_bonus_row.visible = draft.wants_bonus_skill()
|
||||
for i in range(_bonus_chips.size()):
|
||||
|
||||
Reference in New Issue
Block a user