39 lines
1.5 KiB
GDScript
39 lines
1.5 KiB
GDScript
extends Node
|
|
|
|
const BALANCE := preload("res://scripts/levels/level_balance.gd")
|
|
const GENERATOR := preload("res://scripts/levels/system_generator.gd")
|
|
const ENEMY := preload("res://scenes/game/enemy_ship.tscn")
|
|
|
|
func _ready() -> void:
|
|
assert(BALANCE.enemy_tiers(1).count(0) == 8)
|
|
assert(preload("res://resources/items/gamma_cannon.tres").weapon_range == 300.0)
|
|
for level in range(2, 1001):
|
|
assert(BALANCE.enemy_count(level) >= BALANCE.enemy_count(level - 1))
|
|
for level in range(1, 1001):
|
|
var tiers := BALANCE.enemy_tiers(level)
|
|
assert(tiers.count(1) == 2 and tiers.count(2) == 1)
|
|
assert(tiers.size() == BALANCE.enemy_count(level))
|
|
assert(tiers.count(0) >= 2)
|
|
for level in [1, 10, 100, 1000]:
|
|
var data: Dictionary = GENERATOR.generate(level, 314159)
|
|
var elites := 0
|
|
var bosses := 0
|
|
for entry in data["enemies"]:
|
|
elites += 1 if entry["tier"] == 1 else 0
|
|
bosses += 1 if entry["tier"] == 2 else 0
|
|
assert(elites == 2 and bosses == 1)
|
|
for tier in 3:
|
|
var enemy := ENEMY.instantiate() as CharacterBody2D
|
|
add_child(enemy)
|
|
enemy.set_physics_process(false)
|
|
enemy.call("apply_level_settings", 1, tier)
|
|
var bar := enemy.get_node("HealthBar")
|
|
bar.call("_process", 0.0)
|
|
var label := bar.get_child(0) as Label
|
|
assert(label.text == ["", "ELITA", "BOSS"][tier])
|
|
assert(label.light_mask == 4)
|
|
assert(enemy.get_node("Sprite2D").modulate == enemy.call("get_tier_tint"))
|
|
enemy.queue_free()
|
|
print("ENEMY_TIERS_TEST: PASS (1000 levels, generated encounters, exactly two elites/one boss, tint and labels)")
|
|
get_tree().quit()
|