47 lines
1.6 KiB
GDScript
47 lines
1.6 KiB
GDScript
# ambience_test —— AreaAmbienceData + .pra -> Audio source contract.
|
|
# godot --headless --path project --script ambience_test.gd
|
|
extends SceneTree
|
|
|
|
var _fail := 0
|
|
|
|
func _ck(ok: bool, message: String) -> void:
|
|
if not ok:
|
|
_fail += 1
|
|
printerr("FAIL: " + message)
|
|
|
|
func _init() -> void:
|
|
if not ClassDB.class_exists("Metin2World"):
|
|
printerr("FAIL: Metin2World extension is not registered")
|
|
quit(1)
|
|
return
|
|
var assets := AssetRoot.path()
|
|
var world: Node = ClassDB.instantiate("Metin2World")
|
|
world.set("auto_load", false)
|
|
world.set("assets_root", assets)
|
|
world.set("map_path", "OutdoorA3/metin2_map_a3")
|
|
world.set("focus_tile", Vector2i(3, 3))
|
|
world.set("load_radius_tiles", 0)
|
|
world.set("splat_enabled", false)
|
|
world.set("water_enabled", false)
|
|
world.set("env_enabled", false)
|
|
get_root().add_child(world)
|
|
var ok: bool = world.call("load_map")
|
|
_ck(ok, "A3 map chunk loads")
|
|
var sources: Array = world.call("get_ambience_sources")
|
|
_ck(sources.size() == 1, "A3 chunk exposes one ambience source")
|
|
if sources.size() == 1:
|
|
var source: Dictionary = sources[0]
|
|
_ck(int(source.get("range_cm", 0)) == 3300, "ambience range is preserved in cm")
|
|
_ck(String(source.get("play_type", "")).to_upper() == "LOOP", "ambience play type is LOOP")
|
|
var sounds: Array = source.get("sounds", [])
|
|
_ck(sounds.size() == 1 and String(sounds[0]) == "sound/ambience/warp_test.mp3",
|
|
".pra sound vector is exposed to Audio")
|
|
world.queue_free()
|
|
await process_frame
|
|
if _fail == 0:
|
|
print("PASS: ambience_test (AreaAmbienceData + .pra + world/audio contract)")
|
|
quit(0)
|
|
else:
|
|
printerr("%d check(s) failed" % _fail)
|
|
quit(1)
|