From f1436d64bc3aaa82a4ebdb2ae4dcd2d2fe9627b7 Mon Sep 17 00:00:00 2001 From: Rekku Date: Wed, 25 Sep 2024 13:15:40 +0100 Subject: [PATCH] CHEEVOS HELL --- .../RetroAchievements_logo_square_color.png | Bin 0 -> 12655 bytes ...Achievements_logo_square_color.png.import} | 8 +- tools/configurator/main.tscn | 73 ++++++++++----- tools/configurator/project.godot | 2 - .../res/pixel_ui_theme/RetroDECKTheme.tres | 84 +++++++++--------- tools/configurator/scripts/Rekku.gd | 9 +- tools/configurator/scripts/TabContainer.gd | 8 +- tools/configurator/scripts/TabSettings.gd | 53 ++++++----- tools/configurator/scripts/class_functions.gd | 10 ++- tools/configurator/scripts/data_handler.gd | 2 - tools/configurator/scripts/main.gd | 14 +-- tools/configurator/tilemap_packed.png | Bin 15664 -> 0 bytes 12 files changed, 151 insertions(+), 112 deletions(-) create mode 100644 tools/configurator/assets/icons/home_made/RetroAchievements_logo_square_color.png rename tools/configurator/{tilemap_packed.png.import => assets/icons/home_made/RetroAchievements_logo_square_color.png.import} (61%) delete mode 100644 tools/configurator/tilemap_packed.png diff --git a/tools/configurator/assets/icons/home_made/RetroAchievements_logo_square_color.png b/tools/configurator/assets/icons/home_made/RetroAchievements_logo_square_color.png new file mode 100644 index 0000000000000000000000000000000000000000..a10c75a92efb8b38d915e9e9d3661b1ad32b4b7a GIT binary patch literal 12655 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 void: %sound_button.pressed.connect(class_functions.run_function.bind(%sound_button, "sound_effects")) %update_notification_button.pressed.connect(class_functions.run_function.bind(%update_notification_button, "update_check")) %volume_effects_slider.drag_ended.connect(class_functions.slider_function.bind(%volume_effects_slider)) - #%cheevos_button.pressed.connect(cheevos.bind(%cheevos_button)) + %cheevos_connect_button.pressed.connect(cheevos.bind(%cheevos_connect_button)) %cheevos_button.button_down.connect(class_functions._do_action.bind(%cheevos_progress, %cheevos_button, class_functions.cheevos_state)) %cheevos_button.button_up.connect(class_functions._on_button_released.bind(%cheevos_progress)) %cheevos_button.pressed.connect(class_functions.run_function.bind(%cheevos_button, "cheevos")) @@ -26,21 +20,34 @@ func _connect_signals() -> void: %reset_all_emulators_button.button_down.connect(class_functions._do_action.bind(%reset_all_emulators_progress, %reset_all_emulators_button, "mixed")) %reset_all_emulators_button.button_up.connect(class_functions._on_button_released.bind(%reset_all_emulators_progress)) -func _on_request_completed(_result, response_code, _headers, body): +func _on_request_completed(_result, response_code, _headers, body) -> Array: var response_text = JSON.parse_string(body.get_string_from_utf8()) - print("Response Code: ", response_code) - print("Response Body: ", response_text) - print("Response Token: ", response_text.Token) - #print (_result,_headers) - cheevos_token = response_text.Token + var cheevos_token: String = "" + #print("Response Code: ", response_code) + #print("Response Body: ", response_text) + #print ("Response Success: ", response_text.Success) + #print("Response Token: ", response_text.Token) + if response_text.Success: + cheevos_token = response_text.Token if response_code == 200: - print("Request successful!") - else: - print("Request failed with code: ", response_code) + responses = [response_code, response_text.Success, cheevos_token] + return responses + return responses func cheevos(button: Button): - set_process_input(false) - $"../..".visible=false - await class_functions.run_thread_command(class_functions.wrapper_command,["change_preset_dialog", "cheevos"], false) - set_process_input(true) - $"../..".visible=true + #9LJX7**mie*9e4 + class_functions.logger("d","Attempting RA connection") + var ra_url = "https://retroachievements.org/dorequest.php?r=login&u="+%cheevos_username.text+"&p="+%cheevos_password.text + button.disabled = true + %cheevos_label.text = "ATTEMPTING LOGIN" + var http_request = HTTPRequest.new() + add_child(http_request) + http_request.request_completed.connect(self._on_request_completed) + http_request.request(ra_url) + responses = await wait_to_complete(http_request) + %cheevos_label.text = "LOGIN SUCCESS = %s" % str(responses[1]).to_upper() + button.disabled = false + +func wait_to_complete(http_request: HTTPRequest) -> Array: + await http_request.request_completed + return responses diff --git a/tools/configurator/scripts/class_functions.gd b/tools/configurator/scripts/class_functions.gd index a6604b79..e0114a09 100644 --- a/tools/configurator/scripts/class_functions.gd +++ b/tools/configurator/scripts/class_functions.gd @@ -335,8 +335,14 @@ func update_global(button: Button, preset: String, state: bool) -> void: if cheevos_state != "mixed": cheevos_state = str(state) result = data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state)) - change_global(result, "build_preset_config", button, quick_rewind_state) - + change_global(result, "build_preset_config", button, cheevos_state) + "cheevos_hardcore_button": + if cheevos_hardcore_state != "mixed": + print (cheevos_hardcore_state) + cheevos_hardcore_state = str(state) + result = data_handler.change_all_cfg_values(config_file_path, config_section, preset, str(state)) + change_global(result, "build_preset_config", button, cheevos_hardcore_state) + func change_global(parameters: Array, preset: String, button: Button, state: String) -> void: #print (parameters) match parameters[1]: diff --git a/tools/configurator/scripts/data_handler.gd b/tools/configurator/scripts/data_handler.gd index 499f3b90..6ee06acb 100644 --- a/tools/configurator/scripts/data_handler.gd +++ b/tools/configurator/scripts/data_handler.gd @@ -34,9 +34,7 @@ func load_base_data() -> AppData: var emulator = Emulator.new() emulator.name = emulator_data["name"] emulator.description = emulator_data["description"] - print (emulator.name) emulator.url = emulator_data["url"] - print (emulator.name +" : " +emulator.url) #emulator.system = emulator_data["system"] emulator.launch = emulator_data["launch"] if emulator_data.has("properties"): diff --git a/tools/configurator/scripts/main.gd b/tools/configurator/scripts/main.gd index f03357b9..1f3bb4e5 100644 --- a/tools/configurator/scripts/main.gd +++ b/tools/configurator/scripts/main.gd @@ -31,8 +31,8 @@ func _ready(): for n: Control in children: #iterate the children if (n.focus_mode == FOCUS_ALL): n.mouse_entered.connect(_on_control_mouse_entered.bind(n)) #grab focus on mouse hover - if (n.is_class("BaseButton") and n.disabled == true): #if button-like control and disabled - n.self_modulate.a = 0.5 #make it half transparent + #if (n.is_class("BaseButton") and n.disabled == true): #if button-like control and disabled + #n.self_modulate.a = 0.5 #make it half transparent #combine_tkeys() change_font(class_functions.font_select) @@ -197,12 +197,12 @@ func _set_up_globals(state: Array) -> void: mixed_mode(%widescreen_button, class_functions.widescreen_state) mixed_mode(%quick_rewind_button, class_functions.quick_rewind_state) mixed_mode(%cheevos_button, class_functions.cheevos_state) - if class_functions.cheevos_state == "true": - %cheevos_login_container.visible = true - elif class_functions.cheevos_state == "false": - %cheevos_login_container.visible = false mixed_mode(%cheevos_hardcore_button, class_functions.cheevos_hardcore_state) - + if class_functions.cheevos_state == "true": + %cheevos_enabled_container.visible = true + elif class_functions.cheevos_state == "false": + %cheevos_enabled_container.visible = false + func mixed_mode (button: Button, state: String) -> void: match [class_functions.button_list]: [class_functions.button_list]: diff --git a/tools/configurator/tilemap_packed.png b/tools/configurator/tilemap_packed.png deleted file mode 100644 index c469ed1083a641fb2cc2f50845c1596b5f845ff3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15664 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 UzAr@i0GUch^Oi=A+C%LB0af40&j0`b