Show buildings on the world map, and extractors on their planets
Forgejo #11: buildings the player has placed now appear on the world map. They are placed freely in space rather than tied to a chunk, so they get their own pass in WorldMapContent._draw() rather than riding along with the chunk markers. Each type has its own shape and colour, mirroring Building.gd's constants so a marker reads as the same building you built. Forgejo #9: a planet with an extractor built on it now shows it, in both places you look at a planet - an amber derrick on its outline in space, and a matching badge on its world-map marker. The extractor lives on PlanetSurface.tscn, a scene you are not looking at from space, so an already-mined planet was otherwise indistinguishable from an untouched one until you landed on it. The positioning steps are factored out (building_markers(), chunk_has_extractor_badge(), extractor_derrick_tip()) so headless tests can assert on them - --headless has no GPU and draws no pixels, so there is nothing to check in _draw() itself. Both features were also rendered for real via tests/screenshot.sh and looked at. extractor_derrick_tip() exists because the first version of the "derrick is not buried inside the planet" check measured the furthest of all four derrick points, which passes a derrick pointing straight into the ground: the base corners sit a half-width off the rim vertex and clear the outline on their own. Mutation-testing caught it. screenshot.sh now clears a stale /tmp/.X99-lock. A run killed mid-screenshot leaves it behind and Xvfb then refuses :99, which resurfaces later as Godot's misleading "X11 Display is not available". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
b641fa5891
commit
8dd5d7b78f
13 changed files with 472 additions and 0 deletions
25
tests/_planet_derrick_preview.gd
Normal file
25
tests/_planet_derrick_preview.gd
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
extends Node2D
|
||||
|
||||
# Preview, not a test. Two planets side by side in SPACE - the left one has
|
||||
# an extractor built on it, the right one does not - so the issue #9 derrick
|
||||
# can be compared against a plain planet and judged as actually visible.
|
||||
#
|
||||
# bash tests/screenshot.sh res://tests/_planet_derrick_preview.tscn /tmp/derrick.png 15 1280x720
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
GameState.extractors.clear()
|
||||
GameState.buildings.clear()
|
||||
GameState.add_extractor("Mined World", Vector2.ZERO)
|
||||
|
||||
_spawn("Mined World", Vector2(380.0, 380.0), 12345)
|
||||
_spawn("Untouched World", Vector2(900.0, 380.0), 4242)
|
||||
|
||||
|
||||
func _spawn(planet_name: String, at: Vector2, shape_seed: int) -> void:
|
||||
var planet: Node2D = load("res://Planet.tscn").instantiate()
|
||||
planet.planet_name = planet_name
|
||||
planet.shape_seed = shape_seed
|
||||
planet.position = at
|
||||
add_child(planet)
|
||||
print("%s: derrick=%s" % [planet_name, planet.shows_extractor])
|
||||
Loading…
Reference in a new issue