Collapse the two tunnel buttons into a single Tunnel button whose ghost resolves between Tunnel Entry and Tunnel Exit based on the hovered position, with a green connection preview. - Add pure core helper TunnelCompletion (firstTunnelFacing + resolveTunnelCompletion): the entry/exit completion scans and the sub-tile cursor tie-break, unit-tested in TunnelCompletionTest. - Dedup BeltSystem::reevaluateTunnelPairing onto firstTunnelFacing so the pairing scan rule lives in one place. - GameWorldView: resolve the ghost type on hover/rotate (matching built tunnels and construction sites), place the resolved type (drop the old auto-switch), and draw the matched partner + between-tiles in green. Hotkey 3 = Tunnel, 4 unused. - BuildButtonGrid: one "Tunnel" button; tunnel_exit stays player-placeable so blueprints and cost totals still account for exits. - Add the green tunnel_preview overlay color (VisualsConfig/Loader/toml). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7N59FsLA5e2kuVdqe4Uhc
99 lines
2.2 KiB
TOML
99 lines
2.2 KiB
TOML
[[building]]
|
|
id = "belt"
|
|
tooltip = "Transports items one tile at a time in the direction it faces."
|
|
cost = 2
|
|
player_placeable = true
|
|
construction_time_seconds = 0.2
|
|
surface_mask = ["A>"]
|
|
|
|
[[building]]
|
|
id = "splitter"
|
|
tooltip = "Splits an incoming item stream between two outputs, with optional per-output filters."
|
|
cost = 3
|
|
player_placeable = true
|
|
construction_time_seconds = 0.5
|
|
surface_mask = ["<A>"]
|
|
|
|
[[building]]
|
|
id = "tunnel_entry"
|
|
tooltip = "Sends items underground so belts can cross. Places an entry, or an exit when it would connect to a matching entry under the cursor."
|
|
cost = 5
|
|
player_placeable = true
|
|
construction_time_seconds = 0.5
|
|
surface_mask = ["A>"]
|
|
|
|
[[building]]
|
|
id = "tunnel_exit"
|
|
tooltip = "Receives items from a matching tunnel entry and pushes them onward."
|
|
cost = 5
|
|
player_placeable = true
|
|
construction_time_seconds = 0.5
|
|
surface_mask = ["A>"]
|
|
|
|
[[building]]
|
|
id = "miner"
|
|
tooltip = "Extracts a selected ore from the asteroid; every tile yields any ore."
|
|
cost = 15
|
|
player_placeable = true
|
|
construction_time_seconds = 1
|
|
surface_mask = [
|
|
"A>",
|
|
]
|
|
|
|
[[building]]
|
|
id = "smelter"
|
|
tooltip = "Melts ore or scrap into basic materials. No recipe selection needed."
|
|
cost = 20
|
|
player_placeable = true
|
|
construction_time_seconds = 1
|
|
surface_mask = [
|
|
"AA",
|
|
" v",
|
|
]
|
|
|
|
[[building]]
|
|
id = "assembler"
|
|
tooltip = "Crafts a selected recipe from the production tree into intermediate or final parts."
|
|
cost = 35
|
|
player_placeable = true
|
|
construction_time_seconds = 1
|
|
surface_mask = [
|
|
"AA ",
|
|
"AA>",
|
|
]
|
|
|
|
[[building]]
|
|
id = "reprocessing_plant"
|
|
tooltip = "Consumes scrap and yields one random higher-tier product per cycle."
|
|
cost = 40
|
|
player_placeable = true
|
|
construction_time_seconds = 1
|
|
surface_mask = [
|
|
"AAA ",
|
|
"AAA>",
|
|
"AAA ",
|
|
]
|
|
|
|
[[building]]
|
|
id = "shipyard"
|
|
tooltip = "Builds autonomous combat ships from a selected schematic and module layout."
|
|
cost = 60
|
|
player_placeable = true
|
|
construction_time_seconds = 1
|
|
surface_mask = [
|
|
"AAAS>",
|
|
"AAAS ",
|
|
]
|
|
|
|
[[building]]
|
|
id = "salvage_bay"
|
|
tooltip = "Drop-off point where salvage ships unload collected scrap onto belts."
|
|
cost = 25
|
|
player_placeable = true
|
|
construction_time_seconds = 1
|
|
output_buffer_capacity = 20
|
|
surface_mask = [
|
|
"<AAS",
|
|
" AAS",
|
|
]
|