MCPcopy Create free account
hub / github.com/GDRETools/gdsdecomp / reload

Method reload

compat/fake_gdscript.cpp:138–185  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

136}
137
138Error FakeGDScript::reload(bool p_keep_state) {
139 error_message.clear();
140 auto revision = override_bytecode_revision != 0 ? override_bytecode_revision : GDRESettings::get_singleton()->get_bytecode_revision();
141 FAKEGDSCRIPT_FAIL_COND_V_MSG(!revision, ERR_UNCONFIGURED, "No bytecode revision set");
142 loaded = false;
143
144 decomp = GDScriptDecomp::create_decomp_for_commit(revision);
145 FAKEGDSCRIPT_FAIL_COND_V_MSG(decomp.is_null(), ERR_FILE_UNRECOGNIZED, "Unknown version, failed to decompile");
146 ver_major = decomp->get_engine_ver_major();
147
148 Error err = OK;
149 if (is_binary) {
150 err = decomp->decompile_buffer(binary_buffer);
151 if (err) {
152 error_message = "Error decompiling code: " + decomp->get_error_message();
153 ERR_FAIL_V_MSG(err, "Error decompiling code " + script_path + ": " + decomp->get_error_message());
154 }
155 source = decomp->get_script_text();
156 } else {
157 binary_buffer = decomp->compile_code_string(source);
158 if (binary_buffer.size() == 0) {
159 error_message = "Error compiling code: " + decomp->get_error_message();
160 ERR_FAIL_V_MSG(ERR_PARSE_ERROR, "Error compiling code " + script_path + ": " + decomp->get_error_message());
161 }
162 }
163 err = decomp->get_script_state(binary_buffer, script_state);
164 FAKEGDSCRIPT_FAIL_COND_V_MSG(err != OK, err, "Error loading script state");
165 loaded = true;
166
167 err = parse_script();
168 ERR_FAIL_COND_V_MSG(err, err, decomp->get_error_message());
169
170 if (GDRESettings::get_singleton()->is_pack_loaded()) {
171 ensure_base_and_local_name();
172 } else {
173 String base_type_str = local_base_type.get_data();
174 // GDScript 1.x allowed paths to be used with the "extends" keyword
175 if (base_type_str.has_extension("gd")) {
176 if (base_type_str.is_relative_path()) {
177 base_type_str = script_path.get_base_dir().path_join(base_type_str);
178 local_base_type = base_type_str;
179 }
180 }
181 }
182
183 valid = true;
184 return OK;
185}
186
187#ifdef TOOLS_ENABLED
188StringName FakeGDScript::get_doc_class_name() const {

Callers

nothing calls this directly

Calls 11

get_bytecode_revisionMethod · 0.80
decompile_bufferMethod · 0.80
get_script_textMethod · 0.80
compile_code_stringMethod · 0.80
get_script_stateMethod · 0.80
is_pack_loadedMethod · 0.80
clearMethod · 0.45
get_engine_ver_majorMethod · 0.45
get_error_messageMethod · 0.45
sizeMethod · 0.45
get_dataMethod · 0.45

Tested by

no test coverage detected