extends HTTPRequest var is_update_payload = false var save_to var time = 0 export var domain = "http://ipv4.cosinegaming.com" func _ready(): connect("request_completed", self, "_request_completed") # Check if we need an update request(domain + "/static/vanagloria/version.json", [], false) set_process(true) func _request_completed(result, response_code, headers, body): if result != RESULT_SUCCESS: print("ERROR: COULD NOT UPDATE. RESULT #" + str(result)) completed() return if not is_update_payload: # Just checking if we need an update var server = JSON.parse(body.get_string_from_utf8()).result # 0.0.0 -> Update-shell application, needs more resources if server.version == util.version and util.version != "0.0.0": print("Game up-to-date! Launching") completed() else: is_update_payload = true save_to = server.save_location use_threads = true print("Need to update! Downloading " + server.download_path) request(domain + server.download_path) else: print("Update recieved. Saving to " + save_to) var file = File.new() file.open(save_to, File.WRITE) file.store_buffer(body) file.close() restart() func _process(delta): time += delta var fake_progress = 1 - (0.8 / time) # var progress = get_downloaded_bytes() / get_body_size() var progress = fake_progress get_node("../ProgressBar").value = 100*progress func restart(): # Pass on args to new instance, then quit var output = [] OS.execute("./vanagloria", [], false, output) # Mirror just runs godot again get_tree().quit() func completed(): get_tree().change_scene("res://scenes/menu.tscn")