TowerGameProto/examples_dd3d/demo_web_docs_version_selec...

43 lines
1.2 KiB
GDScript

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)