1
Fork 0
mirror of https://github.com/Steffo99/pineapple-surf.git synced 2024-11-25 09:14:18 +00:00
pineapple-surf/menu/Menu.gd

81 lines
2.2 KiB
GDScript3
Raw Normal View History

2023-01-07 11:03:21 +00:00
extends Control
signal play_pressed()
2023-01-09 16:43:16 +00:00
var scores_downloaded := false
var scores := [] as Array[Array]
2023-01-09 16:59:08 +00:00
var score_scene := preload("res://menu/score.tscn")
2023-01-09 16:43:16 +00:00
var is_uploading := false
func _ready() -> void:
if Singletons.should_upload:
# do request...
_upload_score()
_fetch_scores()
func _upload_score():
Singletons.should_upload = false
2023-01-09 16:43:16 +00:00
2023-01-09 20:13:25 +00:00
var url = "https://arcade.steffo.eu/score/?board=ld52&player=%s" % Singletons.username
2023-01-09 16:43:16 +00:00
var httpreq = HTTPRequest.new()
add_child(httpreq)
httpreq.connect("request_completed", func(result, response_code, headers, body):
var json = JSON.parse_string(body.get_string_from_utf8())
# { score, rank }
print(json)
2023-01-09 16:43:16 +00:00
self.is_uploading = false
_fetch_scores(true)
httpreq.queue_free()
)
self.is_uploading = true
httpreq.request(url, [
"Content-Type: application/json",
"Accept: application/json",
2023-01-09 20:13:25 +00:00
"Authorization: Bearer pineapples-everywhere"
2023-01-09 16:43:16 +00:00
], true, HTTPClient.METHOD_PUT, str(Singletons.time))
_fetch_scores(true)
2023-01-09 16:43:16 +00:00
func _fetch_scores(open_after: bool = false):
2023-01-09 20:13:25 +00:00
const url = "https://arcade.steffo.eu/board/?board=ld52&offset=0&size=50"
2023-01-09 16:43:16 +00:00
var httpreq = HTTPRequest.new()
add_child(httpreq)
httpreq.connect("request_completed", func(result, response_code, headers, body):
var json = JSON.parse_string(body.get_string_from_utf8())
self.scores = (json as Array).map(func(element): return [element.name, element.score])
2023-01-09 16:59:08 +00:00
for child in $ScoreboardContainer/Panel/VBoxContainer/ScrollContainer/ScoresVBox.get_children():
2023-01-09 16:59:08 +00:00
child.queue_free()
for score in self.scores:
var score_sc = score_scene.instantiate()
score_sc.get_node("HBoxContainer/Name").text = score[0]
score_sc.get_node("HBoxContainer/Score").text = "%0.3f s" % score[1]
$ScoreboardContainer/Panel/VBoxContainer/ScrollContainer/ScoresVBox.add_child(score_sc)
2023-01-09 16:59:08 +00:00
2023-01-09 16:43:16 +00:00
self.scores_downloaded = true
%ScoresButton.disabled = false
print(self.scores)
2023-01-09 16:59:08 +00:00
if open_after:
$ScoreboardContainer.show_scores()
2023-01-09 16:43:16 +00:00
httpreq.queue_free()
)
httpreq.request(url)
2023-01-07 11:03:21 +00:00
func play():
print("Player ", Singletons.username, " started playing!")
2023-01-07 11:03:21 +00:00
emit_signal("play_pressed")
2023-01-09 14:15:59 +00:00
func _on_name_input_text_changed():
2023-01-09 14:15:59 +00:00
Singletons.username = $Content/Inputs/NameInput.text
2023-01-09 16:43:16 +00:00
%PlayButton.disabled = false