Workbench bill editor — tap a workbench, see/edit bills
Tap-to-select chain extended to workbenches (pawn always wins on shared tile). Mutually exclusive with pawn selection via EventBus — selecting one clears the other. New WorkbenchPanel (scenes/ui/workbench_panel.gd, ~432 LOC, layer 18, right-anchored 360 px) mirrors PawnDetailPanel shape. Bill rows expose recipe name, mode (FOREVER / COUNT / UNTIL_N), target count, completed progress, pause, and remove. Add-bill popup filters RecipeCatalog.all() by accepted_skill so a Hearth only offers cooking recipes. Supporting plumbing: - EventBus.workbench_selected / workbench_deselected signals. - Workbench.remove_bill() — interrupts mid-craft cleanly via on_craft_interrupted() before erasing. - RecipeCatalog.all() static enumerator + Recipe.display_name() helper. - World.workbench_at_tile() lookup. - i18n keys ui.bill.* and ui.workbench.* in strings.gd. Closes the deferred Phase 17 "Bill UI for workbenches" item. Player- built workbenches are now functionally configurable; before this landed, only world.gd-hardcoded bills worked.
This commit is contained in:
parent
e5f3693ad9
commit
bdd435202d
9 changed files with 551 additions and 10 deletions
|
|
@ -109,3 +109,17 @@ static func cremate_corpse() -> Recipe:
|
|||
r.required_skill = &"manual_labor"
|
||||
r.skill_threshold = 0
|
||||
return r
|
||||
|
||||
|
||||
## Returns one fresh instance of every recipe in the catalog. Used by UI
|
||||
## recipe-pickers to enumerate available bills; callers filter by
|
||||
## `recipe.required_skill` against the workbench's `accepted_skill`.
|
||||
static func all() -> Array[Recipe]:
|
||||
return [
|
||||
plank(),
|
||||
stone_block(),
|
||||
flour(),
|
||||
bread(),
|
||||
meal_from_vegetables(),
|
||||
cremate_corpse(),
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue