42 lines
1.3 KiB
GDScript3
42 lines
1.3 KiB
GDScript3
|
|
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)
|