launcher.gd 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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://galodev.net/download/version.txt'
  8. export var pckfile = 'https://galodev.net/download/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. dowload = true
  38. else:
  39. server_connect_fail()
  40. func server_connect_fail():
  41. $Label.text = 'server connection failure!'
  42. print('failed to connect to server')
  43. func _on_HTTPRequest2_request_completed(result, response_code, headers, body):
  44. if response_code == 200:
  45. var data = JSON.parse(body.get_string_from_ascii())
  46. var dataprocess = data.result
  47. print(body.get_string_from_ascii())
  48. print(dataprocess)
  49. body_size = dataprocess['size']
  50. $RichTextLabel.text = dataprocess['changelog']
  51. var dict = Directory.new()
  52. if dataprocess['version'] > currentversion:
  53. dowloadupdate()
  54. dowload = false
  55. var data2 = load("res://dataresource.gd").new()
  56. data2.data = [dataprocess]
  57. ResourceSaver.save('user://patches/currentversion.tres', data2)
  58. else:
  59. print('no version to dowload')
  60. $Label.text = 'you are on the most recent version!!!'
  61. $Button.set_disabled(false)
  62. else:
  63. server_connect_fail()
  64. $Label.text = 'server connection failure!'
  65. pass # Replace with function body.
  66. func force_update():
  67. $Button.set_disabled(true)
  68. dowloadupdate()
  69. dowload = false
  70. var buffer = 0.0
  71. var buffertext = ''
  72. var bufferdowloadspeeds = []
  73. func _physics_process(delta):
  74. status = $HTTPRequest.get_http_client_status()
  75. downloaded_bytes = $HTTPRequest.get_downloaded_bytes()
  76. if not dowload:
  77. $Label.text = 'dowloading '+String.humanize_size(downloaded_bytes) +' of '+String.humanize_size(body_size)
  78. bufferdowloadspeeds.append(float(downloaded_bytes-buffer))
  79. var sum = 0
  80. if bufferdowloadspeeds.size() > 1000:
  81. bufferdowloadspeeds.remove(0)
  82. for i in bufferdowloadspeeds:
  83. sum += i
  84. buffertext = '\n' + ' at speed ' + String.humanize_size(sum/ bufferdowloadspeeds.size()/delta) + '/s'
  85. $Label.text += buffertext
  86. buffer = downloaded_bytes
  87. $ProgressBar.value = downloaded_bytes*100/body_size