diff --git a/addons/mod_loader/internal/mod_hook_preprocessor.gd b/addons/mod_loader/internal/mod_hook_preprocessor.gd index 6d0ad328..c55fef0c 100644 --- a/addons/mod_loader/internal/mod_hook_preprocessor.gd +++ b/addons/mod_loader/internal/mod_hook_preprocessor.gd @@ -442,7 +442,7 @@ static func get_return_type_string(return_data: Dictionary) -> String: if return_data.has("class_name") and not str(return_data.class_name).is_empty(): type_base = str(return_data.class_name) else: - type_base = type_string(return_data.type) + type_base = get_type_name(return_data.type) var type_hint: String = "" if return_data.hint_string.is_empty() else ("[%s]" % return_data.hint_string) @@ -482,3 +482,90 @@ static func get_hook_check_else_string( "METHOD_ARGS": method_arg_string_names_only } ) + + +# This function was taken from +# https://github.com/godotengine/godot/blob/7e67b496ff7e35f66b88adcbdd5b252d01739cbb/modules/gdscript/tests/scripts/utils.notest.gd#L69 +# It is used instead of type_string because type_string does not exist in Godot 4.1 +static func get_type_name(type: Variant.Type) -> String: + match type: + TYPE_NIL: + return "Nil" # `Nil` in core, `null` in GDScript. + TYPE_BOOL: + return "bool" + TYPE_INT: + return "int" + TYPE_FLOAT: + return "float" + TYPE_STRING: + return "String" + TYPE_VECTOR2: + return "Vector2" + TYPE_VECTOR2I: + return "Vector2i" + TYPE_RECT2: + return "Rect2" + TYPE_RECT2I: + return "Rect2i" + TYPE_VECTOR3: + return "Vector3" + TYPE_VECTOR3I: + return "Vector3i" + TYPE_TRANSFORM2D: + return "Transform2D" + TYPE_VECTOR4: + return "Vector4" + TYPE_VECTOR4I: + return "Vector4i" + TYPE_PLANE: + return "Plane" + TYPE_QUATERNION: + return "Quaternion" + TYPE_AABB: + return "AABB" + TYPE_BASIS: + return "Basis" + TYPE_TRANSFORM3D: + return "Transform3D" + TYPE_PROJECTION: + return "Projection" + TYPE_COLOR: + return "Color" + TYPE_STRING_NAME: + return "StringName" + TYPE_NODE_PATH: + return "NodePath" + TYPE_RID: + return "RID" + TYPE_OBJECT: + return "Object" + TYPE_CALLABLE: + return "Callable" + TYPE_SIGNAL: + return "Signal" + TYPE_DICTIONARY: + return "Dictionary" + TYPE_ARRAY: + return "Array" + TYPE_PACKED_BYTE_ARRAY: + return "PackedByteArray" + TYPE_PACKED_INT32_ARRAY: + return "PackedInt32Array" + TYPE_PACKED_INT64_ARRAY: + return "PackedInt64Array" + TYPE_PACKED_FLOAT32_ARRAY: + return "PackedFloat32Array" + TYPE_PACKED_FLOAT64_ARRAY: + return "PackedFloat64Array" + TYPE_PACKED_STRING_ARRAY: + return "PackedStringArray" + TYPE_PACKED_VECTOR2_ARRAY: + return "PackedVector2Array" + TYPE_PACKED_VECTOR3_ARRAY: + return "PackedVector3Array" + TYPE_PACKED_COLOR_ARRAY: + return "PackedColorArray" + 38: # TYPE_PACKED_VECTOR4_ARRAY + return "PackedVector4Array" + push_error("Argument `type` is invalid. Use `TYPE_*` constants.") + return "" diff --git a/addons/mod_loader/mod_loader.gd b/addons/mod_loader/mod_loader.gd index 73946ab9..e1176ebb 100644 --- a/addons/mod_loader/mod_loader.gd +++ b/addons/mod_loader/mod_loader.gd @@ -127,7 +127,8 @@ func _load_metadata(manifest_dict: Dictionary, zip_path := ""): func _load_mods(mod_data: Dictionary) -> void: var mod_zip_paths: Array[String] = [] - for mod: ModData in mod_data.values(): + for _mod in mod_data.values(): + var mod: ModData = _mod if not mod.is_loadable: continue if not mod.zip_path: diff --git a/addons/mod_loader/options/profiles/production_no_workshop.tres b/addons/mod_loader/options/profiles/production_no_workshop.tres index 12c283de..7b5856c0 100644 --- a/addons/mod_loader/options/profiles/production_no_workshop.tres +++ b/addons/mod_loader/options/profiles/production_no_workshop.tres @@ -1,19 +1,19 @@ -[gd_resource type="Resource" script_class="ModLoaderOptionsProfile" load_steps=2 format=4 uid="uid://bodsw0jyh6rn5"] +[gd_resource type="Resource" script_class="ModLoaderOptionsProfile" load_steps=2 format=3 uid="uid://bodsw0jyh6rn5"] [ext_resource type="Script" path="res://addons/mod_loader/resources/options_profile.gd" id="1"] [resource] script = ExtResource("1") enable_mods = true -locked_mods = Array[String]([]) +locked_mods = [] log_level = 2 -disabled_mods = Array[String]([]) +disabled_mods = [] allow_modloader_autoloads_anywhere = false steam_id = 0 override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" ignore_deprecated_errors = false -ignored_mod_names_in_log = Array[String]([]) +ignored_mod_names_in_log = [] load_from_steam_workshop = false load_from_local = true diff --git a/addons/mod_loader/options/profiles/production_workshop.tres b/addons/mod_loader/options/profiles/production_workshop.tres index 9c2885f9..0b610bcb 100644 --- a/addons/mod_loader/options/profiles/production_workshop.tres +++ b/addons/mod_loader/options/profiles/production_workshop.tres @@ -1,19 +1,19 @@ -[gd_resource type="Resource" script_class="ModLoaderOptionsProfile" load_steps=2 format=4 uid="uid://cg0vv5k4o71rv"] +[gd_resource type="Resource" script_class="ModLoaderOptionsProfile" load_steps=2 format=3 uid="uid://cg0vv5k4o71rv"] [ext_resource type="Script" path="res://addons/mod_loader/resources/options_profile.gd" id="1"] [resource] script = ExtResource("1") enable_mods = true -locked_mods = Array[String]([]) +locked_mods = [] log_level = 2 -disabled_mods = Array[String]([]) +disabled_mods = [] allow_modloader_autoloads_anywhere = false steam_id = 0 override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" ignore_deprecated_errors = false -ignored_mod_names_in_log = Array[String]([]) +ignored_mod_names_in_log = [] load_from_steam_workshop = true load_from_local = true