Guide the fleet to the nearest unconquered scan target

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019AJMdB7iuHuLFZM1aBu3GD
This commit is contained in:
Loïc Wisniewski 2026-09-04 21:46:24 +02:00
commit 10d19a369b
9 changed files with 311 additions and 38 deletions

View file

@ -2,14 +2,17 @@ extends Node2D
# Preview, not a test (underscore prefix keeps it out of run_tests.sh).
# Renders the world map with buildings placed and an extractor built, so the
# issue #11 building markers and the issue #9 extractor badge can actually be
# LOOKED at. --headless draws no pixels, so no headless test can tell whether
# a marker is visible - see tests/screenshot.sh.
# issue #11 building markers, issue #9 extractor badge, and issue #200 scan
# reticle can actually be LOOKED at. --headless draws no pixels, so no
# headless test can tell whether a marker is visible - see tests/screenshot.sh.
#
# bash tests/screenshot.sh res://tests/_marker_preview.tscn /tmp/map.png 20 720x1280
func _ready() -> void:
GameState.reset_new_game()
GameState.intro_active = false
GameState.reset_quests(false)
GameState.buildings.clear()
GameState.extractors.clear()
GameState.explored_chunks.clear()
@ -18,6 +21,8 @@ func _ready() -> void:
GameState.add_building(GameState.BUILDING_MOTHERSHIP, Vector2(900.0, -700.0))
GameState.add_building(GameState.BUILDING_SHIP_CRAFTER, Vector2(-1100.0, 300.0))
GameState.add_building(GameState.BUILDING_COMMAND_CENTER, Vector2(400.0, 1200.0))
GameState.add_building(GameState.BUILDING_PLANET_SCANNER, Vector2(-350.0, -500.0))
GameState.scan_for_planet(PlanetDefinitions.GAS_GIANT_ID, Vector2.ZERO)
# Reveal a patch of map, and put an extractor on whichever planet is
# nearest the origin so its badge is in frame too.
@ -42,4 +47,8 @@ func _ready() -> void:
# open_map(), not `visible = true` - opening also recentres the view on
# the fleet, and without that the map is drawn from its own origin in the
# corner of the screen with everything near the fleet cropped off.
main.get_node("UI/WorldMap").open_map()
var world_map: Control = main.get_node("UI/WorldMap")
world_map.open_map()
var target: Dictionary = GameState.active_scanner_target()
if not target.is_empty():
world_map.focus_world_position(Vector2(target.world_position))