extends SceneTree const MENUS: Array[String] = [ "BuildMenu", "CraftMenu", "LabMenu", "TransferMenu", "HangarMenu", "FormationMenu", "SkillMenu", "PlanningMenu", "GarrisonMenu", ] func _initialize() -> void: call_deferred("_verify") func _verify() -> void: var packed: PackedScene = load("res://world/Main.tscn") if packed == null: return _fail("Main.tscn did not load") var main: Node = packed.instantiate() root.add_child(main) for menu_name in MENUS: var menu: Node = main.get_node_or_null("UI/%s" % menu_name) if menu == null: return _fail("%s is missing" % menu_name) var expected: String = "res://ui/menus/%s.tscn" % menu_name if menu.scene_file_path != expected: return _fail("%s is inline in Main.tscn instead of instancing %s" \ % [menu_name, expected]) if menu.get_script() == null: return _fail("%s has no owning script" % menu_name) var source: String = FileAccess.get_file_as_string( "res://controllers/BuildController.gd") for menu_name in MENUS: if "../UI/%s/" % menu_name in source: return _fail("BuildController reaches into %s children" % menu_name) print("%d menu scenes own their controls; BuildController uses root APIs" % MENUS.size()) print("TEST_MENU_SCENE_BOUNDARIES: PASS") quit(0) func _fail(message: String) -> void: print("TEST_MENU_SCENE_BOUNDARIES: FAIL (%s)" % message) quit(1)