45 lines
1.9 KiB
GDScript3
45 lines
1.9 KiB
GDScript3
|
|
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.
|
||
|
|
#
|
||
|
|
# bash tests/screenshot.sh res://tests/_marker_preview.tscn /tmp/map.png 20 720x1280
|
||
|
|
|
||
|
|
|
||
|
|
func _ready() -> void:
|
||
|
|
GameState.buildings.clear()
|
||
|
|
GameState.extractors.clear()
|
||
|
|
GameState.explored_chunks.clear()
|
||
|
|
|
||
|
|
# Near the origin, where the fleet starts, so everything lands on screen.
|
||
|
|
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))
|
||
|
|
|
||
|
|
# Reveal a patch of map, and put an extractor on whichever planet is
|
||
|
|
# nearest the origin so its badge is in frame too.
|
||
|
|
var best: Vector2i = Vector2i.ZERO
|
||
|
|
var best_distance: int = 1 << 30
|
||
|
|
for x in range(-6, 7):
|
||
|
|
for y in range(-6, 7):
|
||
|
|
var chunk: Vector2i = Vector2i(x, y)
|
||
|
|
GameState.explored_chunks[chunk] = true
|
||
|
|
if WorldGen.has_planet_at_chunk(chunk):
|
||
|
|
var d: int = absi(x) + absi(y)
|
||
|
|
if d < best_distance:
|
||
|
|
best_distance = d
|
||
|
|
best = chunk
|
||
|
|
if best_distance < (1 << 30):
|
||
|
|
var data: Dictionary = WorldGen.planet_data_at_chunk(best)
|
||
|
|
GameState.add_extractor(data.name, WorldGen.chunk_origin(best) + data.local_pos)
|
||
|
|
print("extractor on '%s' at chunk %s" % [data.name, best])
|
||
|
|
|
||
|
|
var main: Node = load("res://Main.tscn").instantiate()
|
||
|
|
add_child(main)
|
||
|
|
# 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()
|