utils.notest.gd 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. static func get_type(property: Dictionary, is_return: bool = false) -> String:
  2. match property.type:
  3. TYPE_NIL:
  4. if property.usage & PROPERTY_USAGE_NIL_IS_VARIANT:
  5. return "Variant"
  6. return "void" if is_return else "null"
  7. TYPE_INT:
  8. if property.usage & PROPERTY_USAGE_CLASS_IS_ENUM:
  9. if property.class_name == &"":
  10. return "<unknown enum>"
  11. return property.class_name
  12. TYPE_ARRAY:
  13. if property.hint == PROPERTY_HINT_ARRAY_TYPE:
  14. if str(property.hint_string).is_empty():
  15. return "Array[<unknown type>]"
  16. return "Array[%s]" % property.hint_string
  17. TYPE_OBJECT:
  18. if not str(property.class_name).is_empty():
  19. return property.class_name
  20. return variant_get_type_name(property.type)
  21. static func get_property_signature(property: Dictionary, is_static: bool = false) -> String:
  22. var result: String = ""
  23. if not (property.usage & PROPERTY_USAGE_SCRIPT_VARIABLE):
  24. printerr("Missing `PROPERTY_USAGE_SCRIPT_VARIABLE` flag.")
  25. if property.usage & PROPERTY_USAGE_DEFAULT:
  26. result += "@export "
  27. if is_static:
  28. result += "static "
  29. result += "var " + property.name + ": " + get_type(property)
  30. return result
  31. static func get_method_signature(method: Dictionary, is_signal: bool = false) -> String:
  32. var result: String = ""
  33. if method.flags & METHOD_FLAG_STATIC:
  34. result += "static "
  35. result += ("signal " if is_signal else "func ") + method.name + "("
  36. var args: Array[Dictionary] = method.args
  37. var default_args: Array = method.default_args
  38. var mandatory_argc: int = args.size() - default_args.size()
  39. for i in args.size():
  40. if i > 0:
  41. result += ", "
  42. var arg: Dictionary = args[i]
  43. result += arg.name + ": " + get_type(arg)
  44. if i >= mandatory_argc:
  45. result += " = " + var_to_str(default_args[i - mandatory_argc])
  46. result += ")"
  47. if is_signal:
  48. if get_type(method.return, true) != "void":
  49. printerr("Signal return type must be `void`.")
  50. else:
  51. result += " -> " + get_type(method.return, true)
  52. return result
  53. static func variant_get_type_name(type: Variant.Type) -> String:
  54. match type:
  55. TYPE_NIL:
  56. return "Nil" # `Nil` in core, `null` in GDScript.
  57. TYPE_BOOL:
  58. return "bool"
  59. TYPE_INT:
  60. return "int"
  61. TYPE_FLOAT:
  62. return "float"
  63. TYPE_STRING:
  64. return "String"
  65. TYPE_VECTOR2:
  66. return "Vector2"
  67. TYPE_VECTOR2I:
  68. return "Vector2i"
  69. TYPE_RECT2:
  70. return "Rect2"
  71. TYPE_RECT2I:
  72. return "Rect2i"
  73. TYPE_VECTOR3:
  74. return "Vector3"
  75. TYPE_VECTOR3I:
  76. return "Vector3i"
  77. TYPE_TRANSFORM2D:
  78. return "Transform2D"
  79. TYPE_VECTOR4:
  80. return "Vector4"
  81. TYPE_VECTOR4I:
  82. return "Vector4i"
  83. TYPE_PLANE:
  84. return "Plane"
  85. TYPE_QUATERNION:
  86. return "Quaternion"
  87. TYPE_AABB:
  88. return "AABB"
  89. TYPE_BASIS:
  90. return "Basis"
  91. TYPE_TRANSFORM3D:
  92. return "Transform3D"
  93. TYPE_PROJECTION:
  94. return "Projection"
  95. TYPE_COLOR:
  96. return "Color"
  97. TYPE_STRING_NAME:
  98. return "StringName"
  99. TYPE_NODE_PATH:
  100. return "NodePath"
  101. TYPE_RID:
  102. return "RID"
  103. TYPE_OBJECT:
  104. return "Object"
  105. TYPE_CALLABLE:
  106. return "Callable"
  107. TYPE_SIGNAL:
  108. return "Signal"
  109. TYPE_DICTIONARY:
  110. return "Dictionary"
  111. TYPE_ARRAY:
  112. return "Array"
  113. TYPE_PACKED_BYTE_ARRAY:
  114. return "PackedByteArray"
  115. TYPE_PACKED_INT32_ARRAY:
  116. return "PackedInt32Array"
  117. TYPE_PACKED_INT64_ARRAY:
  118. return "PackedInt64Array"
  119. TYPE_PACKED_FLOAT32_ARRAY:
  120. return "PackedFloat32Array"
  121. TYPE_PACKED_FLOAT64_ARRAY:
  122. return "PackedFloat64Array"
  123. TYPE_PACKED_STRING_ARRAY:
  124. return "PackedStringArray"
  125. TYPE_PACKED_VECTOR2_ARRAY:
  126. return "PackedVector2Array"
  127. TYPE_PACKED_VECTOR3_ARRAY:
  128. return "PackedVector3Array"
  129. TYPE_PACKED_COLOR_ARRAY:
  130. return "PackedColorArray"
  131. push_error("Argument `type` is invalid. Use `TYPE_*` constants.")
  132. return "<invalid type>"