online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/sidebarright/OpeningLabel.gd')
| -rw-r--r-- | ui/menus/sidebarright/OpeningLabel.gd | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ui/menus/sidebarright/OpeningLabel.gd b/ui/menus/sidebarright/OpeningLabel.gd new file mode 100644 index 0000000..4b3b0d6 --- /dev/null +++ b/ui/menus/sidebarright/OpeningLabel.gd @@ -0,0 +1,48 @@ +extends Label +class_name OpeningLabel + +var http_request := HTTPRequest.new() + +var url := "https://explorer.lichess.ovh/masters?topGames=0&moves=2&fen=%s" +var current_req := "" + + +func _ready(): + add_child(http_request) + Events.connect("turn_over", self, "update_opening") + Globals.grid.connect("load_pgn", self, "update_opening") + Globals.grid.connect("clear_pgn", self, "update_opening") + Globals.grid.connect("remove_last", self, "update_opening") + http_request.connect("request_completed", self, "_request_completed") + + +func update_opening(_var := null) -> void: + if Utils.internet: + var fen: String = Globals.grid.chess.fen() + if fen != Globals.grid.chess.DEFAULT_POSITION && fen != current_req: + if current_req: + http_request.cancel_request() + current_req = fen + var u = url % fen.replace(" ", "_").http_escape() + Log.net(["REQUEST: get opening with url:", u]) + http_request.request(u) + else: + set_text("") + + +func _request_completed(result, _response_code, _headers, byte_body): + set_text("") # empty text and hide self + current_req = "" + if result != OK: # technically REQUEST_SUCCESS but i cant find it + return + var body = byte_body.get_string_from_utf8() + Log.net("RECIEVED:" + body) + var response = parse_json(body) + + if response.opening != null and "name" in response.opening: + set_text(" %s" % response.opening.name) + + +func set_text(_text := ""): + visible = _text != "" + text = _text.strip_edges() |