43 lines
1.2 KiB
GDScript3
43 lines
1.2 KiB
GDScript3
|
extends HBoxContainer
|
||
|
|
||
|
var _on_versions_loaded_callback = null
|
||
|
@onready var btn: OptionButton = $OptionButton
|
||
|
|
||
|
func _enter_tree():
|
||
|
hide()
|
||
|
|
||
|
|
||
|
func _ready():
|
||
|
if OS.has_feature('web'):
|
||
|
_on_versions_loaded_callback = JavaScriptBridge.create_callback(_on_versions_loaded)
|
||
|
var versions_callbacks: JavaScriptObject = JavaScriptBridge.get_interface("versions_callbacks")
|
||
|
versions_callbacks.loaded = _on_versions_loaded_callback
|
||
|
|
||
|
JavaScriptBridge.eval("loadVersions()")
|
||
|
|
||
|
|
||
|
func _on_versions_loaded(args: Array) -> void:
|
||
|
if (args.size() == 0):
|
||
|
return
|
||
|
|
||
|
var current_version: String = args[0]
|
||
|
|
||
|
var versions_str: String = JavaScriptBridge.eval("versions_callbacks.versions;")
|
||
|
var version_urls_str: String = JavaScriptBridge.eval("versions_callbacks.version_urls;")
|
||
|
var versions: PackedStringArray = versions_str.split(";", false)
|
||
|
var version_urls: PackedStringArray = version_urls_str.split(";", false)
|
||
|
|
||
|
if versions:
|
||
|
show()
|
||
|
btn.clear()
|
||
|
btn.item_selected.connect(func(idx):
|
||
|
# move to another version
|
||
|
JavaScriptBridge.eval("window.location.href = \"%s\"" % version_urls[idx])
|
||
|
)
|
||
|
|
||
|
for i in range(versions.size()):
|
||
|
btn.add_item(versions[i], i)
|
||
|
|
||
|
if versions[i] == current_version:
|
||
|
btn.select(i)
|