From 8b91d99b963a04f7c920675b81c770b023d7edcd Mon Sep 17 00:00:00 2001 From: Alexejhero <32238504+Alexejhero@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:19:35 +0200 Subject: [PATCH 1/6] Remove type hint for for...in variable --- addons/mod_loader/internal/hooks.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mod_loader/internal/hooks.gd b/addons/mod_loader/internal/hooks.gd index bad8420e..4f46c0f0 100644 --- a/addons/mod_loader/internal/hooks.gd +++ b/addons/mod_loader/internal/hooks.gd @@ -26,7 +26,7 @@ static func call_hooks(self_object: Object, args: Array, hook_hash: int) -> void if not hooks: return - for mod_func: Callable in hooks: + for mod_func in hooks: mod_func.callv([self_object] + args) From 4200f7ba32f3de5debeaf421faa1ad11685a0a60 Mon Sep 17 00:00:00 2001 From: Alexejhero <32238504+Alexejhero@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:24:42 +0200 Subject: [PATCH 2/6] Remove another typed for...in variable --- addons/mod_loader/mod_loader.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mod_loader/mod_loader.gd b/addons/mod_loader/mod_loader.gd index 73946ab9..53831463 100644 --- a/addons/mod_loader/mod_loader.gd +++ b/addons/mod_loader/mod_loader.gd @@ -127,7 +127,7 @@ 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(): if not mod.is_loadable: continue if not mod.zip_path: From aff755a2015da722bda1e54806d6b803d37ced3b Mon Sep 17 00:00:00 2001 From: Alexejhero <32238504+Alexejhero@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:25:27 +0200 Subject: [PATCH 3/6] Fix production_no_workshop.tres format --- .../options/profiles/production_no_workshop.tres | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 From dbecbe49384e0dd6d7b2b3084c887d1bebbb9f0d Mon Sep 17 00:00:00 2001 From: Alexejhero <32238504+Alexejhero@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:25:51 +0200 Subject: [PATCH 4/6] Fix production_workshop.tres format --- .../mod_loader/options/profiles/production_workshop.tres | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 From 2596a70e75dd3bd92689c0c697939234503cb62a Mon Sep 17 00:00:00 2001 From: Alexejhero <32238504+Alexejhero@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:48:53 +0200 Subject: [PATCH 5/6] Use custom function instead of type_string --- .../internal/mod_hook_preprocessor.gd | 88 ++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/addons/mod_loader/internal/mod_hook_preprocessor.gd b/addons/mod_loader/internal/mod_hook_preprocessor.gd index 520b3e21..7655756e 100644 --- a/addons/mod_loader/internal/mod_hook_preprocessor.gd +++ b/addons/mod_loader/internal/mod_hook_preprocessor.gd @@ -363,7 +363,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) @@ -385,3 +385,89 @@ static func collect_getters_and_setters(text: String, regex_getter_setter: RegEx result[mat.get_string(4)] = true return result + + +# 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 "" From 8db5051672989b68056f390cbc09a1e9ea6b4084 Mon Sep 17 00:00:00 2001 From: KANAjetzt <41547570+KANAjetzt@users.noreply.github.com> Date: Sun, 29 Dec 2024 11:19:20 +0100 Subject: [PATCH 6/6] keep type in `load_mods()` --- addons/mod_loader/mod_loader.gd | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/mod_loader/mod_loader.gd b/addons/mod_loader/mod_loader.gd index 53831463..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 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: