Randoloot/tests/previews/planet_services_preview.gd
2026-10-18 14:46:34 +02:00

50 lines
2.5 KiB
GDScript

extends "res://scripts/game/game.gd"
func _ready() -> void:
super._ready()
set_physics_process(false)
player.set_physics_process(false)
player.get_node("WeaponController").set_physics_process(false)
for enemy in get_tree().get_nodes_in_group("enemies"):
enemy.set_physics_process(false)
player.position = protected_planet.position + Vector2(float(protected_planet.get("radius")) * 0.75, 0)
player.reset_physics_interpolation()
GameState.captain.credits = 2500
GameState.captain.skills["business_shark"] = 2
var inventory := player.get_node("ShipInventory") as ShipInventory
inventory.ammunition = 240
inventory.irradiated_ammunition = 12
inventory.missile_ammunition = 7
services_menu.show_services(false)
await get_tree().create_timer(0.5).timeout
assert(services_menu.get("panel").size.x <= 340.0)
assert(services_menu.get("panel").size.y <= 290.0)
var manager := get_node("PlanetExpeditions")
manager._process(0)
manager._layout_prompt()
if manager._prompt.visible:
assert(not services_menu.get_global_rect().intersects(manager._prompt.get_global_rect()),"Supply and telemetry cards must not overlap")
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_services_preview.png")
print("PLANET_SERVICES_PREVIEW: captured ", services_menu.get("panel").size)
var credits := GameState.captain.credits
var cost := inventory.get_ammunition_buy_cost()
services_menu.get("buy_ammunition_button").pressed.emit()
assert(inventory.ammunition == 340 and GameState.captain.credits == credits - cost)
credits = GameState.captain.credits
cost = inventory.get_irradiated_ammunition_buy_cost()
services_menu.get("_gamma_buy").pressed.emit()
assert(inventory.irradiated_ammunition == 22 and GameState.captain.credits == credits - cost)
credits = GameState.captain.credits
cost = inventory.get_missile_buy_cost()
services_menu.get("_missile_button").pressed.emit()
assert(inventory.missile_ammunition == 8 and GameState.captain.credits == credits - cost)
GameState.captain.credits = 0
GameState.captain.emit_changed()
assert(services_menu.get("buy_ammunition_button").disabled and services_menu.get("_gamma_buy").disabled and services_menu.get("_missile_button").disabled)
services_menu.show_services(false, true)
assert(services_menu.get("next_button").disabled)
print("PLANET_SERVICES_TEST: PASS compact dimensions, all purchases, discounts, stock refresh, insufficient credits and portal state")
get_tree().quit()