Files
game-cards/addons/gut/scratch/class_db_info.gd
2026-05-29 09:16:10 +08:00

144 lines
3.8 KiB
GDScript

extends SceneTree
var ThingCounter = load('res://addons/gut/thing_counter.gd')
var ObjectInspector = load('res://scratch/object_inspector.gd')
# SCRIPT ERROR: Parse Error: Identifier "GDScriptNativeClass" not declared in the current scope.
# SCRIPT ERROR: Parse Error: Identifier "SceneCacheInterface" not declared in the current scope.
# SCRIPT ERROR: Parse Error: Identifier "SceneRPCInterface" not declared in the current scope.
# SCRIPT ERROR: Parse Error: Identifier "SceneReplicationInterface" not declared in the current scope.
# SCRIPT ERROR: Parse Error: Identifier "ThemeContext" not declared in the current scope.
func search_for_enum(name):
var classes = ClassDB.get_class_list()
var found = false
for c in classes:
if(ClassDB.class_has_enum(c, name)):
print(c, ' has ', name)
found = true
if(!found):
print('could not find enum ', name)
func get_all_enums():
var classes = ClassDB.get_class_list()
var found = false
var enums = ThingCounter.new()
for c in classes:
var class_enums = ClassDB.class_get_enum_list(c)
for e in class_enums:
enums.add(e)
var enum_constants = ClassDB.class_get_enum_constants(c, e)
print(e)
print(' ', enum_constants)
print()
func get_all_int_constants():
var classes = ClassDB.get_class_list()
var found = false
var all_int_consts = ThingCounter.new()
for c in classes:
var int_consts = ClassDB.class_get_integer_constant_list(c)
# print(c, ':')
# print(' ', int_consts)
for ic in int_consts:
all_int_consts.add(ic)
print(all_int_consts.to_s())
func get_all_properties():
var classes = ClassDB.get_class_list()
var all_properties = ThingCounter.new()
for c in classes:
var prop_list = ClassDB.class_get_property_list(c)
for p in prop_list:
all_properties.add(p.name)
print(all_properties.to_s())
func print_all_classes():
var classes = ClassDB.get_class_list()
for c in classes:
print(c)
func _print_call_class_db_method(method_name, on_class):
var result = ClassDB.call(method_name, on_class)
print(method_name, ': ', result)
func print_whats_up_with_these_guys():
var oi = ObjectInspector.ClassDBInspector.new()
var these_guys = [
"GDScriptNativeClass",
"SceneCacheInterface",
"SceneRPCInterface",
"SceneReplicationInterface",
"ThemeContext",
# "ViewPanner", # only exists when launching from editor.
# "Input"
]
for classname in these_guys:
print("---- ", classname, " ----")
_print_call_class_db_method("get_parent_class", classname)
_print_call_class_db_method("can_instantiate", classname)
_print_call_class_db_method("is_class_enabled", classname)
_print_call_class_db_method("class_exists", classname)
_print_call_class_db_method("class_get_api_type", classname)
print("Methods:")
oi.print_method_signatures(classname)
print()
func print_disabled_classes():
print("Disabled Classes")
print("----------------")
var count = 0
for cname in ClassDB.get_class_list():
if(ClassDB.is_class_enabled(cname) == false):
print("* ", cname)
count += 1
print(count, " total disabled.")
func print_low_method_classes():
print("Few Method Classes")
print("----------------")
var count = 0
for cname in ClassDB.get_class_list():
var methods = ClassDB.class_get_method_list(cname, true)
if(methods.size() < 2):
print("* ", cname, '(', methods.size(), ')')
count += 1
print(count, " total low method classes.")
func can_we_find_the_bad_guys():
print("--- The Bad Guys ---")
# var count = 0
for cname in ClassDB.get_class_list():
if(!ClassDB.can_instantiate(cname) and \
ClassDB.class_get_method_list(cname, true).size() < 2):
print("* ", cname)
func _init():
# get_all_enums()
# get_all_int_constants()
# get_all_properties()
# print_all_classes()
print_whats_up_with_these_guys()
can_we_find_the_bad_guys()
# print_disabled_classes()
# print_low_method_classes()
quit()