94 lines
3.5 KiB
GDScript
94 lines
3.5 KiB
GDScript
extends Node
|
|
var game: Node2D
|
|
var manager: Node
|
|
func settle() -> void:
|
|
await get_tree().process_frame
|
|
await get_tree().process_frame
|
|
|
|
func check_hint(expected: String) -> void:
|
|
await settle()
|
|
assert(manager._prompt.visible)
|
|
assert(manager._text.text.contains(expected))
|
|
assert(manager._prompt.size.y < 450)
|
|
assert(manager._prompt.get_global_rect().encloses(manager._text.get_global_rect()))
|
|
if manager._land_button.visible:
|
|
assert(manager._prompt.get_global_rect().encloses(manager._land_button.get_global_rect()))
|
|
assert(get_viewport().get_visible_rect().encloses(manager._prompt.get_global_rect()))
|
|
|
|
func _ready() -> void:
|
|
GameState.system_seed = 8428159
|
|
game = preload("res://scenes/game/game.tscn").instantiate()
|
|
add_child(game)
|
|
await settle()
|
|
manager = game.get_node("PlanetExpeditions")
|
|
for enemy in get_tree().get_nodes_in_group("enemies"):
|
|
enemy.position = Vector2(-9999,-9999)
|
|
game.player.position = Vector2(10000,10000)
|
|
game.player.landing_combat_lock = 100
|
|
var start := Time.get_ticks_usec()
|
|
for frame in 1000:
|
|
manager._process(0)
|
|
var elapsed := Time.get_ticks_usec()-start
|
|
assert(manager._text.text.is_empty() and not manager._prompt.visible)
|
|
print("PROMPT BENCH: 1000 hidden combat refreshes=",elapsed," us; text chars=",manager._text.text.length())
|
|
game.player.position = game.protected_planet.position
|
|
manager._process(0)
|
|
assert(not manager._prompt.visible)
|
|
for frame in 1000:
|
|
manager._process(0)
|
|
assert(not manager._prompt.visible)
|
|
game.player.landing_combat_lock = 0
|
|
manager._process(0)
|
|
await check_hint("EARTHLIKE")
|
|
var blocker := get_tree().get_first_node_in_group("enemies")
|
|
blocker.position = game.player.position+Vector2(100,0)
|
|
manager._process(0)
|
|
assert(not manager._prompt.visible)
|
|
game.player.position = manager.freighter.position
|
|
blocker.position = game.player.position+Vector2(100,0)
|
|
manager._process(0)
|
|
assert(not manager._prompt.visible)
|
|
blocker.position = Vector2(-9999,-9999)
|
|
game.player.position = game.protected_planet.position
|
|
manager._process(0)
|
|
await check_hint("EARTHLIKE")
|
|
# Reproduce an oversized panel retained by an earlier combat warning.
|
|
manager._prompt.size.y = 21054
|
|
manager._text.text = "Old oversized prompt"
|
|
game.player.landing_combat_lock = 0
|
|
manager._process(0)
|
|
await check_hint("EARTHLIKE")
|
|
assert(not manager._land_button.disabled)
|
|
manager.scan_nearby()
|
|
manager._process(0)
|
|
await check_hint("ŚREDNIA SZANSA POI")
|
|
if "--capture-preview" in OS.get_cmdline_user_args():
|
|
await RenderingServer.frame_post_draw
|
|
get_viewport().get_texture().get_image().save_png("res://artifacts/planet_scan_stats.png")
|
|
manager._message_time = 0
|
|
manager._process(0)
|
|
await check_hint("TLEN")
|
|
for visit in 10:
|
|
game.player.position = manager.freighter.position
|
|
manager._process(0)
|
|
await check_hint("FRACHTOWIEC")
|
|
assert(manager._land_button.text == "DOKUJ [L]")
|
|
if visit == 0 and "--capture-preview" in OS.get_cmdline_user_args():
|
|
await RenderingServer.frame_post_draw
|
|
get_viewport().get_texture().get_image().save_png("res://artifacts/freighter_prompt_fixed.png")
|
|
game.player.position = game.protected_planet.position
|
|
manager._process(0)
|
|
await check_hint("TLEN")
|
|
game.player.position = Vector2(10000,10000)
|
|
manager._notice("Krótka wiadomość")
|
|
manager._process(0)
|
|
await check_hint("Krótka wiadomość")
|
|
assert(not manager._land_button.visible)
|
|
manager._message_time = 0
|
|
manager._process(0)
|
|
assert(not manager._prompt.visible)
|
|
print("PLANET PROMPT PASS: bounded text, combat, shrink, planet, freighter, scan, messages, on-screen content")
|
|
game.queue_free()
|
|
await settle()
|
|
get_tree().quit()
|