Add manual extractor resource transfers
This commit is contained in:
parent
e2d4297ee5
commit
db0e6a0ec2
7 changed files with 180 additions and 14 deletions
74
tests/test_extractor_transfer.gd
Normal file
74
tests/test_extractor_transfer.gd
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
extends SceneTree
|
||||
|
||||
var state: Node
|
||||
var scene: Node
|
||||
var fleet: Node
|
||||
var controller: Node
|
||||
var planet: Node2D
|
||||
var extractor_index: int = -1
|
||||
var resource_type: String
|
||||
var stage: int = 0
|
||||
var elapsed: float = 0.0
|
||||
|
||||
|
||||
func _initialize() -> void:
|
||||
state = root.get_node("GameState")
|
||||
state.extractors.clear()
|
||||
state.transporters.clear()
|
||||
state.fleet_cargo = 0
|
||||
state.fleet_gas_cargo = 0
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
fleet = scene.get_node("Fleet")
|
||||
controller = scene.get_node("BuildController")
|
||||
|
||||
|
||||
func _process(delta: float) -> bool:
|
||||
elapsed += delta
|
||||
match stage:
|
||||
0:
|
||||
scene.get_node("AsteroidField").set_process(false)
|
||||
scene.get_node("EnemySpawner").set_process(false)
|
||||
for planets in scene.get_node("PlanetField").populated_chunks.values():
|
||||
if not planets.is_empty() and is_instance_valid(planets[0]):
|
||||
planet = planets[0]
|
||||
break
|
||||
if planet == null:
|
||||
return _fail("no nearby generated planet available")
|
||||
resource_type = planet.resource_type
|
||||
state.add_extractor(planet.planet_name, planet.position, resource_type, planet.planet_id)
|
||||
extractor_index = state.extractors.size() - 1
|
||||
state.extractors[extractor_index].inventory.deposit(resource_type, 12)
|
||||
for ship in fleet.ships:
|
||||
ship.position = planet.position
|
||||
fleet.move_to(planet.position)
|
||||
elapsed = 0.0
|
||||
stage = 1
|
||||
return false
|
||||
1:
|
||||
if elapsed < 1.2:
|
||||
return false
|
||||
if controller.current_extractor_index != extractor_index or not controller.action_button.visible:
|
||||
return _fail("extractor did not expose a contextual action")
|
||||
if not scene.get_node("UI/EnterAtmosphereButton").visible:
|
||||
return _fail("extractor action hid the separate landing action")
|
||||
controller._on_context_action_pressed()
|
||||
if not controller.transfer_menu.visible or controller.transfer_list.extractor_index != extractor_index:
|
||||
return _fail("transfer panel did not bind to the extractor")
|
||||
var before: int = state.fleet_resource(resource_type)
|
||||
controller._on_resource_transfer(resource_type, false, 5)
|
||||
if state.fleet_resource(resource_type) != before + 5:
|
||||
return _fail("fleet did not fetch five resources from extractor")
|
||||
if state.extractor_resource(extractor_index, resource_type) < 7:
|
||||
return _fail("extractor transfer removed too much stock")
|
||||
print("fleet fetched %s from extractor while landing remained available" % resource_type)
|
||||
print("TEST_EXTRACTOR_TRANSFER: PASS")
|
||||
quit(0)
|
||||
return true
|
||||
return false
|
||||
|
||||
|
||||
func _fail(message: String) -> bool:
|
||||
print("TEST_EXTRACTOR_TRANSFER: FAIL (%s)" % message)
|
||||
quit(1)
|
||||
return true
|
||||
Loading…
Reference in a new issue