Recentre a released stick, slow extractors again, and unbreak the lab layout

Both sticks float - the base jumps to wherever the finger lands, so a player
does not have to hit an exact spot on a screen they cannot feel. Releasing put
only the KNOB back onto the base and left the base parked wherever that touch
had been, so an idle stick sat off-centre in a different place every time and
read as a control still in use. Release now returns base and knob to the
middle of the rect.

Extractors produce at 0.5 ore per second, halved again: at 1.0 they still
outran the rest of the economy. An extractor now pays back its 25-ore cost in
fifty seconds rather than twelve.

The ship lab and the crafter were both overlapping themselves. Enlarging the
shared resource table to 136px (so it could breathe and show bigger type)
pushed its bottom edge 34px into the vessel row beneath it in one and the
status text in the other - my regression, visible immediately on a real
screen and not at all in any test. The lab's second row of upgrade cards was
also already running into the detail text below it, by 13px, before any of
this. Both menus are re-spaced end to end rather than nudged, since moving one
collision into another is how the second one got there.

Two tests carried waits tuned to an extraction rate that has now changed
twice. Both derive them from EXTRACTOR_RATE instead, so the next balance pass
does not report a broken extractor that is working perfectly - the same fix
test_extractor_income already needed one round ago, in the file next to it.

Suite 112/112.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Loïc Wisniewski 2026-08-21 13:31:46 +02:00
commit b999031e6a
8 changed files with 220 additions and 102 deletions

152
Main.tscn
View file

@ -1211,9 +1211,9 @@ color = Color(0.03, 0.03, 0.08, 0.94)
mouse_filter = 2
anchor_right = 1.0
offset_left = 24
offset_top = 36
offset_top = 20
offset_right = -200
offset_bottom = 166
offset_bottom = 82
text = "Ship Lab"
horizontal_alignment = 1
@ -1221,9 +1221,9 @@ horizontal_alignment = 1
mouse_filter = 2
anchor_right = 1.0
offset_left = 24
offset_top = 172
offset_top = 148
offset_right = -24
offset_bottom = 308
offset_bottom = 284
script = ExtResource("24")
[node name="VesselA" type="Control" parent="UI/LabMenu"]
@ -1231,8 +1231,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -300
offset_right = -240
offset_top = 274
offset_bottom = 394
offset_top = 300
offset_bottom = 420
script = ExtResource("10")
icon = 2
glow_color = Color(0.25, 0.85, 1, 1)
@ -1242,8 +1242,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -210
offset_right = -150
offset_top = 274
offset_bottom = 394
offset_top = 300
offset_bottom = 420
script = ExtResource("10")
icon = 2
glow_color = Color(0.45, 0.8, 1, 1)
@ -1253,8 +1253,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -120
offset_right = -60
offset_top = 274
offset_bottom = 394
offset_top = 300
offset_bottom = 420
script = ExtResource("10")
icon = 31
glow_color = Color(0.96, 0.32, 0.78, 1)
@ -1264,8 +1264,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -30
offset_right = 30
offset_top = 274
offset_bottom = 394
offset_top = 300
offset_bottom = 420
script = ExtResource("10")
icon = 12
glow_color = Color(0.95, 0.55, 0.85, 1)
@ -1275,8 +1275,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = 60
offset_right = 120
offset_top = 274
offset_bottom = 394
offset_top = 300
offset_bottom = 420
script = ExtResource("10")
icon = 34
glow_color = Color(1, 0.78, 0.3, 1)
@ -1286,8 +1286,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = 150
offset_right = 210
offset_top = 274
offset_bottom = 394
offset_top = 300
offset_bottom = 420
script = ExtResource("10")
icon = 35
glow_color = Color(0.3, 0.9, 1, 1)
@ -1297,8 +1297,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = 240
offset_right = 300
offset_top = 274
offset_bottom = 394
offset_top = 300
offset_bottom = 420
script = ExtResource("10")
icon = 37
glow_color = Color(0.7, 0.3, 1, 1)
@ -1308,9 +1308,9 @@ visible = false
mouse_filter = 2
anchor_right = 1.0
offset_left = 24
offset_top = 402
offset_top = 424
offset_right = -24
offset_bottom = 460
offset_bottom = 482
theme_override_font_sizes/font_size = 34
horizontal_alignment = 1
text = ""
@ -1321,8 +1321,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -310
offset_right = -230
offset_top = 400
offset_bottom = 472
offset_top = 424
offset_bottom = 496
theme_override_font_sizes/font_size = 15
autowrap_mode = 2
horizontal_alignment = 1
@ -1334,8 +1334,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -220
offset_right = -140
offset_top = 400
offset_bottom = 472
offset_top = 424
offset_bottom = 496
theme_override_font_sizes/font_size = 15
autowrap_mode = 2
horizontal_alignment = 1
@ -1347,8 +1347,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -130
offset_right = -50
offset_top = 400
offset_bottom = 472
offset_top = 424
offset_bottom = 496
theme_override_font_sizes/font_size = 15
autowrap_mode = 2
horizontal_alignment = 1
@ -1360,8 +1360,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -40
offset_right = 40
offset_top = 400
offset_bottom = 472
offset_top = 424
offset_bottom = 496
theme_override_font_sizes/font_size = 15
autowrap_mode = 2
horizontal_alignment = 1
@ -1373,8 +1373,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = 50
offset_right = 130
offset_top = 400
offset_bottom = 472
offset_top = 424
offset_bottom = 496
theme_override_font_sizes/font_size = 15
autowrap_mode = 2
horizontal_alignment = 1
@ -1386,8 +1386,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = 140
offset_right = 220
offset_top = 400
offset_bottom = 472
offset_top = 424
offset_bottom = 496
theme_override_font_sizes/font_size = 15
autowrap_mode = 2
horizontal_alignment = 1
@ -1399,8 +1399,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = 230
offset_right = 310
offset_top = 400
offset_bottom = 472
offset_top = 424
offset_bottom = 496
theme_override_font_sizes/font_size = 15
autowrap_mode = 2
horizontal_alignment = 1
@ -1410,9 +1410,9 @@ text = "Distorder"
mouse_filter = 2
anchor_right = 1.0
offset_left = 48
offset_top = 480
offset_top = 502
offset_right = -48
offset_bottom = 484
offset_bottom = 506
color = Color(0.25, 0.85, 1, 0.6)
[node name="UpgradeList" type="Label" parent="UI/LabMenu"]
@ -1421,9 +1421,9 @@ mouse_filter = 2
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 32
offset_top = 488
offset_top = 514
offset_right = -32
offset_bottom = -470
offset_bottom = -390
theme_override_font_sizes/font_size = 30
autowrap_mode = 2
text = ""
@ -1434,9 +1434,9 @@ anchor_right = 1.0
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 32
offset_top = -460
offset_top = -380
offset_right = -32
offset_bottom = -330
offset_bottom = -280
theme_override_font_sizes/font_size = 32
autowrap_mode = 2
horizontal_alignment = 1
@ -1448,9 +1448,9 @@ anchor_right = 1.0
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 32
offset_top = -324
offset_top = -274
offset_right = -32
offset_bottom = -256
offset_bottom = -226
theme_override_font_sizes/font_size = 30
autowrap_mode = 2
horizontal_alignment = 1
@ -1464,8 +1464,8 @@ anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -230
offset_right = -110
offset_top = -240
offset_bottom = -120
offset_top = -218
offset_bottom = -108
script = ExtResource("10")
icon = 6
glow_color = Color(0.55, 0.95, 0.9, 1)
@ -1477,8 +1477,8 @@ anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 110
offset_right = 230
offset_top = -240
offset_bottom = -120
offset_top = -218
offset_bottom = -108
script = ExtResource("10")
icon = 4
glow_color = Color(0.45, 0.9, 0.55, 1)
@ -1490,9 +1490,9 @@ anchor_right = 1.0
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 24
offset_top = -110
offset_top = -102
offset_right = -24
offset_bottom = -20
offset_bottom = -22
theme_override_font_sizes/font_size = 28
autowrap_mode = 2
horizontal_alignment = 1
@ -1503,8 +1503,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -240
offset_right = -120
offset_top = 488
offset_bottom = 598
offset_top = 514
offset_bottom = 624
script = ExtResource("10")
icon = 13
glow_color = Color(0.25, 0.85, 1, 1)
@ -1515,8 +1515,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -310
offset_right = -50
offset_top = 603
offset_bottom = 673
offset_top = 628
offset_bottom = 698
theme_override_font_sizes/font_size = 22
autowrap_mode = 2
horizontal_alignment = 1
@ -1527,8 +1527,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = 120
offset_right = 240
offset_top = 488
offset_bottom = 598
offset_top = 514
offset_bottom = 624
script = ExtResource("10")
icon = 13
glow_color = Color(0.25, 0.85, 1, 1)
@ -1539,8 +1539,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = 50
offset_right = 310
offset_top = 603
offset_bottom = 673
offset_top = 628
offset_bottom = 698
theme_override_font_sizes/font_size = 22
autowrap_mode = 2
horizontal_alignment = 1
@ -1551,8 +1551,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -240
offset_right = -120
offset_top = 678
offset_bottom = 783
offset_top = 706
offset_bottom = 816
script = ExtResource("10")
icon = 13
glow_color = Color(0.25, 0.85, 1, 1)
@ -1563,8 +1563,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = -310
offset_right = -50
offset_top = 788
offset_bottom = 833
offset_top = 820
offset_bottom = 890
theme_override_font_sizes/font_size = 22
autowrap_mode = 2
horizontal_alignment = 1
@ -1575,8 +1575,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = 120
offset_right = 240
offset_top = 678
offset_bottom = 783
offset_top = 706
offset_bottom = 816
script = ExtResource("10")
icon = 13
glow_color = Color(0.25, 0.85, 1, 1)
@ -1587,8 +1587,8 @@ anchor_left = 0.5
anchor_right = 0.5
offset_left = 50
offset_right = 310
offset_top = 788
offset_bottom = 833
offset_top = 820
offset_bottom = 890
theme_override_font_sizes/font_size = 22
autowrap_mode = 2
horizontal_alignment = 1
@ -1597,10 +1597,10 @@ text = ""
[node name="CloseButton" type="Control" parent="UI/LabMenu"]
anchor_left = 1.0
anchor_right = 1.0
offset_left = -172
offset_top = 24
offset_left = -140
offset_top = 20
offset_right = -24
offset_bottom = 172
offset_bottom = 136
script = ExtResource("10")
icon = 1
glow_color = Color(0.55, 0.95, 0.9, 1)
@ -1619,27 +1619,27 @@ color = Color(0.03, 0.03, 0.08, 0.94)
mouse_filter = 2
anchor_right = 1.0
offset_left = 24
offset_top = 36
offset_top = 20
offset_right = -200
offset_bottom = 166
offset_bottom = 82
text = "Build a ship"
horizontal_alignment = 1
[node name="Bar" type="Control" parent="UI/CraftMenu"]
mouse_filter = 2
offset_left = 24
offset_top = 172
offset_top = 148
offset_right = 520
offset_bottom = 308
offset_bottom = 284
script = ExtResource("24")
[node name="StatusLabel" type="Label" parent="UI/CraftMenu"]
mouse_filter = 2
anchor_right = 1.0
offset_left = 24
offset_top = 274
offset_top = 300
offset_right = -200
offset_bottom = 420
offset_bottom = 446
theme_override_font_sizes/font_size = 36
autowrap_mode = 2
text = ""
@ -1899,10 +1899,10 @@ glow_color = Color(0.25, 0.85, 1, 1)
[node name="CloseButton" type="Control" parent="UI/CraftMenu"]
anchor_left = 1.0
anchor_right = 1.0
offset_left = -172
offset_left = -140
offset_right = -24
offset_top = 24
offset_bottom = 172
offset_top = 20
offset_bottom = 136
script = ExtResource("10")
icon = 1