Downloads.gd 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. tool
  2. extends VBoxContainer
  3. onready var AdMobEditor : Control = find_parent("AdMobEditor")
  4. onready var godot_version : String = "v" + String(Engine.get_version_info().major) + "." + String(Engine.get_version_info().minor) + "." + String(Engine.get_version_info().patch)
  5. var actual_downloading_file : String = ""
  6. var downloaded_plugin_version : String = ""
  7. var version_support : Dictionary
  8. var android_dictionary : Dictionary = {
  9. "version" : ["CURRENT"],
  10. "download_directory" : "res://addons/admob/downloads/android"
  11. } setget set_android_dictionary
  12. var ios_dictionary : Dictionary = {
  13. "version" : ["CURRENT"],
  14. "download_directory" : "res://addons/admob/downloads/ios"
  15. } setget set_ios_dictionary
  16. var current_dir_download_label = "Current Download Directory: %s"
  17. var download_complete_message = "Download of %s completed! \n%s"
  18. func set_android_dictionary(value):
  19. android_dictionary = value
  20. $TabContainer/Android/ChangeDirectoryHBoxContainer/DownloadDirectoryLabel.text = current_dir_download_label % android_dictionary.download_directory
  21. func set_ios_dictionary(value):
  22. ios_dictionary = value
  23. $TabContainer/iOS/ChangeDirectoryHBoxContainer/DownloadDirectoryLabel.text = current_dir_download_label % ios_dictionary.download_directory
  24. func _ready():
  25. $DontHaveConnectionPanelContainer/Label.text %= $VerifyNetworkGithub.server_to_test
  26. if godot_version[godot_version.length()-1] == "0":
  27. godot_version = godot_version.substr(0, godot_version.length()-2)
  28. set_process(false)
  29. set_version_platform_supported("ios")
  30. set_version_platform_supported("android")
  31. $TabContainer/Android/ChangeDirectoryHBoxContainer/DownloadDirectoryLabel.text = current_dir_download_label % android_dictionary.download_directory
  32. $TabContainer/iOS/ChangeDirectoryHBoxContainer/DownloadDirectoryLabel.text = current_dir_download_label % ios_dictionary.download_directory
  33. func set_version_platform_supported(platform):
  34. if platform == "android":
  35. $TabContainer/Android/VersionHBoxContainer/AndroidVersion.clear()
  36. for i in android_dictionary.version:
  37. $TabContainer/Android/VersionHBoxContainer/AndroidVersion.add_item(i)
  38. elif platform == "ios":
  39. $TabContainer/iOS/VersionHBoxContainer/iOSVersion.clear()
  40. for i in ios_dictionary.version:
  41. $TabContainer/iOS/VersionHBoxContainer/iOSVersion.add_item(i)
  42. func _process(delta):
  43. var bodySize = $TabContainer/HTTPRequest.get_body_size()
  44. var downloadedBytes = $TabContainer/HTTPRequest.get_downloaded_bytes()
  45. var percent = int(downloadedBytes*100/bodySize)
  46. $ProgressBar.value = percent
  47. func _on_HTTPRequest_request_completed(result, response_code, headers, body):
  48. if response_code != 200:
  49. $AdviceAcceptDialog.dialog_text = "!!!DOWNLOAD FAILED!!!"
  50. $ProgressBar.value = 0
  51. else:
  52. $AdviceAcceptDialog.dialog_text = download_complete_message % [actual_downloading_file, downloaded_plugin_version]
  53. set_process(false)
  54. $AdviceAcceptDialog.popup_centered()
  55. func _on_DownloadGoogleMobileAdsSdkiOS_pressed():
  56. var file_name = "googlemobileadssdkios.zip"
  57. var plugin_version = version_support.ios
  58. $TabContainer/HTTPRequest.download_file = ios_dictionary.download_directory + "/" + file_name
  59. $TabContainer/HTTPRequest.request("https://github.com/Poing-Studios/godot-admob-ios/releases/download/" + plugin_version + "/" + file_name)
  60. actual_downloading_file = file_name
  61. downloaded_plugin_version = "iOS Plugin Version: " + plugin_version
  62. set_process(true)
  63. func _on_DownloadiOSTemplate_pressed():
  64. var ios_version = $TabContainer/iOS/VersionHBoxContainer/iOSVersion.text
  65. if ios_version == "CURRENT":
  66. ios_version = godot_version
  67. var file_name = "ios-template-" + ios_version + ".zip"
  68. var plugin_version = version_support.ios
  69. $TabContainer/HTTPRequest.download_file = ios_dictionary.download_directory + "/" + file_name
  70. $TabContainer/HTTPRequest.request("https://github.com/Poing-Studios/godot-admob-ios/releases/download/" + plugin_version + "/" + file_name)
  71. actual_downloading_file = file_name
  72. downloaded_plugin_version = "iOS Plugin Version: " + plugin_version
  73. set_process(true)
  74. func _on_DownloadAndroidTemplate_pressed():
  75. var android_version = $TabContainer/Android/VersionHBoxContainer/AndroidVersion.text.to_lower()
  76. if android_version == "current":
  77. android_version = godot_version
  78. var android_target = $TabContainer/Android/TargetHBoxContainer/MenuButton.text.to_lower()
  79. if android_target == "current":
  80. android_target = "mono" if Engine.has_singleton("GodotSharp") else "standard"
  81. var file_name = "android-"+ android_target + "-template-" + android_version + ".zip"
  82. var plugin_version = version_support.android
  83. $TabContainer/HTTPRequest.download_file = android_dictionary.download_directory + "/" + file_name
  84. $TabContainer/HTTPRequest.request("https://github.com/Poing-Studios/godot-admob-android/releases/download/" + plugin_version + "/" + file_name)
  85. actual_downloading_file = file_name
  86. downloaded_plugin_version = "Android Plugin Version: " + plugin_version
  87. set_process(true)
  88. func _on_AndroidChangeDirectoryFileDialog_dir_selected(dir):
  89. self.android_dictionary.download_directory = dir
  90. func _on_AndroidChangeDirectoryButton_pressed():
  91. $TabContainer/Android/ChangeDirectoryHBoxContainer/AndroidChangeDirectoryFileDialog.popup_centered()
  92. func _on_iOSChangeDirectoryFileDialog_dir_selected(dir):
  93. self.ios_dictionary.download_directory = dir
  94. func _on_iOSChangeDirectoryButton_pressed():
  95. $TabContainer/iOS/ChangeDirectoryHBoxContainer/iOSChangeDirectoryFileDialog.popup_centered()
  96. func _on_AndroidOpenDirectoryButton_pressed():
  97. var path_directory = ProjectSettings.globalize_path(android_dictionary.download_directory)
  98. OS.shell_open(str("file://", path_directory))
  99. func _on_iOSOpenDirectoryButton_pressed():
  100. var path_directory = ProjectSettings.globalize_path(ios_dictionary.download_directory)
  101. OS.shell_open(str("file://", path_directory))
  102. func _on_VerifyNetworkGithub_network_status_changed(value : int):
  103. if value == $VerifyNetworkGithub.CONNECTED:
  104. $TabContainer.visible = true
  105. $DontHaveConnectionPanelContainer.visible = false
  106. else:
  107. $TabContainer.visible = false
  108. $DontHaveConnectionPanelContainer.visible = true
  109. func _on_VersionSupportedHTTPRequest_supported_version_changed(value_dictionary : Dictionary):
  110. version_support = value_dictionary
  111. $VersionsAndroidSupportedHTTPRequest.request("https://api.github.com/repos/Poing-Studios/godot-admob-android/releases/tags/"+version_support["android"])
  112. $VersionsiOSSupportedHTTPRequest.request("https://api.github.com/repos/Poing-Studios/godot-admob-ios/releases/tags/"+version_support["ios"])
  113. func get_versions_platform_supported(body):
  114. var json = JSON.parse(body.get_string_from_utf8())
  115. var regex = RegEx.new()
  116. regex.compile("[v](([0-9])+(\\.{0,1}([0-9]))*)+")
  117. var versions_supported : Array
  118. for asset in json.result["assets"]:
  119. var godot_version = asset["name"]
  120. var regex_result = regex.search(godot_version)
  121. if regex_result:
  122. if not versions_supported.has(regex_result.get_string()):
  123. versions_supported.append(regex_result.get_string())
  124. return versions_supported
  125. func _on_VersionsiOSSupportedHTTPRequest_request_completed(result, response_code, headers, body):
  126. ios_dictionary.version.append_array(get_versions_platform_supported(body))
  127. set_version_platform_supported("ios")
  128. func _on_VersionsAndroidSupportedHTTPRequest_request_completed(result, response_code, headers, body):
  129. android_dictionary.version.append_array(get_versions_platform_supported(body))
  130. set_version_platform_supported("android")