33 lines
1.2 KiB
GDScript
33 lines
1.2 KiB
GDScript
extends Node2D
|
|
|
|
func _ready() -> void:
|
|
GameState.start_new_run()
|
|
seed(56789)
|
|
var ship := preload("res://scenes/game/player_ship.tscn").instantiate()
|
|
add_child(ship)
|
|
ship.set_physics_process(false)
|
|
ship.get_node("WeaponController").set_physics_process(false)
|
|
ship.shields = 1000.0
|
|
ship.max_shields = 1000.0
|
|
var enemy := preload("res://scenes/game/enemy_ship.tscn").instantiate()
|
|
enemy.position = Vector2(400, 0)
|
|
add_child(enemy)
|
|
enemy.set_physics_process(false)
|
|
enemy.set("_player", ship)
|
|
enemy.weapon_kind = ItemDefinition.WeaponKind.LASER
|
|
enemy.weapon_damage = 1.0
|
|
enemy.weapon_cooldown = 1.5
|
|
assert(is_equal_approx(enemy.get_fire_interval(), 3.0))
|
|
assert(is_equal_approx(enemy.get_weapon_dps(), 1.0 / 3.0))
|
|
enemy.weapon_cooldown = 0.275
|
|
assert(enemy.get_fire_interval() >= 1.4)
|
|
await get_tree().physics_frame
|
|
await get_tree().physics_frame
|
|
for index in 100:
|
|
enemy._fire_plasma(Vector2.LEFT)
|
|
var hits := 1000.0 - float(ship.shields)
|
|
assert(hits >= 45.0 and hits <= 85.0)
|
|
print("ENEMY_LASER_TEST: PASS (slower cooldown, minimum interval, displayed DPS, %d real hits / 100 shots)" % roundi(hits))
|
|
await get_tree().create_timer(0.15).timeout
|
|
get_tree().quit()
|