75 lines
2.7 KiB
GDScript3
75 lines
2.7 KiB
GDScript3
|
|
@tool
|
||
|
|
extends MarginContainer
|
||
|
|
|
||
|
|
const script_path: String = "res://addons/twitcher/twitch_service.tscn"
|
||
|
|
const autoload_name: String = "Twitch"
|
||
|
|
const setting_key: String = "autoload/%s" % autoload_name
|
||
|
|
const setting_value: String = "*" + script_path
|
||
|
|
|
||
|
|
@onready var autoload_install: Button = %AutoloadInstall
|
||
|
|
@onready var autoload_info: Label = %AutoloadInfo
|
||
|
|
@onready var autoload_description: RichTextLabel = %AutoloadDescription
|
||
|
|
|
||
|
|
|
||
|
|
func _ready() -> void:
|
||
|
|
autoload_description.text = autoload_description.text.format({
|
||
|
|
"autoload_name": autoload_name
|
||
|
|
})
|
||
|
|
autoload_install.pressed.connect(_on_install_autoload_pressed)
|
||
|
|
_update_install_autoload()
|
||
|
|
|
||
|
|
|
||
|
|
func _update_install_autoload() -> void:
|
||
|
|
if ProjectSettings.has_setting(setting_key):
|
||
|
|
autoload_install.text = "Uninstall Autoload"
|
||
|
|
else:
|
||
|
|
autoload_install.text = "Install Autoload"
|
||
|
|
|
||
|
|
|
||
|
|
func _on_install_autoload_pressed() -> void:
|
||
|
|
if ProjectSettings.has_setting(setting_key):
|
||
|
|
_uninstall_autoload()
|
||
|
|
else:
|
||
|
|
_install_autload()
|
||
|
|
_update_install_autoload()
|
||
|
|
|
||
|
|
|
||
|
|
func _uninstall_autoload() -> void:
|
||
|
|
ProjectSettings.clear(setting_key)
|
||
|
|
|
||
|
|
var err = ProjectSettings.save()
|
||
|
|
|
||
|
|
if err == OK:
|
||
|
|
autoload_info.text = "Autoload '%s' uninstalled successfully!\nYou might need to reload the current project for changes to fully apply everywhere in the editor immediately." % autoload_name
|
||
|
|
print("Successfully removed autoload: %s" % autoload_name)
|
||
|
|
else:
|
||
|
|
autoload_info.text = "Failed to save project settings.\nError code: %s" % error_string(err)
|
||
|
|
printerr("Failed to save project settings! Error: ", error_string(err))
|
||
|
|
|
||
|
|
|
||
|
|
func _install_autload() -> void:
|
||
|
|
if not FileAccess.file_exists(script_path):
|
||
|
|
OS.alert("The TwitchService file does not exist at:\n" + script_path, "Error")
|
||
|
|
return
|
||
|
|
|
||
|
|
var setting_key: String = "autoload/%s" % autoload_name
|
||
|
|
var setting_value: String = "*" + script_path
|
||
|
|
if ProjectSettings.has_setting(setting_key):
|
||
|
|
var existing_value = ProjectSettings.get_setting(setting_key)
|
||
|
|
if existing_value == setting_value:
|
||
|
|
autoload_info.text = "Autoload '%s' with the same path is already installed." % autoload_name
|
||
|
|
return
|
||
|
|
else:
|
||
|
|
autoload_info.text = "Autoload '%s' already exists but points to a different path (%s)." % [autoload_name, existing_value]
|
||
|
|
return
|
||
|
|
|
||
|
|
ProjectSettings.set_setting(setting_key, setting_value)
|
||
|
|
var err = ProjectSettings.save()
|
||
|
|
|
||
|
|
if err == OK:
|
||
|
|
autoload_info.text = "Autoload '%s' installed successfully!\nYou might need to reload the current project for changes to fully apply everywhere in the editor immediately." % autoload_name
|
||
|
|
print("Successfully added autoload: %s -> %s" % [autoload_name, script_path])
|
||
|
|
else:
|
||
|
|
autoload_info.text = "Failed to save project settings.\nError code: %s" % error_string(err)
|
||
|
|
printerr("Failed to save project settings! Error: ", error_string(err))
|