launcher.gd 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. extends Node
  2. var currentversion = 00
  3. var status = 0
  4. var downloaded_bytes = 0
  5. var body_size = 0
  6. var dowload = true
  7. export var versionfile = 'https://git.galodev.net/galo/ghosthandupdate2/raw/master/version.json'
  8. export var pckfile = 'https://git.galodev.net/galo/ghosthandupdate2/raw/master/Ghost%20Hand.pck'
  9. func _ready():
  10. if ResourceLoader.exists('user://patches/currentversion.tres'):
  11. var loader = load("user://patches/currentversion.tres")
  12. currentversion = loader.data[0]['version']
  13. print(currentversion)
  14. var directory = Directory.new()
  15. if directory.dir_exists("user://patches"):
  16. pass
  17. else:
  18. directory.make_dir("user://patches")
  19. $HTTPRequest2.request(versionfile)
  20. print('gen bat file')
  21. var save_game = File.new()
  22. save_game.open("res://run.bat", File.WRITE)
  23. save_game.store_line('pushd %~dp0')
  24. save_game.store_line('gamelauncher.exe --main-pack GhostHand.pck')
  25. save_game.store_line('popd')
  26. save_game.close()
  27. func dowloadupdate():
  28. print('dowloading patch')
  29. $HTTPRequest.set_download_file('res://GhostHand.pck')
  30. $HTTPRequest.request(pckfile)
  31. func _on_HTTPRequest_request_completed(result, response_code, headers, body):
  32. if response_code == 200:
  33. set_process(false)
  34. $Label.text = 'your dowload just finished'
  35. $Button.set_disabled(false)
  36. $ProgressBar.value = 100
  37. else:
  38. server_connect_fail()
  39. func server_connect_fail():
  40. $Label.text = 'server connection failure!'
  41. print('failed to connect to server')
  42. func _on_HTTPRequest2_request_completed(result, response_code, headers, body):
  43. if response_code == 200:
  44. var data = JSON.parse(body.get_string_from_ascii())
  45. var dataprocess = data.result
  46. print(body.get_string_from_ascii())
  47. print(dataprocess)
  48. body_size = dataprocess['size']
  49. var dict = Directory.new()
  50. if dataprocess['version'] > currentversion:
  51. dowloadupdate()
  52. dowload = false
  53. var data2 = load("res://dataresource.gd").new()
  54. data2.data = [dataprocess]
  55. ResourceSaver.save('user://patches/currentversion.tres', data2)
  56. else:
  57. print('no version to dowload')
  58. $Label.text = 'you are on the most recent version!!!'
  59. $Button.set_disabled(false)
  60. else:
  61. server_connect_fail()
  62. $Label.text = 'server connection failure!'
  63. pass # Replace with function body.
  64. func force_update():
  65. $Button.set_disabled(true)
  66. dowloadupdate()
  67. dowload = false
  68. var buffer = 0.0
  69. var buffertext = ''
  70. func _process(delta):
  71. status = $HTTPRequest.get_http_client_status()
  72. downloaded_bytes = $HTTPRequest.get_downloaded_bytes()
  73. if not dowload:
  74. $Label.text = 'dowloading '+String.humanize_size(downloaded_bytes) +' of '+String.humanize_size(body_size)
  75. if (downloaded_bytes-buffer)/delta != 0:
  76. buffertext = '\n' + ' at speed ' + String.humanize_size(float(downloaded_bytes-buffer)/delta) + '/s'
  77. $Label.text += buffertext
  78. buffer = downloaded_bytes
  79. $ProgressBar.value = downloaded_bytes*100/body_size